«Механизмы обновления платформы и окружений...

Preview:

DESCRIPTION

Дмитрий Лазаренко, Директор R&D, Jelastic Выступление на hpc4.itmozg.ru (25 апреля 2013, Санкт-Петербург)

Citation preview

Install&Update ProcessesDmitry Lazarenko,

Director of R&D, Russia

dl@jelastic.com

PaaS• Глобальная автоматизация• Простота управления

приложениями• Масштабирование приложения в

зависимости от нагрузки• Целостность и безопасность

данных приложения

PaaS значительно снижает затраты времени и денег на обслуживание

Jelastic is the next generation of cloud hosting which can run and scale

ANY Java & PHP applications with no code changes required

Easy to Create

Set up your cloud

environment in seconds No extra installation or

configuration No APIs to code to Wide range of software

stacks that you need

Easy to Deploy One-click deployment

Application version

control

Git & SVN support

Maven, Ant & Jenkins

support

Easy to Scale Vertical & Horizontal scaling

Fast resource changes

Easy to Manage Managing application

lifecycle

Control and analyze

Вычислительные Контейнеры

• Каждый элемент окружения – отдельный контейнер(REC)

• Все контейнеры типизированы• Для каждого метатипа определен свой протокол по

которому ядро взаимодействует с ним• Взаимодействие ядра и конкретного контейнера

происходит по SSH• Все контейнеры динамически оптимизируются для

оптимальной утилизации ресурсов

Окружения

Окружения

Системная архитектура

Архитектура развертывания

root, 04/23/2013
Перерисовать

Platform Install&Update

Сложная инфраструктура

Resolver

Database server

Jelastic Core

Hivext Core

Awaikener

Zabbix app server

Zabbix db server

Logging server

RPM repositoryAutotests server

Большое количество площадок

ПроблемыИсторически платформа устанавливалась и обновлялась вручную:

• Разработчики патчили наживую продакшены• Доработка напильником и «Уникальная»

конфигурация• Состав патча/инсталлятора распределен

между головами 3-4 человек

Результат проблем• Установка с 0 растягивается на неделю• Более суток на непрерывное

обновление• Очень большой Downtime• Невозможность предсказать все

проблемы и затраченное время• Про тиражирование можно забыть

Что было нужно?• Управление разворачиванием сложной

конфигурации• Полная автоматизация установки и

обновления• Простая параметризация под конкретную

площадку

Чего пытались добиться?• Дешевое тиражирование платформы• Ускорение процессов установки и

обновления• Минимизация Downtime• Минимизация рисков от человеческого

фактора

Выбор системы автоматизации

• Puppet• Chef• Cfengine• Self-made

Структура Puppet

Классы инфраструктурных харднод

Классы инфраструктурных приложений

Классы инфраструктурных контейнеров

Классы общих приложений

Конфиги хостера

Объявление объектов

Манифесты(Классы) РесурсыОбьекты

Артефакты

Динамические данные (параметризированные

конфигурации и скрипты )

Статические данные(файлы конфигураций и скрипты)

Содержимое инсталлятора• Инфраструктурные приложения• Клиентские приложения• Базы данных• RPM-Пакеты• Конфигурации

RPM• Из них формируются шаблоны

контейнеров:•Tomcat•MySQL•Nginx…

• Собираются с помощью maven• Сохраняются с помощью Jenkins в

центральный RPM-репозиторий

Workflow установки

Puppet Master node

Jem managing application

GIT GIT RepositoryRepository

GIT GIT RepositoryRepository

R&D Department

OperationsDepartment

Install configHosters configObjects declaration

NexusNexus

JenkinsJenkins

RPM repoRPM repo

Установка платформы1. Заранее подготавливается инфраструктура:•Сеть•Делегируется корневая Dns-зона•SSL-сертификаты

2. Нужные параметры зашиваются в скрипт, который:•Устанавливает систему виртуализации•Создает и конфигурирует все инфраструктурные контейнеры

3. Установка полностью автоматизирована ~ 3 часа

Обновление БД• Икрементальные шаблонизированные SQL

скрипты• Специальный менеджер обновления,

который обеспечивает правильный порядок и правильность выполнения скриптов

• Поддержка обратной совместимости

Проблема• Во время обновление БД заблокирована• Много Alter на больших таблицах занимает много

времени (на практике до 2х часов)

Следствие• Downtime инфраструктурных приложений и БД

может достигать нескольких часов

Кластерный режим обновления• Перекидывание виртуальных IP (VIP)

• Смена DNS - A записей

• Смена точки входа в платформу

• Поочередное обновление каждого экземпляра:1. Active-Active

