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


    В этой статье будет описано архитектурное решение низкого уровня облачной платформы 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
    Наш форум

    Любые вопросы и замечания по существу приветствуются.

    Комментарии 16

      –3
      Apache и высокие нагрузки?
        0
        Хватит уже выкрикивать на каждом углу всем надоевшие и нубовские умозаключения.
          +1
          Количество памяти, которое он тратит на один коннект говорит обо всём. И хватит, тогда уже, указывать другим — что хватит.
          +2
          Как видите, да. И оно вполне себе работает
            0
            Приведёте свои данные по используемым apache'ем ресурсам?
              0
              Я не из hivext, это лучше у них спросить
            0
            уважаемый, во время приготовления пищи важно знать для чего служит каждый «нож» и важно уметь пользоваться этими ножами.
            Nginx не может быть лекарством от всех болезней.
            Апач может справляться с большими нагрузками, кроме нас его использует VMWare, он входит в состав VMware vFabric Cloud Application Platform, а именно Enterprise Ready Apache Web Server. На данный момент решение на базе Апач нас полностью удовлетворяет.

            +2
            Спасибо за статью, будем ждать продолжения…
              0
              Платформе нужно больше примеров, тьюториолов и подробной документации по АПИ.
              0
              Я одного не могу понять — почему «облачный»? Для моды? Ну да, ферма серверов. И?
                0
                потому что обладает следующими характеристиками

                “On-demand self service” — принцип доступности любого объема услуг.
                “Ubiquitous network access” — принцип сетевой доступности.
                “Metered use” — принцип оплаты по факту.
                “Elasticity” — принцип гибкости закупки.
                “Resource pooling” — принцип независимости от «железа».

                  0
                  проще говоря:
                  потому что избавляет вас думать вообще про уровень инфраструктуры
                  потому что ресурсы на ваше приложение реально выдаются только по необходимости, а при простое вообще выгружается приложение из памяти
                  0
                  Посмотри плиз внимательнее на схему программного обеспечения. Я в курсе что ты занимаешься исследованием гипервизора xen, это все гуд и нужно конечно, но к тебе уже можно прийти и сделать веб-приложение с базой и другими фишками с минимальными затратами?

                  Понимаешь исследование xen это до сих пор уровень IaaS, а мы PaaS решение, мы можем стать поверх xen можем поверх vmware. Скалинг у нас ведется на уровне контейнера (JVM, Querqus для PHP) в котором выполняется веб приложение, и все это внутри одной виртуальной машины.

                  И да облачные платформы это не только ресурсы по требованию тут можно почитать подробнее
                  ru.wikipedia.org/wiki/Platform_as_a_service
                  0
                  а кто-то уже делает реальные проекты на базе hivext?
                    0
                    Вы молодцы!

                    Слежу за вашим развитием с удовольствием.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое