Научная статья на тему 'Облачные технологии "умных городов"'

Облачные технологии "умных городов" Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
232
42
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
КОНТЕЙНЕРИЗАЦИЯ / ВИРТУАЛИЗАЦИЯ / УМНЫЙ ГОРОД / ИНТЕРНЕТ ВЕЩЕЙ / LXC / DOCKER / КЛИЕНТ-СЕРВЕРНАЯ АРХИТЕКТУРА / C++ / PYTHON / ORM

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Соловьев Владимир Николаевич, Прокофьев Андрей Викторович, Чёсов Роман Геннадьевич, Хламов Максим Анатольевич

В данной работе описывается технология контейнеризации на основе LXC. В качестве контейнеризируемой архитектуры использовался многоуровневое клиент-серверное приложение, состоящие из следующих компонент: сервер баз данных, подсистема кэширования, сервер приложений, сервер обмена сообщениями, web-адаптер обеспечивающий взаимодействие с web сервером, web сервер, кросс платформенный AJAX клиент. Ключевым элементом многоуровневой клиент-серверной архитектуры является сервер приложений, который реализует следующие функции авторизация и разграничение прав для пользователей и подключаемых устройств, обработка запросов, логирование всех действий пользователей и устройств, управление кэшем данных, управление временем жизни сессий, управление внешними устройствами. Сервер приложений обладает Python API и ORM для создания прикладной логики системы. Многоуровневая клиент-серверная архитектура была использована для создания единичного узла облачной инфраструктуры умного города. Слои контейнеризации, изоляции и слои управления контейнерами были реализованы на языке C++. Разработанная архитектура контейнеризации позволила реализовать простое управление обновлением и масштабированием облака.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Соловьев Владимир Николаевич, Прокофьев Андрей Викторович, Чёсов Роман Геннадьевич, Хламов Максим Анатольевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Облачные технологии "умных городов"»

Облачные технологии «умных городов»

ы

а

s

«

а б

Соловьев Владимир Николаевич,

ведущий разработчик, ООО «Флексби Солюшнс» Прокофьев Андрей Викторович, генеральный директор, ООО «Флексби Солюшнс» Чёсов Роман Геннадьевич,

канд. физ.-мат. наук, заместитель генерального директора, ООО

«Флексби Солюшнс»

Хламов Максим Анатольевич,

аспирант, Московский физико-технический институт (Государственный Университет),

В данной работе описывается технология контейнеризации на основе LXC. В качестве контейнеризируемой архитектуры использовался многоуровневое клиент-серверное приложение, состоящие из следующих компонент: сервер баз данных, подсистема кэширования, сервер приложений, сервер обмена сообщениями, web-адаптер обеспечивающий взаимодействие с web сервером, web сервер, кросс платформенный AJAX клиент. Ключевым элементом многоуровневой клиент-серверной архитектуры является сервер приложений, который реализует следующие функции - авторизация и разграничение прав для пользователей и подключаемых устройств, обработка запросов, логирование всех действий пользователей и устройств, управление кэшем данных, управление временем жизни сессий, управление внешними устройствами. Сервер приложений обладает Python API и ORM для создания прикладной логики системы. Многоуровневая клиент-серверная архитектура была использована для создания единичного узла облачной инфраструктуры умного города. Слои контейнеризации, изоляции и слои управления контейнерами были реализованы на языке C++. Разработанная архитектура контейнеризации позволила реализовать простое управление обновлением и масштабированием облака.

Ключевые слова: контейнеризация, виртуализация, умный город, интернет вещей, LXC, Docker, клиент-серверная архитектура, C++, Python, ORM

Работа выполнена при поддержке Министерства образования и науки РФ (номер работы ПРМЕР!57914Х0069).

Введение