2. Active-Standby (Updating)

3. Standby (Updating)-Active

4. Active-Active

Обновление без Downtime

Обновление БДMulti-Master Replication Manager for MySQL :1.Останавливаем репликацию

2.Запоминаем номер транкзакции T1 (checkpoint)

3.Данные пишутся только на первый узел

4.Обновляем второй узел

5.Включаем репликацию

6.Новые данные копируются с узла 1 на узел 2

7.Меняем роли между 1м и 2м узлом

8.Обновляем первый узел, так же как и второй

9.В итоге кластер БД полностью синхронизирован

Проверка1. CI на нескольких STAGED-площадках:

1. Установка с 0

2. Обновление с одной на другую версию

3. Автотесты

2. CI на нескольких SuperSTAGED-площадках:

1. Обновление на следующую версию

2. Автотесты

3. Только потом обновление Production

Continuous Integration

Скачивание конфигов Скачивание конфигов хостера с репозитория хостера с репозитория

OPSOPS

Скачивание конфигов Скачивание конфигов хостера с репозитория хостера с репозитория

OPSOPS

Установка и запуск Jem Установка и запуск Jem приложенияприложения

Установка и запуск Jem Установка и запуск Jem приложенияприложения

Скачивание манифестов Скачивание манифестов нужной версиинужной версии

с репозитория R&Dс репозитория R&D

Скачивание манифестов Скачивание манифестов нужной версиинужной версии

с репозитория R&Dс репозитория R&D

Скачивание собраных Скачивание собраных артефактов нужной артефактов нужной

версии с Nexusверсии с Nexus

Скачивание собраных Скачивание собраных артефактов нужной артефактов нужной

версии с Nexusверсии с Nexus

Сборка элементов Сборка элементов инфраструктуры черезинфраструктуры через

jem + puppetjem + puppet

Сборка элементов Сборка элементов инфраструктуры черезинфраструктуры через

jem + puppetjem + puppetЗапуск тестов базовой Запуск тестов базовой проверки установкипроверки установки

Запуск тестов базовой Запуск тестов базовой проверки установкипроверки установки

Запуск тестов проверки Запуск тестов проверки всего фунционала, уже на всего фунционала, уже на

уровне пользователяуровне пользователя

Запуск тестов проверки Запуск тестов проверки всего фунционала, уже на всего фунционала, уже на

уровне пользователяуровне пользователя

Отправка результатов Отправка результатов тестирования на почтутестирования на почту

Отправка результатов Отправка результатов тестирования на почтутестирования на почту

Удаление виртуальных Удаление виртуальных серверов и приложения серверов и приложения

JemJem

Удаление виртуальных Удаление виртуальных серверов и приложения серверов и приложения

JemJem

Containers patching

Задача• Применять патчи безопасности на все окружения

всех пользователей

• Давать пользователям возможность

самостоятельно обновить компоненты их

окружений в случае выхода их новой версии

Реалии• Каждый контейнер – отдельная монолитная ОС• Применение 1 патча для одного контейнера

(yum update) занимает от 30 секунд до 10 минут:1. Подключение ко всем репозиториям

2. Проверка зависимостей

3. Загрузка RPM-пакета и его зависимостей

4. Установка пакета

• Среднее количество виртуальных контейнеров на сервер – 200

• Количество серверов 10-40

Проблемы• Установка security-патча на все контейнеры

занимает очень много времени• Многократная дупликация данных (70%

одинаковых данных)• Создание и особенно восстановление из backup

достаточно затратны• Пользователь не может влиять на процесс и

расписание обновлений

Решение• Ушли от монолитной архитектуры контейнеров• Разделили контейнеры на:

• Общие данные/движки: Java, Tomcat, MySQL…• Приватные данные(специфичные конфигурации):• Приложений(настройки, дистрибутивы) • ОС

Решение• Все версии движков находятся на каждом

физическом сервере в специальном каталоге• На всех физических серверах всегда одинаковый

набор версий всех движков• В контейнерах множественные mount points на

конкретные версии движков• В контейнерах находятся только приватные

данные

Решение

SpaceWalk

Результат• Обновление движка\применение security path:

• Remount• Мгновенно

• Значительно сэкономили место и время обновления

• Можно переключиться на любую версию движка – процесс полностью безопасен

• Пользователи могут выбрать применять или нет обновления движков

Обновление физического сервера• Если требуется перезагрузка – применяем kexec

Обновление ОС в контейнерах• Заливаем новый Virtuozzo template на сервер• Меняем template у каждого контейнера• Быстро, но с Downtime

Спасибо!Jelastic.com

dl@jelastic.com