44
Install&Update Processes Dmitry Lazarenko, Director of R&D, Russia [email protected]

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

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: «Механизмы обновления платформы и окружений пользователей в Jelastic»

Install&Update ProcessesDmitry Lazarenko,

Director of R&D, Russia

[email protected]

Page 2: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

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

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

Page 3: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

ANY Java & PHP applications with no code changes required

Page 4: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

Page 5: «Механизмы обновления платформы и окружений пользователей в Jelastic»

Easy to Deploy One-click deployment

Application version

control

Git & SVN support

Maven, Ant & Jenkins

support

Page 6: «Механизмы обновления платформы и окружений пользователей в Jelastic»

Easy to Scale Vertical & Horizontal scaling

Fast resource changes

Easy to Manage Managing application

lifecycle

Control and analyze

Page 7: «Механизмы обновления платформы и окружений пользователей в Jelastic»
Page 8: «Механизмы обновления платформы и окружений пользователей в Jelastic»
Page 9: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

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

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

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

Page 10: «Механизмы обновления платформы и окружений пользователей в Jelastic»

Окружения

Page 11: «Механизмы обновления платформы и окружений пользователей в Jelastic»

Окружения

Page 12: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

Page 13: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

root, 04/23/2013
Перерисовать
Page 14: «Механизмы обновления платформы и окружений пользователей в Jelastic»

Platform Install&Update

Page 15: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

Resolver

Database server

Jelastic Core

Hivext Core

Awaikener

Zabbix app server

Zabbix db server

Logging server

RPM repositoryAutotests server

Page 16: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

Page 17: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

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

Page 18: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

Page 19: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

площадку

Page 20: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

фактора

Page 21: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

• Puppet• Chef• Cfengine• Self-made

Page 22: «Механизмы обновления платформы и окружений пользователей в Jelastic»

Структура Puppet

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

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

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

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

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

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

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

Артефакты

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

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

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

Page 23: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

Page 24: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

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

Page 25: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

Page 26: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

Page 27: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

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

Page 28: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

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

Page 29: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

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

2. Active-Standby (Updating)

3. Standby (Updating)-Active

4. Active-Active

Page 30: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

Page 31: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

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

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

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

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

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

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

Page 32: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

3. Автотесты

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

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

2. Автотесты

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

Page 33: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

Page 34: «Механизмы обновления платформы и окружений пользователей в Jelastic»

Containers patching

Page 35: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

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

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

Page 36: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

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

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

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

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

Page 37: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

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

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

Page 38: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

Page 39: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

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

данные

Page 40: «Механизмы обновления платформы и окружений пользователей в Jelastic»

Решение

Page 41: «Механизмы обновления платформы и окружений пользователей в Jelastic»

SpaceWalk

Page 42: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

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

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

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

Page 43: «Механизмы обновления платформы и окружений пользователей в Jelastic»

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

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

Page 44: «Механизмы обновления платформы и окружений пользователей в Jelastic»

Спасибо!Jelastic.com

[email protected]