В настоящее время концепция «умных городов» (SMART Cities) привлекает к себе все больше и больше внимания. Она заключается в использовании современных достижений в области телекоммуникаций, программного обеспечения, электроники, робототехники для создания совершенно новой высокотехнологичной урбанизированной среды обитания человека с минимальными потреблениями ресурсов, оптимальным распределением трафика, эффективным трудом, инновационными сервисами для жителей [1,2,3]. Умный город состоит из умных устройств и умных людей, которые соединяются в единую информационно-коммуникационную сеть, позволяющую контролировать как инженерные системы, так и процессы, которые выполняет человек в своей повседневной жизни [5]. Человек и компьютер, а точнее их множество, стремящееся к бесконечности, умных устройств и программного обеспечения становятся единым организмом, которые не могут существовать друг без друга. Ключевыми элементами умного города являются устройства «интернета вещей» - IoT (сенсоры, датчики, приводы, шлюзы, приложения, смартфоны, сервера, виртуальные сервера, персональные компьютеры, различные носимые устройства и т.д.). Такое разнообразие и количество устройств, пользователей и сервисов накладывают определенные требования к вычислительной инфраструктуре, которая поддерживает жизнеспособность умного города, посредством непрерывного информационного взаимодействия между устройствами и человеком [6,7]. Для достижения полного потенциала использования «интернета вещей» не достаточно только подключить интеллектуальные устройства к сети, их необходимо подключить к сервисам управления интеллектуальными устройствами. Сервисы управления должны уметь обнаруживать, предоставлять доступ, управлять и соединять с другими устройствами. Инфраструктура управления требует использования архитектурных подходов в балансировке и использования промежуточных слоев обмена сообщениями для обеспечения взаимодействия между устройствами и центральной системой (системами) управления [8]. По мнению многих ученых, исследователей и разработчиков технологии облачной эластичной инфраструктуры

должны стать ядром управления «умными городами» и «интернетом вещей» [9]. В настоящее время наблюдается серьёзный интерес к технологиям контейнеризации приложений, таким как LXC [10] и Docker [11]. По результатам исследований использование контейнеризации позволяет сократить время разворачивания приложений на 54%, уменьшить трудозатраты на разворачивание приложений на 40% и снизить стоимость разворачивания приложений на 30% [12].

1. Методика

Технически «умные города» состоят из нескольких слоев: слой аппаратного обеспечения (датчики, приводы, умные устройства, энергетические системы, телекоммуникационное оборудования), слой обеспечения транспорта и управления, слой приложений, которые обеспечивают обработку потоков информации, использование данных геолокации, обновления устройств, взаимодействия с человеком и т.п.

В данной работе будет рассмотрен подход к созданию контейнеризированной облачной инфраструктуры слоя приложений для интеграции и управления «интернетом вещей» и людей в умном городе. Рассматриваемая контейнеризированная архитектура использует стандартные протоколы взаимодействия с внешними системами такие как HTTP, JSON. Слой взаимодействия рассматриваемой архитектуры использует плагинный подход и может легко расширятся для взаимодействия с различными внешними устройствами с целью создания хабов для управления «интернетом вещей». Одним из подходов к построению облачной инфраструктуры являются подходы и технологии, использующие технологии контейнеризации, такие как LXC [10] и Docker [11]. Идея контейнеризации приложений не является новой, она появилась еще в unix системах, например, в FreeBSD в виде jail [13], в Solaris в виде Solaris Containers [14], но они не получили такого широко распространения как технологии контейнеризации на основе LXC и Docker. Разработка и использование контейнеризации в настоящее время является одним из драйверов инфраструктуры публичных, частных облаков и облаков для управления умными городами. В то время как виртуализация с помощью технологий гипервизора (например, Microsoft Hyper-V [15], XEN [16], ESXi Hypervisor [17]) реализует слой абстракции уровня аппаратного обеспечения, технология контейнеризации позволяет изолировать вызовы операционной системы и запускать несколько изолированных контейнеров приложений на одном ядре операционной системы, без эмуляции аппаратного слоя (см. рис. 1). Такой подход позволяет существенно экономить вычислительные ресурсы [18, 19].

Рис. 1. Виртуализация и контейнеризация.

Целью данной работы являлось создание слоя управления контейнерами приложений на базе LXC и Docker контейнеров, которые изолируют многоуровневую клиент-серверную архитектуру, используемую для создания слоя приложений и интеграции для умного города.

