Pull to refresh

Hivext Cloud Platform — Архитектура низкого уровня

Reading time4 min
Views2K

В этой статье будет описано архитектурное решение низкого уровня облачной платформы Hivext, а именно уровня дата центров и взаимодействия между собой серверов разного типа.
Напомним, что проект Hivext — предназначен для более эффективного использования ресурсов (временных и финансовых) при разработке “богатых” интернет приложений (Rich Internet Application) и предоставляет широкий набор готовых взаимосвязанных сервисов.
Благодаря компании IT-GRAD мы получили возможность бесплатного разворачивания дополнительной копии платформы в Питерском дата центре (ДЦ). Нам выделили виртуальный хостинг на базе VMware vSphere 4. Работать с таким хостингом можно и через веб интерфейс и через десктоп клиент, все довольно удобно.

На данный момент Hivext развернута в 3-х территориально разнесенных ДЦ: Киев (Украина), Житомир (Украина) и Санкт-Петербург (Россия). Конфигурация платформы внутри каждого ДЦ построена по определенной структуре.

Предлагаю, так сказать, заглянуть под капот нашей платформы.


Итак, в связи с победой в конкурсе IT стартапов последняя копия нашей платформы расположена на оборудовании, которое располагается на площадке в ДЦ ИТ-Град с высоким уровнем надёжности TIER3. Это обеспечивает доступность 99,95%, резервный дизель-генератор, водное охлаждение, газовая система пожаротушения, круглосуточная служба поддержки. Всё вкупе создает отказоустойчивую площадку, где располагаются банки, телекоммуникационные компании и наша платформа.

Схема взаимодействия ДЦ


Все запросы от клиентов приходят на общий узел http://api.hivext.com/, который находится в центральном ДЦ. В этом узле имеется информация про размещение каждого конкретного приложения, к которому идет запрос. Если приложение находится в другом ДЦ, текущий ДЦ работает как прокси. В большинстве случаев для работы с API платформы используются клиентские SDK (JavaScript, ActionScript, j2me, j2se, Qt), которые при первом обращении запрашивают в каком конкретно ДЦ находится приложение и все последующие запросы уходят напрямую к нужному ДЦ. Таким образом решается два вопроса — клиентская балансировка и безболезненная миграция приложений между ДЦ.



Взаимодействие компьютеров внутри одного ДЦ


Для обеспечения необходимой функциональности используется четыре различных типа компьютеров.
  1. Балансировщик
  2. Сервер приложений (Cloudlets)
  3. Файловый сервер
  4. Сервер баз данных

В идеальном случае общая схема будет работать по смешанному принципу HA (High Available) + LB (Load Balancing). В реальном случае (на данный момент развития) HA используется в ограниченном режиме, дублирующий сервер используется только для сервера приложений.
В сфере облачных платформ мы вводим новое понятие Cloudlet — это один инстанс веб-сервера (в данном случае tomcat) с фиксированным размером памяти 1 GB.
Ниже схематически представлена взаимодействие разного типа компьютеров платформы в одном из ДЦ.


В дата центре IT-GRAD нам бесплатно выделили объем ресурсов, из которых получилось собрать нижеуказанную конфигурацию:
Balancer — 1 vCPU, 1Gb Memory, 8 Gb HDD — Apache 2 + AJP (доработанный mod_jk)
Node1 — 3 vCPU, 4Gb Memory, 52 Gb HDD — (Master) tomcat 6 (3шт) + NIS + NFS + FTP
Node2 — 3 vCPU, 4Gb Memory, 36 Gb HDD — tomcat 6 (3шт)
DB — 2 vCPU, 8Gb Memory, 200 Gb HDD — MySQL 5.1

К сожалению, ресурсов выигранных в конкурсе нам не хватило на организацию отдельного сервера File Storage, поэтому временно он был совмещен с одной из нод.

Балансировщик реализован на базе Apache 2 + AJP (доработанный mod_jk) c использованием “липких” сессий (stiky session). Apache 2 сконфигурирован таким образом, что все статические файлы отдаются им напрямую, а остальные запросы перебрасываются на сервер приложений. Добавление нового приложение и выделение доменного имени производится без перезагрузки Apache 2.

Cloudlet (сервер приложений) реализован на базе tomcat 6, который развернут в количестве 6 штук на Node1 и Node2 и сконфигурирован в 3 отдельных cluster-а c использованием DeltaManager + SimpleTcpCluster (репликация в памяти). Балансировка производится между этими тремя кластерами.

Файловый сервер хранит в себе статические файлы. Статические файлы доступны напрямую через web и доступны скриптам приложений внутри сервера приложений. Доступность файлов на других серверах обеспечивается за счет использования NFS 4. К этим же файлам можно добраться используя FTP.
Для синхронизации пользователей между компьютерами используется NIS.

Сервер баз данных реализован на базе MySQL 5.1 с использованием репликации master-slave. Под каждое приложение выделяется отдельная база. Доступ к базам приложений имеется из скриптов приложений, а так же через веб интерфейс PhpMyAdmin.

Схема организации платформы на уровне программного обеспечения указана ниже
image
В ядре платформы используется два кита Spring Framework и Hibernate.

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


В следующих статьях: открытие PHP на базе Quercus, описание работы с клиентскими SDK.

Предыдущие статьи про Hivext

Online Cloud Development Environment
Наш форум

Любые вопросы и замечания по существу приветствуются.
Tags:
Hubs:
+16
Comments16

Articles