В одном из наших предыдущих постов, мы описывали архитектуру дискового хранилища. Статья получила множество откликов и пришла идея описать всю актуальную архитектуру нашего облака. Мы не раз рассказывали о разных компонентах на профессиональных конференциях. Но, во-первых, не у всех есть возможность их посещать, а во-вторых, наша архитектура динамична, постоянно развивается и дополняется, так что множество информации уже не актуально.
Условно текущую архитектуру платформы Скалакси можно разделить на три значительные части:
Ограниченное количество физических серверов для работы виртуальных машин и система хранения образов дисков виртуальных машин объединенные общей высокопроизводительной коммуникационной шиной.
Архитектура компонентов:
Общая архитектура приведена на схеме:
![image](http://wiki.scalaxy.ru/download/attachments/5701659/Poolscheme.png?version=1&modificationDate=1301606113000)
Система виртуализации состоит из бездисковых серверов виртуализации со свободно распространяемым гипервизором Xen 4.0.1 с открытым кодом.
![image](http://wiki.scalaxy.ru/download/attachments/5701657/Virtualizationsystem.png?version=1&modificationDate=1301599250000)
Загрузка сервера виртуализации производится по Infiniband сети с управляющего кластера. При загрузке создается управляющий домен Xen c ОС SUSE Linux Enterprise. Далее по запросу управляющего кластера на сервере виртуализации создаются клиентские паравиртуальные и HVM домены (виртуальные машины) с ОС Linux и ОС Windows соответственно.
Каждая виртуальная машина имеет:
Система хранения с блочным доступом состоит из двух типов серверов: прокси и узлов. Подробнее с фотографиями в прошлом посте.
![image](http://wiki.scalaxy.ru/download/attachments/5701643/Blockstoragescheme.png?version=1&modificationDate=1301602966000)
Для работы хранилища на блочном уровне используется реализация протокола SCSI работающая в среде Infiniband — SRP. В SRP, как и в других сетевых реализациях SCSI, используются таргеты и инициаторы (серверы и клиенты). Таргеты поставляют инициаторам специальные SCSI луны (логические блоки).
На серверах виртуализации работают SRP инициаторы и демон multipathd. Последний агрегирует одинаковые луны с разных прокси-серверов в одно виртуальное блочное устройство, обеспечивая отказоустойчивость. Если один из прокси-серверов выйдет из строя, то multipathd переключит путь на другой прокси-сервер, таким образом, что виртуальные машины на серверах виртуализации не заметят сбоя.
Устройство созданное multipathd делится на логические устройства в соответствии с данными из единой логической группы томов LVM. Полученные в результате деления блочные устройства передаются в виртуальные машины, которые видят их в виде дисков. Если требуется изменить размер диска для виртуальной машины, нужно изменить размер логического устройства в логической группе LVM, что является очень простой операцией.
Узлы системы хранения — серверы с дисками под управлением ОС SUSE Linux Enterprise. На них работают SCSI таргеты из драйвера SCST. В качестве узлов системы хранения могут применяться любые системы хранения данных работающие по протоколам SRP, FC или iSCSI, такие как NetApp, EMC и другие.
Прокси-серверы выполняют функции репликации данных и объединяют пространство узлов системы хранения в одну логическую группу LVM. Репликация данных выполняется с помощью Linux драйвера md между несколькими узлами системы хранения. Для этого из лунов нескольких узлов системы хранения собирается рейд уровня 1+0 с заданным уровнем резервирования. По умолчанию уровень резервирования равен 2х (каждый диск виртуальной машины хранится на двух узлах системы хранения).
Шина Infiniband состоит из двух основных элементов: Infiniband свитчи и шлюзы в Ethernet.
![image](http://wiki.scalaxy.ru/download/attachments/5701708/Infinibandbus.png?version=1&modificationDate=1301606927000)
Для пулов используются 324-портовые Infiniband-свитчи Grid Director 4700. На текущий момент свитч зарезервирован на уровне модулей (он имеет полностью пассивный бэкплейн и модульную архитектуру, когда при выходе из строя модулей работа не прерывается). В дальнейшем, при развитии, Infiniband свитчи будут зарезервированы и на уровне шасси.
Шлюз в Ethernet — это сервер с ОС SUSE Linux Enterprise и Infiniband адаптером и Ethernet-адаптером. Шлюзы зарезервированы.
Сетевая система состоит из двух основных элементов: коммутаторы и мультисервисные шлюзы.
![image](http://wiki.scalaxy.ru/download/attachments/5701648/Networkscheme.png?version=1&modificationDate=1301609934000)
Коммутаторы Juniper EX8208 выполняют маршрутизацию IP-трафика. Коммутаторы зарезервированы.
Мультисервисные шлюзы Juniper SRX3600 защищают систему от паразитного трафика распознавая различные виды атак с помощью библиотеки сигнатур. Мультисервисные шлюзы зарезервированы. Фотографии можно посмотреть.
Основные элементы управляющего кластера это система хранения, узлы и системные сервисы работающие на узлах.
![image](http://wiki.scalaxy.ru/download/attachments/5701650/Corescheme.png?version=1&modificationDate=1301613526000)
Система хранения управляющего кластера представляет собой аппаратные рейды HP MSA2312sa с двумя контроллерами каждый. Каждый рэйд подключен к 4 узлам управляющего кластера по SAS. Данные между двумя рейдами резервируются на уровне сервисов.
Узлы управляющего кластера — серверы с ОС SUSE Linux Enterprise и гипервизором Xen 4.0.1. Каждый сервис управляющего кластера представляет собой одну или более виртуальных машин с соответствующим программным обеспечением.
На управляющем кластере присутствуют следующие системные сервисы:
Каждый сервис запущен в двух и более экземплярах, репликация данных выполняется с помощью репликации СУБД MySQL.
Вся эта документация доступна в нашей wiki, где также есть FAQ и описание нашего API, с примерами.
Условно текущую архитектуру платформы Скалакси можно разделить на три значительные части:
- пулы виртуализации;
- сетевая система;
- управляющий кластер.
Пул виртуализации
Ограниченное количество физических серверов для работы виртуальных машин и система хранения образов дисков виртуальных машин объединенные общей высокопроизводительной коммуникационной шиной.
Архитектура компонентов:
- система виртуализации;
- система хранения с блочным доступом;
- шина Infiniband.
Общая архитектура приведена на схеме:
![image](http://wiki.scalaxy.ru/download/attachments/5701659/Poolscheme.png?version=1&modificationDate=1301606113000)
Система виртуализации
Система виртуализации состоит из бездисковых серверов виртуализации со свободно распространяемым гипервизором Xen 4.0.1 с открытым кодом.
![image](http://wiki.scalaxy.ru/download/attachments/5701657/Virtualizationsystem.png?version=1&modificationDate=1301599250000)
Конфигурация сервера виртуализации
— ЦПУ Intel Xeon 55xx/56xx;
— ОЗУ 68-96 ГБ;
— локальные диски отсутствуют;
— Infiniband-адаптер;
— Ethernet-адаптер (для управления питанием и аварийного доступа через IPMI 2.0).
Загрузка сервера виртуализации производится по Infiniband сети с управляющего кластера. При загрузке создается управляющий домен Xen c ОС SUSE Linux Enterprise. Далее по запросу управляющего кластера на сервере виртуализации создаются клиентские паравиртуальные и HVM домены (виртуальные машины) с ОС Linux и ОС Windows соответственно.
Каждая виртуальная машина имеет:
- 16 виртуальных процессорных ядер;
- заданный объем выделенной оперативной памяти;
- внутренний и внешний сетевой интерфейс для связи с другими клиентскими машинами одного аккаунта и сетью Интернет соответственно (IP-адреса для обоих интерфейсов выделяются с помощью DHCP-сервера на управляющем кластере);
- основной и дополнительный диски (блочные устройства).
- на использование процессора с помощью шедулера Xen sched-credit, вес каждого клиентского домена равен количеству ГБ выделенной оперативной памяти;
- на использование внутреннего и внешнего сетевого канала с помощью Linux-утилиты tc;
- на использование канала к дискам с помощью Linux драйвера blkio-throttle.
Система хранения с блочным доступом
Система хранения с блочным доступом состоит из двух типов серверов: прокси и узлов. Подробнее с фотографиями в прошлом посте.
![image](http://wiki.scalaxy.ru/download/attachments/5701643/Blockstoragescheme.png?version=1&modificationDate=1301602966000)
Для работы хранилища на блочном уровне используется реализация протокола SCSI работающая в среде Infiniband — SRP. В SRP, как и в других сетевых реализациях SCSI, используются таргеты и инициаторы (серверы и клиенты). Таргеты поставляют инициаторам специальные SCSI луны (логические блоки).
На серверах виртуализации работают SRP инициаторы и демон multipathd. Последний агрегирует одинаковые луны с разных прокси-серверов в одно виртуальное блочное устройство, обеспечивая отказоустойчивость. Если один из прокси-серверов выйдет из строя, то multipathd переключит путь на другой прокси-сервер, таким образом, что виртуальные машины на серверах виртуализации не заметят сбоя.
Устройство созданное multipathd делится на логические устройства в соответствии с данными из единой логической группы томов LVM. Полученные в результате деления блочные устройства передаются в виртуальные машины, которые видят их в виде дисков. Если требуется изменить размер диска для виртуальной машины, нужно изменить размер логического устройства в логической группе LVM, что является очень простой операцией.
Узлы системы хранения — серверы с дисками под управлением ОС SUSE Linux Enterprise. На них работают SCSI таргеты из драйвера SCST. В качестве узлов системы хранения могут применяться любые системы хранения данных работающие по протоколам SRP, FC или iSCSI, такие как NetApp, EMC и другие.
Прокси-серверы выполняют функции репликации данных и объединяют пространство узлов системы хранения в одну логическую группу LVM. Репликация данных выполняется с помощью Linux драйвера md между несколькими узлами системы хранения. Для этого из лунов нескольких узлов системы хранения собирается рейд уровня 1+0 с заданным уровнем резервирования. По умолчанию уровень резервирования равен 2х (каждый диск виртуальной машины хранится на двух узлах системы хранения).
Конфигурация узла хранения
— ЦПУ Intel Xeon 55xx;
— ОЗУ 96 ГБ;
— 36 дисков SAS2 600GB;
— Infiniband-адаптер;
— Ethernet-адаптер (для управления питанием и аварийного доступа через IPMI 2.0).
Конфигурация прокси-сервера
— ЦПУ Intel Xeon 56xx;
— ОЗУ 4 ГБ;
— локальные диски отсутствуют;
— 2 х Infiniband-адаптера (один для соединений с узлами, второй для соединений с серверами виртуализации);
— Ethernet-адаптер (для управления питанием и аварийного доступа через IPMI 2.0).
Шина Infiniband
Шина Infiniband состоит из двух основных элементов: Infiniband свитчи и шлюзы в Ethernet.
![image](http://wiki.scalaxy.ru/download/attachments/5701708/Infinibandbus.png?version=1&modificationDate=1301606927000)
Для пулов используются 324-портовые Infiniband-свитчи Grid Director 4700. На текущий момент свитч зарезервирован на уровне модулей (он имеет полностью пассивный бэкплейн и модульную архитектуру, когда при выходе из строя модулей работа не прерывается). В дальнейшем, при развитии, Infiniband свитчи будут зарезервированы и на уровне шасси.
Шлюз в Ethernet — это сервер с ОС SUSE Linux Enterprise и Infiniband адаптером и Ethernet-адаптером. Шлюзы зарезервированы.
Сетевая система
Сетевая система состоит из двух основных элементов: коммутаторы и мультисервисные шлюзы.
![image](http://wiki.scalaxy.ru/download/attachments/5701648/Networkscheme.png?version=1&modificationDate=1301609934000)
Коммутаторы Juniper EX8208 выполняют маршрутизацию IP-трафика. Коммутаторы зарезервированы.
Мультисервисные шлюзы Juniper SRX3600 защищают систему от паразитного трафика распознавая различные виды атак с помощью библиотеки сигнатур. Мультисервисные шлюзы зарезервированы. Фотографии можно посмотреть.
Управляющий кластер
Основные элементы управляющего кластера это система хранения, узлы и системные сервисы работающие на узлах.
![image](http://wiki.scalaxy.ru/download/attachments/5701650/Corescheme.png?version=1&modificationDate=1301613526000)
Система хранения управляющего кластера представляет собой аппаратные рейды HP MSA2312sa с двумя контроллерами каждый. Каждый рэйд подключен к 4 узлам управляющего кластера по SAS. Данные между двумя рейдами резервируются на уровне сервисов.
Узлы управляющего кластера — серверы с ОС SUSE Linux Enterprise и гипервизором Xen 4.0.1. Каждый сервис управляющего кластера представляет собой одну или более виртуальных машин с соответствующим программным обеспечением.
Сервисы
На управляющем кластере присутствуют следующие системные сервисы:
- система управления виртуальными ресурсами (CloudEngine), приложение разработанное с помощью Ruby on Rails;
- панель управления виртуальными ресурсами, веб-приложение разработанное с помощью Ruby on Rails;
- система мониторинга состояния и загрузки виртуальных ресурсов на базе Zabbix;
- система управления правами пользователей на базе LDAP;
- DHCP серверы для раздачи IP-адресов виртуальным машинам и серверам кластера;
- DNS серверы для обслуживания доменных имен;
- сервис консолей, предоставляющий доступ к VNC консолям для виртуальных машин.
- TFTP сервер для загрузки образов серверов кластера;
- HTTP сервер для загрузки шаблонов образов виртуальных машин.
Каждый сервис запущен в двух и более экземплярах, репликация данных выполняется с помощью репликации СУБД MySQL.
Вся эта документация доступна в нашей wiki, где также есть FAQ и описание нашего API, с примерами.