2. Архитектура контейнеризированного облака умных городов

Многоуровневая клиент-серверная архитектура

Многоуровневая клиент-серверная архитектура для простоты управления, масштабирования и поддержки изменений была разделена на несколько функциональных слоев (рис. 2).

interaction AJAX web request

layer client server queue Ф >

J

business logic layer API business logic core ORM .0 ra

Ol

data layer file storage 1 data base data cache external system

Рис. 2. Слои многоуровневой клиент-серверной архитектуры

Слой представления охватывает все, что имеет отношение к общению пользователя с системой.

Слой данных - это часть системы, которая обеспечивает хранение данных и предоставление данных (для большинства бизнес и аналитических систем таким источником данных является СУБД).

Слой бизнес-логики (или логика предметной области) - описывает основные функции приложения, которые обеспечивают предметную область аналитического или бизнес-приложения.

Данный многослойной подход был использован для создания многоуровневой клиент-серверной архитектуры, которая в последствии и была контейнеризирована с помощью технологии LXC и Docker. Архитектура представляет из себя многоуровневое клиент-серверное приложение (рис. 3).

О R

£

В

m ti H

u

a

s

«

a б

Рис. 3. Многоуровневая клиент-серверная архитектура

Основные звенья это база данных (PostgreSQL, MSSQL и другие), сервер приложений, сервер обмена сообщениями (Apache ActiveMQ, в качестве сервера обмена сообщениями могут быть использованы и другие стандартные компоненты).

Кроме этого существует 3 звена, обеспечивающие доступ к логике приложений из WEB-браузера, это WEB-сервер (Apache, nginx или другой), WebAPI адаптер (FastCGI служба) и AJAX web-клиент. И еще одно звено предназначенное для формирования печатных форм документов и сохранения пользовательских документов, это сервлет контейнер Tomcat.

1.1.1 Интерфейсы взаимодействия с базой данных

В качестве базы данных можно использовать PostgreSQL, MSSQL и другие реляционные базы данных. С базой данных взаимодействие только через сервер-приложений по интерфейсу ODBC.

1.1.2 Интерфейсы взаимодействия звеньев архитектуры

Сервер обмена сообщениями используется как диспетчер сообщений между разными звеньями системы и как основной способ интеграции с другими системами. В качестве сервера обмена сообщениями используется Apache ActiveMQ, данный сервер обмена сообщениями работает по протоколам STOMP (как правило работает на порту :61613) и OpenWIRE (как правило работает на порту :61616), и имеет набор библиотек для основных языков программирования.

1.1.3 Интерфейсы взаимодействия с сервером файлового хранилища

В качестве сервлет контейнера используется Apache Tomcat (как правило работает на порту :8080) с двумя сервлетами: сервлет для формирования печатных форм и сервлет для хранения документов.

Сервлет формирования печатных форм использует XSL-FO engine FOP. Сервлет хранения документов представляет из себя дополненный стандартный сервлет WebDav. Сервлет хранения документов размещает файлы в собственном каталоге.

1.1.4 Интерфейсы взаимодействия с WEB-сервером

В качестве WEB-сервера используется Apache или nginx (работает на порту :80 и :443). WEB сервер работает совместно с Web API адаптером для передачи пользовательских запросов серверу приложений и обратно. Кроме этого в задачи WEB-сервера приложений входит предоставление WEB-доступа к AJAX web-клиенту и может входить задача аутентификации пользователей системы и проксирование запросов на Tomcat.

1.1.5Интерфейсы web API адаптера Web API адаптер представляет из себя сетевое FastCGI приложение для WEB-сервера Apache или nginx. Web API адаптер предназначен для преобразования JSON запросов, приходящих от AJAX WEB-клиентов в формат запроса сервера приложений и обратно. 1.1.6Сервер приложений Сервер приложений является ключевым элементом архитектуры, который обеспечивает обработку пользовательской логики.

Для выполнения пользовательских запросов на сервере приложений создается несколько независимых потоков обработки. Количество этих потоков настраивается в конфигурационных файлах или параметрах запуска сервера приложений.

1.1.7AJAX web-клиент WEB-клиент - это полнофункциональное JavaScript приложение, работающее под большинством современных браузеров, в том числе Chrome, Firefox, Safari и IE.

Контейнеризация многоуровневой клиент-серверной архитектуры

1.1.8 Иерархия управления изолированным контейнером приложений

Для управления контейнеризацией было разработано высокоуровневое API, позволяющее получать доступ к ядру linux host машины и среде LXC. На уровне изолированного контейнера приложений был разработан компонент initsys, который через высокоуровневое API предоставляет внешним компонентам доступ к ядру контейнера и позволяет управлять запуском и остановкой необходимых сервисов. На уровне host машины был разработан компонент ssn_manager, который с использованием высокоуровневого API предоставляет внешнему серверу администрированию доступ к функциям ядра linux, слою виртуализации (LXC), к вирту-

альному контейнеру и его сервисам через компонент initsys. Кроме этого ssn_manager обладает интерфейсами доступа к серверам файлового хранилища и веб-серверам для управления из единой консоли администратора. ssn_manager обладает API для разработки бизнес-логики управления подписками (уровень администратора облака), который также может быть развернут в одном из контейнеров, что обеспечивает гомогенность среды, при которой система управления использует ту же самую инфраструктуру, которой и управляет. Иерархия управления изолированным контейнером изображена на рис. 4.

Host OS | Container Layer

Рис. 4. Иерархия управления изолированным контейнером.

1.1.9 Файловая иерархия контейнера

Для обеспечения обновления виртуальной средой был разработан компонент «base container», который используется для инициализации базового контейнера приложений. Для каждого типа контейнеризированного приложения может быть создан «subscription project», это «base container» + бизнес логика проекта + файлы + БД. В свою очередь виртуальный контейнер приложения содержит только пользовательские данные, настройки и файлы (рис. 5). Если у нас происходит обновление облака контейнеров, достаточно обновить один раз только «base container» и перезапустить подписку через консоль администрирования и подписка запустится уже с новым обновлением. В случае обновления бизнес-логики подписки, клиента и т.п. необходимо обновить только subscription project и все подписки, созданные на его основе так же будут обновлены. В результате такого наследования получается, что время обновления подписок не зависит от количества подписок и занимает несколько секунд.

base container

User level OS shell APP server component bin Python libs, database libs, etc

Business Application Webclien! (AJAX) Settings Storage container + files Database

subscription project

subscription

User Database Files

Рис. 5. Файловая иерархия контейнера.

1.1.10 Сетевая иерархия управления контейнерами

Все компоненты облачной инфраструктуры взаимодействуют между собой по 1Р протоколу, что обеспечивает возможность размещения компонентов облака на физически и территориально распределенной инфраструктуре (рис. 6).

Рис. 6. Сетевая иерархия управления контейнерами

1.1.11 Классы, обеспечивающие контейнеризацию многоуровневой клиент-серверной архитектуры.

В рамках данной работы были разработаны следующие классы обеспечивающие управление контейнерами:

Класс Subscription основной класс управления изолированным контейнером приложения.

Данный класс располагается как отдельный контейнер приложений и взаимодействует через ssn_manager и initsys компоненты управления

В

m fi H

о ы

а

облаком. Основные методы это класса включают:

