Разворачиваем Rancher в InfoboxCloud: переносимую инфраструктуру с веб-интерфейсом для Docker
Docker изменил облик современного подхода к размещению приложений и сервисов пользователя в облаках, представив переносимые контейнеры для приложений. Переносимость означает отсутствие зависимости от конкретной облачной инфраструктуры (vendor lock-in), простую миграцию приложений между облаками, простое развертывание, снижение расходов на поддержку и обслуживание. Имея контейнеризованное переносимое приложение вы можете сфокусироваться на увеличении производительности приложения, доступности и других важных особенностях приложений. Существующие технологии типа Kubernetes, Swarm, Panamax, Helios, Clocker, Dies и т.д. развивают технологии поверх Docker и делают свой значимый вклад в развитие экосистемы.
Rancher фокусируется совершенно на другой проблеме. Представьте, что вы разворачиваете приложение в Docker в облаке. Инфраструктура переносима, а служебные сервисы типа отказоустойчивых балансировщиков нагрузки и других решений — нет. Если вам понадобилось смигрировать в другое облако где отличается данная функциональность — возникнут проблемы.
Цель Rancher — создание переносимых инфраструктурных сервисов вокруг Docker, включая эластичное блочное хранилище, виртуальные сети, отказоустойчивый балансировщик нагрузки, группы безопасности, мониторинг, сервисы баз данных и многое другое. Все это вы можете переносить между собственными серверами и облаками различных производителей, использовать несколько регионов облачного провайдера одновременно. А раз не возникает зависимость на уровне инфраструктуры, вы можете выбирать облако по соотношениям надежности, производительности, цены и доверия.
Кстати, исходные тексты Rancher доступны под лицензией Apache 2.0.
В этой статье мы рассмотрим инфраструктуру Rancher подробнее и установим Rancher в InfoboxCloud.
Как получить пробную версию InfoboxCloud бесплатно — читайте в конце статьи.
Перед использованием Docker, Compose и Rancher будет полезно ознакомиться со статьями:
Используем Docker и не волнуемся о vendor-lock
Погружаемся в Docker: Dockerfile и коммуникация между контейнерами
Обзор новшеств Docker Engine с 1.0 до 1.7. Введение в Docker Compose
Основные возможности
- Частные сети. Возможность создания частных SDN сетей для каждого окружения, позволяющих безопасные коммуникации между контейнерами между хостами и облаками.
- Балансировка нагрузки. Встроенный эластичный балансировщик нагрузки для распределения трафика между контейнерами или сервисами. Сервис балансировки нагрузки может работать даже между различными регионами облака.
- Управление хранилищем. Поддержка снепшотов и бекапов томов Docker, возможность бекапить состояние контейнеров и состояние сервисов.
- Обнаружение сервисов. Распределенный DNS сервис обнаружения со встроенным мониторингом здоровья, который позволяет контейнерам автоматически регистрировать себя как сервисы и динамически находить другие в сети.
- Апгрейды сервисов. Возможность простого апгрейда сервисов с помощью клонирование и перенаправления запросов к сервису. Это позволяет проверить обновленный сервис перед направлением на него трафика.
- Управление ресурсами. Поддержка Docker Machine, инструмента для провижнинга хостов. Возможность мониторинга ресурсов хостов и управления развертыванием контейнеров.
- Совместное использование и управление пользователями. Возможность создания множества пользователей инфраструктуры и совместной работы над поддержкой жизненного цикла сервисов. Возможность создания отдельных окружений для разработки, тестирования и промышленного использования с возможностью совместного использования ресурсов.
Интерфейсы для работы с Rancher
Есть три основных способа работы с Rancher:
- Пользователи могут работать с Rancher с помощью Docker CLI и API. Rancher — это не еще один слой оркестрации и управления, скрывающий от пользователей функциональность Docker. Платформа Docker постоянно развивается и слой обертки не успевал бы за появлением новых функций Docker. Rancher работает в фоне и пользователи могут продолжать пользоваться нативным Docker Command Line Interface и шаблонами Compose. Rancher использует labels — возможность Docker 1.6 для передачи дополнительной информации через Docker CLI. Эту возможность разработала Rancher Labs и ее включили в Docker.
- Пользователи могут взаимодействовать с Rancher с помощью утилиты командной строки rancher-compose. Эта утилита позволяет пользователям запускать множество контейнеров и сервисов, которые основаны на docker-compose и инфраструктуре Rancher. Rancher–compose поддерживает формат docker-compose.yml. Опционально rancher-compose файл может быть расширен с помощью определений сервисов.
- Пользователи могут взаимодействовать с Rancher с помощью Rancher UI. В нем вы можете выполнять задачи по настройке, такие как установка контроля доступа, управление окружениями, добавление docker–реестров. Rancher UI — простой и интуитивный способ управления инфраструктурой и сервисами.
Установка Rancher в InfoboxCloud
Данные облачных серверов будут защищены тройной репликацией и автоматическим резервным копированием по расписанию. Вся дисковая подсистема ускоряется за счет Enterprise SSD–кеширования на дисках PCI–Express SSD и SSD уровня Datacenter. Доступность серверов по SLA — 99.99% в год.
Пользуйтесь облаками потому что они успешно решают ваши задачи по доступным ценам, а не потому что деваться больше некуда.
Rancher развертывается как набор контейнеров Docker (а значит установка будет простой). Инсталляция состоит из двух контейнеров: один контейнер — управляющий сервер, другой — агент на ноде. Rancher может работать в высокодоступных конфигурациях, но их мы будем рассматривать в будущих статьях.Системные требования
- Рекомендуется использовать Rancher с CentOS 7 и Docker.
- Для работы управляющего сервера необходим 1Gb оперативной памяти.
Устанавливаем Rancher Server
Использование облака очень удобно тем, что никакой абонентской платы нет. При регистрации вы единовременно пополняете счет минимум на 500 рублей (по аналогии с покупкой sim–карты у мобильного оператора) и далее можете использовать облако по необходимости. Быстро рассчитать сколько примерно будет стоить для вас облачный сервер в месяц можно тут (указывайте правильно размерности, например 2 гигагерца частоты, а не 2000 гигагерц). Оплата производится на почасовой основе и замораживается на вашем счету. Используя автомасштабирование или изменяя объем доступных ресурсов сервера вручную можно оплачивать только за необходимые ресурсы и дополнительно экономить и иметь возможность получить больше ресурсов, когда это необходимо.
После регистрации вы получите данные для доступа к панели управления на email. Войдите в панель управления по адресу: https://panel.infobox.ru
В разделе «Облачная инфраструктура» вашей подписки нажмите «Новый сервер» (при необходимости подписка меняется в правом верхнем углу в выпадающем меню).
Задайте необходимые параметры сервера. Обязательно выделите серверу 1 публичный IP–адрес и установите галочку «Разрешить управление ядром ОС», как показано на скриншоте ниже.
В списке доступных операционных систем выберите CentOS 7 и завершите создание сервера.
После этого данные для доступа к серверу придут к вам на электронную почту.
После создания сервера с CentOS 7 подключитесь к нему по SSH.
Мы подготовили скрипт, который позволит вам установить Docker и полезные утилиты для работы с Docker на такой сервер. Необходимые настройки будут выполнены автоматически.
Выполните команду для установки Docker и Compose:
bash <(curl -s http://repository.sandbox.infoboxcloud.ru/scripts/docker/centos7/install.sh)
1. Обновляет ОС.
2. Останавливает postfix и запрещает его автозапуск. Postfix занимает 25 порт, но этот порт может понадобиться вашим сервисам в docker.
3. Добавляет официальный репозиторий Docker и устанавливает docker-engine.
5. Добавляет репозиторий EPEL, устанавливает pip, устанавливает Docker Compose с помощью pip.
6. Запускает сервис Docker и добавляет его в автозагрузку.
Перезагрузите сервер.
Теперь можно установить Rancher Server.
Создайте папку, где будут храниться файлы сервера Rancher и поддиректории для базы данных командой:
mkdir -p ~/rancher/var/lib/mysql/
Перейдите в директорию пользователя:
cd ~
Скачайте compose файл развертывания Rancher Server:
curl -O http://repository.sandbox.infoboxcloud.ru/scripts/rancher/centos7-docker/docker-compose.yml
И наконец запустите развертывание Rancher Server:
docker-compose up -d
После развертывания вы сможете зайти на сервер по адресу:
ip–адрес-сервера:8080
Рекомендуется направить запись A домена на сервер Rancher, который будет использоваться с Rancher, чтобы в будущем не менять ключи авторизации при направлении домена и иметь возможность при изменении управляющего сервера не перенастраивать хосты Rancher.
В будущих статьях мы рассмотрим, как включить поддержку SSL с Rancher (нужно перед Rancher развернуть реверс-прокси nginx).
Настраиваем контроль доступа
Контроль доступа нужен, чтобы Rancher ограничивал количество пользователей, имеющих доступ к вашим Rancher-серверам. Первый аккаунт, который настроил аутентификацию в Rancher становится аккаунтом администратора. Только у администраторов есть права на просмотр настроек контроля доступа и регистрацию хостов. Кроме этого администраторы имеют права на просмотр всех окружений в инсталляции, даже если они не были добавлены как члены окружения.Включение контроля доступа
Нажмите на Settings в предупреждении об отключенном контроле доступа.
В настоящий момент поддерживается авторизация только через Github, но в будущем появятся и другие способы.
Если у вас еще нет аккаунта на Github, зарегистрируйтесь и залогиньтесь.
Нажмите на значек своей учетной записи в правой верхней части GitHub и перейдите в раздел Settings.
Перейдите в раздел «Applications» и нажмите «Developer Applications». В этом разделе нажмите «Register New Application».
Заполните поля:
- application name — укажите что угодно, чтобы вам было понятно, что это Rancher.
- homepage URL — адрес установленного Rancher Server (домен или ip–адрес)
- Application description — любое описание Rancher
- Authorization callback URL указан на странице Settings в Rancher Server, которую мы открыли ранее.
После этого нажмите «Register New Application».
Вы увидите Client ID и Client Secret.
Вставьте их в раздел настроек контроля доступа Rancher.
После этого нажмите Authenticate with Github для сохранения настроек.
Откроется страница Github, на которой нужно нажать «Authorize Application».
Теперь контроль доступа настроен.
Если вы хотите добавить человека или организацию в Rancher, в разделе Access control в секции Site Access нажмите Customize.
Вы можете указать аккаунт человека или организации на Github и добавить в список пользователей Rancher.
Добавленные пользователи смогут создавать окружения и вы можете разрешить им работать над существующими окружениями.
Добавляем хост
На хостах будет выполняться непосредственно работа контейнеров и сервисов. Рекомендуется для хоста создать отдельный сервер в InfoboxCloud с CentOS 7. Можно создать хосты в разных регионах, например в Москве, Санкт-Петербурге и Амстердаме и размещать сервисы Rancher и контейнеры там, где необходимо в данный момент. Дополнительный регион облака можно добавить на главной странице панели управления в разделе «Заказать новую услугу».
Задайте необходимые параметры сервера. Обязательно выделите серверу 1 публичный IP–адрес и установите галочку «Разрешить управление ядром ОС», как показано на скриншоте ниже.
В списке доступных операционных систем выберите CentOS 7 и завершите создание сервера.
После этого данные для доступа к серверу придут к вам на электронную почту.
Установите на сервер Docker скриптом:
bash <(curl -s http://repository.sandbox.infoboxcloud.ru/scripts/docker/centos7/install.sh)
В целях экономии при тестировании можно использовать и тот же сервер, где установлен Rancher Server.
Чтобы добавить хост в Rancher перейдите в раздел «Infrastructure» и нажмите »Add Host».
Нажмите «Custom». Вы увидите команду, которую нужно выполнить в консоли чтобы добавить сервер как хост.
После этого нажмите Close и вы увидите хост в вашей инфраструктуре.
Если нажать на этот хост вы увидите актуальный график загрузки ресурсов. В данном случае оперативная память занята т.к. мы разрешили использование Rancher Server и как хост. В панели управления InfoboxCloud можно просто добавить оперативной памяти серверу и ресурсов станет больше.
Добавим еще несколько хостов в Rancher Server в разных регионах. Просто создаем в нужном регионе сервер с CentOS 7 и установленной галочкой «Разрешить управление ядром ОС», устанавливаем Docker скриптом, нажимаем в Rancher Server Add Host и исполняем команду, выданную Rancher на хосте. Так просто.
Теперь у нас есть инфраструктура на Rancher, работающая в различных регионах InfoboxCloud.
В любой момент вы можете деактивировать один из хостов, чтобы запретить создавать в нем новые контейнеры.
Добавляем Docker Registry
Полезным будет добавить репозитории Docker или собственные в Rancher.
Давайте посмотрим, как просто можно добавить DockerHub.
Нажмите на имя вашего пользователя в панели управления Rancher и далее нажмите «Registries».
Затем нажмите «Add Registry».
Если у вас еще нет доступа к Docker Hub, добавьте его тут.
После этого введите данные для доступа.
Репозиторий Docker Hub будет успешно добавлен.
В следующей статье мы рассмотрим функциональность Rancher на практике и развернем набор полезных сервисов в переносимую инфраструктуру.
Как получить пробную версию InfoboxCloud бесплатно?
Пришлите нам ваш адрес электронной почты и ФИО на trukhinyuri@infoboxcloud.com, в ответ получите данные для доступа к панели управления. Вы можете тестировать новый регион облака в течение 15 дней, далее необходимо перейти на полную версию облака. Запросить бесплатную пробную версию можно до 21 августа 2015 года.
Если у вас есть вопросы или замечания, напишите нам и мы с радостью ответим. Если вы не можете оставлять комментарии на Хабре, напишите в Сообществе InfoboxCloud.
Успешной работы!