prepareServer - подготовливает server_node для включения в облако (для того, чтобы подключить сервер в облако необходимо на HW установить из образа linux систему и подключить к облачной инфраструктуре с помощью virtual switch (добавление внутреннего IP);

createOrUpdateBaseContainer - создает или обновляет на подключаемом сервере базовый контейнер;

preliminaryServerPreparation - установку необходимых пакетов на linux систему из репози-тория (ssn_manager; initsys, библиотеки для базового пакета и т.п.).

Класс SubscriptionsEvents - Обрабатывает и хранит ошибки и сообщения, формируемые компонентами облачной архитектуры.

Класс Subscription Package -Обрабатывает, управляет и хранит пакеты, которые создаются в рамках эксплуатации облака.

Использование и тестирование

С помощью разработанного слоя контейнеризации были разработаны приложения обеспечивающие возможность интеграции «интернета вещей» умных городов и систем управления бизнес процессами и взаимодействия в умных городах.

5

«

а

6

Рис. 7. Изображение экранов системы управления, запущенной в контейнере.

Заключение

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

В данной работе была реализована контейнеризация многоуровневой клиент-серверной архи-

тектуры на основе технологии изоляции LXC для создания слоя приложений «умного города».

Для обеспечения слоя изоляции отдельного узла многоуровневой клиент-серверной архитектуры были спроектированы и реализованы на языке C++ классы реализации и управления контейнеризацией. Предложенный в данной статье подход позволил создать гомогенную среду, в которой управляющие узлы облака построены с использованием той же самой технологии, что и управляемые узлы, кроме этого отдельные контейнеры могут быть подгружены и запущены на SMART устройствах, обеспечивая интерфейс интеграции.

Разрабатываемая технология позволила создать прототип облачной инфраструктуры для создания слоя приложений умных городов.. Первые результаты тестирования производительности и эластичности указывают на перспективность технологий контейнеризации для создания масштабируемого облака бизнес и аналитических приложений.

Литература

1. Soledad Pellicer, Guadalupe Santa, Andres L. Bleda, et. al, A Global Perspective of Smart Cities: A Survey, 7th International Conference on Innovative Mobile and Internet Services in Ubiquitous Computing, p. 439. (2013)

2. David Bianchini, Ismael Avila, Smart Cities and Their Smart Decisions: Ethical Considerations, IEEE Technology and Society Magazine, SPRING, р. 34. (2014)

3. Trevor Clohessy, Thomas Acton, Lorraine Morgan, Smart City as a Service (SCaaS) - A Future Roadmap for E-Government Smart City Cloud Computing Initiatives, IEEE/ACM 7th International Conference on Utility and Cloud Computing, p. 836, (2014)

4. Andreea I. Niculescu, Bimiesh Wadhwa, Smart cities in South East Asia: Singapore concepts - an HCI4D perspective, Proceedings of ASEAN CHI Symposium, p. 21, (2015)

5. Francesco Bifulco, Marco Tregua, Cristina Caterina Amitrano, Anna D'Auria, ICT and sustain-ability in smart cities management, Int. J. of Pub. Sec. Man. Vol 29, №2, р. 132-147, (2016)

6. Hong-Linh Truong, Schahram Dustdar, Principles for Engineering IoT Cloud Systems, IEEE Cloud Computing Published by IEEE Computer Society, р. 68, (2015)

7. Marco Miglierina, Application Deployment and Management in the Cloud, 16th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing, p. 422. (2014)

8. Zaheer Khan, Saad Liaquat Kiani, A Cloud-based Architecture for Citizen Services in Smart Cities, IEEE/ACM 5th International Conference on Utility and Cloud Computing, p. 315, (2012)

9. Michael Blackstock, Rodger Lea, loT Interoperability: A Hub-based Approach, International Conference on the Internet of Things (IOT), p. 79, (2014)

10. https://linuxcontainers.org/

11. https://docs.docker.com/

12. Rastogi Garima; Sushil Rama, Cloud computing implementation: Key issues and solutions, Institute of Electrical and Electronics Engineers, March, (2015)

13. https://en.wikipedia.org/wiki/FreeBSD_jail

14. https://en.wikipedia.org/wiki/Solaris_Containers

15. https://technet.microsoft.com/en-us/windowsserver/dd448604.aspx?f=255&MSPPEr ror=-2147217396

16. http://www.xenproject.org/users/virtualization. html

17. https://www.vmware.com/products/vsphere/fe atures/esxi-hypervisor

18. Dua Rajdeep, Raja A Reddy, Kakadia Dhar-mesh, Virtualization vs Containerization to Support PaaS, Institute of Electrical and Electronics Engineers, March, (2014)

19. Roberto Morabito, Jimmy Kjallman et. al., Hy-pervisors vs Lightweight Virtualization A Performance Comparison, 2015, IEEE International Conference on Cloud Engineering, p. 386, March (2015)

"Smart city" cloud technologies

Solovyev V.N., Prokofyev A.V., Chesov R.G., Hlamov M.A.

LLC "FlexbiSolutions", Moscow Physical-Technical Institute

(State University) This paper describes the containerization technology based on LXC. A multi-tiered client-server application, consisting of the following components is used as a containerizing architecture: a database server, a cashing subsystem, an application server, a messaging server, a web-adapter providing the interaction with a web server, a web server, a cross-platform AJAX client. A key element of a multi-level client-server architecture is an application server which implements the following functions - an authentication and the distribution of rights for users and connected devices, query processing, the logging of all user actions and devices, data cache management, lifetime session management and external device management. An application server has PythonAPI and ORM for a system application logic development. A multi-level client-server architecture was used to create a single node for a smart city cloud infrastructure. Containerization layers, insulations and container management layers were implemented using C ++ language. The developed containerization architecture made it possible to implement a simple update managing and cloud scaling.

Keywords: containerization, virtualization, smart city, the Internet of things, LXC, Docker, client-server architecture, C++, Python, ORM References

1.

2.

5.

7.

9.

10.

11

12

13. 1 4. 15.

16.

17

18

19

Soledad Pellicer, Guadalupe Santa, Andres L. Bleda, et. al, A Global Perspective of Smart Cities: A Survey, 7th International Conference on Innovative Mobile and Internet Services in Ubiquitous Computing, p. 439. (2013) David Bianchini, Ismael Avila, Smart Cities and Their Smart Decisions: Ethical Considerations, IEEE Technology and Society Magazine, SPRING, р. 34. (2014) Trevor Clohessy, Thomas Acton, Lorraine Morgan, Smart City as a Service (SCaaS) - A Future Roadmap for E-Government Smart City Cloud Computing Initiatives, IEEE/ACM 7th International Conference on Utility and Cloud Computing, p. 836, (2014)

Andreea I. Niculescu, Bimiesh Wadhwa, Smart cities in South East Asia: Singapore concepts - an HCI4D perspective, Proceedings of ASEAN CHI Symposium, p. 21, (2015)

Francesco Bifulco, Marco Tregua, Cristina Caterina Ami-trano, Anna D'Auria, ICT and sustainability in smart cities management, Int. J. of Pub. Sec. Man. Vol 29, №2, р. 132147, (2016)

Hong-Linh Truong, Schahram Dustdar, Principles for Engineering IoT Cloud Systems, IEEE Cloud Computing Published by IEEE Computer Society, р. 68, (2015) Marco Miglierina, Application Deployment and Management in the Cloud, 16th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing, p. 422. (2014) Zaheer Khan, Saad Liaquat Kiani, A Cloud-based Architecture for Citizen Services in Smart Cities, IEEE/ACM 5th International Conference on Utility and Cloud Computing, p. 315, (2012)

Michael Blackstock, Rodger Lea, IoT Interoperability: A Hub-based Approach, International Conference on the Internet of Things (IOT), p. 79, (2014) https://linuxcontainers.org/ https://docs.docker.com/

Rastogi Garima; Sushil Rama, Cloud computing implementation: Key issues and solutions, Institute of Electrical and Electronics Engineers, March, (2015) https://en.wikipedia.org/wiki/FreeBSD_jail https://en.wikipedia.org/wiki/Solaris_Containers https://technet.microsoft.com/en-us/windowsserver/dd448604.aspx?f=255&MSPPError=-2147217396

http://www.xenproject.org/users/virtualization.html https://www.vmware.com/products/vsphere/features/esxi-hypervisor

Dua Rajdeep, Raja A Reddy, Kakadia Dharmesh, Virtual-ization vs Containerization to Support PaaS, Institute of Electrical and Electronics Engineers, March, (2014) Roberto Morabito, Jimmy Kjallman et. al., Hypervisors vs Lightweight Virtualization A Performance Comparison, 2015, IEEE International Conference on Cloud Engineering, p. 386, March (2015)

0 R и

£

R

m

fi H

i Надоели баннеры? Вы всегда можете отключить рекламу.