SlideShare a Scribd company logo
Четвертая конференция
разработчиков ПО«DevParty»
2 апреля 2016 года, Вологда
Полицын Анатолий
Корпоративный хостинг на Докере
Синапс - агентство интернет-
маркетинга.
Конференция разработчиков
«DevParty» 2017
www.devparty.ru
Проект
● Было:
- монолиты с isp-manager
- reg.ru
- 1 клиент = 70% ресурсов
- клиенты на своих серверах
● Минусы:
- isp - дорого
- монолит падает целиком
- универсально = много кнопок
● Реализация 6 мес:
- Настарт (апрель)
- Внимание (июнь)
- Марш (август)
● Стало:
- 150 сайтов, пол тыщи докеров
на нескольких серверах и
полгода продакшена.
- включение сайта 2 клика
- добавление сервера - 15 минут
Задачи
● Хостинг разных сайтов
- место: от визитки до 50гб
- cpu: от ленда до 4к/сутки
● Бекапы
- в другие ДЦ
- 5гб + полное управление
- бэкап-план
● Серверы:
- Европа и РФ
- большие и микро VDS
- клиентские серверы
● Менеджерам
- развертывание в пару кликов
- автоматизация
- тарифы и лимиты
● Программистам
- php 7.0
- drush + drupal-console
- доступ к логам
- единообразие
● DevOps:
- восстановление из бекапа
- миграция между серверами
- Continuous integration
● Безопасность
Концепция
● Drupal 8
- ajax в 3 строчки
● Минимум кликов
- добавление сайта
- развёртывание друпала
● 2 типа команд
- REST: для работы с докером
- FS: mkdir, cp, echo, git clone
Архитектура
nginx-proxy:
● 1-php-fpm ---> 1-mysql
● 2-php-fpm ---> 2-mysql
● 3-php-fpm ---> 3-mysql
● 4-php-fpm ---> 4-mysql
● 5-php-fpm ---> 5-mysql
1. Добавить сайт
2.1 Подготовить хостинг
1. Директория + начальные настройки
- mysql, php, ssmtp, crontab
= git clone
https://github.com/politsin/docker-starter
2. Создание + запуск контейнеров:
- MySQL + php-fpm
= команды через REST
3. Настройки nginx
- запись файла + restart контейнера
2.2 Докеры
MySQL
● db_name и db_user всегда drupal
● root_pass и user_pass разные
● Доступ к mysql только через
сокет, смонтированный к php-fpm
unix:/run/mysqld/mysqld.sock
● 1 база данных = файловое
архивирование и восстановление
Php-fpm
● Supervisor + 3 процесса
- php-fpm, sshd, cron
● сайт всегда /var/www/html
● mysql на привычном месте
● /etc/* в режиме read-only
2.3 Nginx-proxy
● include /etc/nginx/vhosts/*/*.conf;
● root /opt/sites/238-synapse/www-home/html;
error_log /opt/sites/238-synapse/www-home/log/nginx-error.log warn;
access_log /opt/sites/238-synapse/www-home/log/nginx-access.log;
● location ~ .php(/|$) { # Fastcgi php-fpm
fastcgi_pass unix:/opt/sites/238-synapse/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name; ####
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
● #$document_root$fastcgi_script_name >> /var/www/html/$fastcgi_script_name
Кнопки
1. Создать приложение
2. Пройтись по процессу
создания сайта
3. Скачать друпал
4. Перейти в установку
Плюсы
1. Друпал!
- доработка функционала
- добавление плюшек
2. Быстро и просто
- создать
- сделать всё что хочешь
- снести и создать новый
3. Кастомные конфигурации
- разные настройки php и mysql
- доработанные имаджи
4. Безопасность by design
+ доступ по ключам и ~/.ssh:ro
5. Единообразие окружения
Минусы
● Ресурсы MEM
- MySql - 200мб (отдельный сервер на каждый сайт)
- Php - 60мб на приложение + opcache
● Старьё и зоопарк:
Пять drupal-6 + 3 клиентские джумлы ушли в лепразорий на reg.ru
Бекапы и восстановление → AWS наше всё!
Бэкап-план
● Ежедневные - 3 дня
● Еженедельные - 15 дней
● Ежемесячные - 70 дней
● Полугодовые - 500 дней
● Навсегда
● s3 конфиг на уровне мастер-
аккаунта
● 5 докеров для бекапа
● s3 lifecicle
● Директория “подготовка к бекапу”
- lifecycle 1 день
● Докер для восстановления
● просто бекап файлов
в том числе и файлов mysql
● базу всегда зовут одинаково, но
пароль разный
Цикл жизни
1. ci: dev-stage-prod
2. dev-prod-del
3. сайт → AWS s3 → сайт2
Dev - режим разработки
● drupal site:mode dev
● ngnix css, js, img* - expires OFF
● mysql - лимиты
● adminer (phpmyadmin)
Prod - продакшен:
● drupal site:mode prod
● www.мойсайт.рф
● https
● ngnix expires ONN
● cron
Del - удаление проекта:
● Чистка: логи, .composer,
.drush/cache, drush-backups
● Бекап на S3
● Удаление контейнеров 7шт
● Удаление файловой системы и
nginx- конфига в корзину
Добавление сервера
1. apt-get install git, apache2-utils, htop
2. Docker + REST
3. Общесистемные контейнеры
- nginx-proxy
- Exim4
4. Имаджи
- docker pull mysql:5.6 tutum/dockup
- docker build docker-php:1.2
Плюшки
● Контроль доступа
● Ссылка на авторизацию менеджерам
● Вызов удаленных команд
● https + LetsEncrypt
● Кастомные конфигурации nginx
● Dev/Prod конфигурация
- php / mysql / ssmtp / supervisord
● Приложения: redmine, mailhog …
● Очистка
● Update контейнера
Нерешенные вопросы
ХЗ
● memory limit
● exim4
● лог-ротатор
● cron
Лень
● распределенный LetsEncrypt
● Запись docker-compose
● Dev/Prod конфигурация

More Related Content

What's hot

"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов  (..."Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов  (...
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
AvitoTech
 
HBase on Dev{Highload}
HBase on Dev{Highload}HBase on Dev{Highload}
HBase on Dev{Highload}
Alex Chistyakov
 
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Ontico
 
Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015
OSLL
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
Badoo Development
 
Инфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.jsИнфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.js
Stanislav Gumeniuk
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
Ivan Grishaev
 
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Ontico
 
Применяем Ansible
Применяем AnsibleПрименяем Ansible
Применяем Ansible
Alexander Svetkin
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Andrew Avdeev
 
07 virtual hosts_ru
07 virtual hosts_ru07 virtual hosts_ru
07 virtual hosts_ru
mcroitor
 
High Availability в жизни обычного разработчика
High Availability в жизни обычного разработчикаHigh Availability в жизни обычного разработчика
High Availability в жизни обычного разработчика
Sumy PHP User Grpoup
 
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
Kirill Danilov
 
Презентация доклада Лавриненко
Презентация доклада ЛавриненкоПрезентация доклада Лавриненко
Презентация доклада ЛавриненкоLuxoftTraining
 
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesTMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
Iosif Itkin
 
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ..."nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
MoscowJS
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Ontico
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
Provectus
 

What's hot (20)

"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов  (..."Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов  (...
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
 
HBase on Dev{Highload}
HBase on Dev{Highload}HBase on Dev{Highload}
HBase on Dev{Highload}
 
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
 
Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
Инфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.jsИнфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.js
 
Drupal Do
Drupal DoDrupal Do
Drupal Do
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
Node.js (RichClient)
 Node.js (RichClient) Node.js (RichClient)
Node.js (RichClient)
 
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
 
Применяем Ansible
Применяем AnsibleПрименяем Ansible
Применяем Ansible
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
 
07 virtual hosts_ru
07 virtual hosts_ru07 virtual hosts_ru
07 virtual hosts_ru
 
High Availability в жизни обычного разработчика
High Availability в жизни обычного разработчикаHigh Availability в жизни обычного разработчика
High Availability в жизни обычного разработчика
 
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
 
Презентация доклада Лавриненко
Презентация доклада ЛавриненкоПрезентация доклада Лавриненко
Презентация доклада Лавриненко
 
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesTMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
 
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ..."nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 

Viewers also liked

Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностейДенис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Dev_Party
 
Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...
Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...
Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...
Dev_Party
 
Анна Крижановская, Playrix — Продвижение мобильных приложений: Deep Dive
Анна Крижановская, Playrix — Продвижение мобильных приложений: Deep DiveАнна Крижановская, Playrix — Продвижение мобильных приложений: Deep Dive
Анна Крижановская, Playrix — Продвижение мобильных приложений: Deep Dive
Dev_Party
 
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
Dev_Party
 
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
Dev_Party
 
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программистВладимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Dev_Party
 
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
Dev_Party
 
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
Dev_Party
 
Игорь Иванов, Playrix — Статистические предсказания игровой активности
Игорь Иванов, Playrix — Статистические предсказания игровой активностиИгорь Иванов, Playrix — Статистические предсказания игровой активности
Игорь Иванов, Playrix — Статистические предсказания игровой активности
Dev_Party
 
Игорь Цупко, Notamedia — Документация? Не слышал
Игорь Цупко, Notamedia — Документация? Не слышалИгорь Цупко, Notamedia — Документация? Не слышал
Игорь Цупко, Notamedia — Документация? Не слышал
Dev_Party
 
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
Dev_Party
 
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Dev_Party
 
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Dev_Party
 
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФСРоман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Dev_Party
 

Viewers also liked (14)

Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностейДенис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
 
Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...
Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...
Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...
 
Анна Крижановская, Playrix — Продвижение мобильных приложений: Deep Dive
Анна Крижановская, Playrix — Продвижение мобильных приложений: Deep DiveАнна Крижановская, Playrix — Продвижение мобильных приложений: Deep Dive
Анна Крижановская, Playrix — Продвижение мобильных приложений: Deep Dive
 
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
 
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
 
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программистВладимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
 
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
 
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
 
Игорь Иванов, Playrix — Статистические предсказания игровой активности
Игорь Иванов, Playrix — Статистические предсказания игровой активностиИгорь Иванов, Playrix — Статистические предсказания игровой активности
Игорь Иванов, Playrix — Статистические предсказания игровой активности
 
Игорь Цупко, Notamedia — Документация? Не слышал
Игорь Цупко, Notamedia — Документация? Не слышалИгорь Цупко, Notamedia — Документация? Не слышал
Игорь Цупко, Notamedia — Документация? Не слышал
 
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
 
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
 
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
 
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФСРоман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
 

Similar to Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хостинг на Docker

Перевод новостного приложения на БД PostgreSQL
Перевод новостного приложения на БД PostgreSQLПеревод новостного приложения на БД PostgreSQL
Перевод новостного приложения на БД PostgreSQL
Dmitry Kremer
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
pgdayrussia
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Ontico
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Mail.ru Group
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...DrupalCamp MSK
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
PavelKonotopov
 
PUG #9 at OWOX: Поиск узких мест в приложении на PHP
PUG #9 at OWOX: Поиск узких мест в приложении на PHP                PUG #9 at OWOX: Поиск узких мест в приложении на PHP
PUG #9 at OWOX: Поиск узких мест в приложении на PHP
Анна Магас
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера
Roman Brovko
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Nikita Borzykh
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Ontico
 
Крыша 2.0
Крыша 2.0Крыша 2.0
Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.DrupalForumZP2012
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
ITCrowd Almaty
 
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Mail.ru Group
 
Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Mikhail Davydov
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
Александр Сигачев
 

Similar to Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хостинг на Docker (20)

Перевод новостного приложения на БД PostgreSQL
Перевод новостного приложения на БД PostgreSQLПеревод новостного приложения на БД PostgreSQL
Перевод новостного приложения на БД PostgreSQL
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
 
PUG #9 at OWOX: Поиск узких мест в приложении на PHP
PUG #9 at OWOX: Поиск узких мест в приложении на PHP                PUG #9 at OWOX: Поиск узких мест в приложении на PHP
PUG #9 at OWOX: Поиск узких мест в приложении на PHP
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
 
Крыша 2.0
Крыша 2.0Крыша 2.0
Крыша 2.0
 
Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
 
Sivko
SivkoSivko
Sivko
 
Rpm5
Rpm5Rpm5
Rpm5
 
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
 
Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 

Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хостинг на Docker

  • 1. Четвертая конференция разработчиков ПО«DevParty» 2 апреля 2016 года, Вологда Полицын Анатолий Корпоративный хостинг на Докере Синапс - агентство интернет- маркетинга. Конференция разработчиков «DevParty» 2017 www.devparty.ru
  • 2. Проект ● Было: - монолиты с isp-manager - reg.ru - 1 клиент = 70% ресурсов - клиенты на своих серверах ● Минусы: - isp - дорого - монолит падает целиком - универсально = много кнопок ● Реализация 6 мес: - Настарт (апрель) - Внимание (июнь) - Марш (август) ● Стало: - 150 сайтов, пол тыщи докеров на нескольких серверах и полгода продакшена. - включение сайта 2 клика - добавление сервера - 15 минут
  • 3. Задачи ● Хостинг разных сайтов - место: от визитки до 50гб - cpu: от ленда до 4к/сутки ● Бекапы - в другие ДЦ - 5гб + полное управление - бэкап-план ● Серверы: - Европа и РФ - большие и микро VDS - клиентские серверы ● Менеджерам - развертывание в пару кликов - автоматизация - тарифы и лимиты ● Программистам - php 7.0 - drush + drupal-console - доступ к логам - единообразие ● DevOps: - восстановление из бекапа - миграция между серверами - Continuous integration ● Безопасность
  • 4. Концепция ● Drupal 8 - ajax в 3 строчки ● Минимум кликов - добавление сайта - развёртывание друпала ● 2 типа команд - REST: для работы с докером - FS: mkdir, cp, echo, git clone Архитектура nginx-proxy: ● 1-php-fpm ---> 1-mysql ● 2-php-fpm ---> 2-mysql ● 3-php-fpm ---> 3-mysql ● 4-php-fpm ---> 4-mysql ● 5-php-fpm ---> 5-mysql
  • 6. 2.1 Подготовить хостинг 1. Директория + начальные настройки - mysql, php, ssmtp, crontab = git clone https://github.com/politsin/docker-starter 2. Создание + запуск контейнеров: - MySQL + php-fpm = команды через REST 3. Настройки nginx - запись файла + restart контейнера
  • 7. 2.2 Докеры MySQL ● db_name и db_user всегда drupal ● root_pass и user_pass разные ● Доступ к mysql только через сокет, смонтированный к php-fpm unix:/run/mysqld/mysqld.sock ● 1 база данных = файловое архивирование и восстановление Php-fpm ● Supervisor + 3 процесса - php-fpm, sshd, cron ● сайт всегда /var/www/html ● mysql на привычном месте ● /etc/* в режиме read-only
  • 8. 2.3 Nginx-proxy ● include /etc/nginx/vhosts/*/*.conf; ● root /opt/sites/238-synapse/www-home/html; error_log /opt/sites/238-synapse/www-home/log/nginx-error.log warn; access_log /opt/sites/238-synapse/www-home/log/nginx-access.log; ● location ~ .php(/|$) { # Fastcgi php-fpm fastcgi_pass unix:/opt/sites/238-synapse/run/php/php-fpm.sock; fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name; #### fastcgi_param SCRIPT_NAME $fastcgi_script_name; ● #$document_root$fastcgi_script_name >> /var/www/html/$fastcgi_script_name
  • 9. Кнопки 1. Создать приложение 2. Пройтись по процессу создания сайта 3. Скачать друпал 4. Перейти в установку Плюсы 1. Друпал! - доработка функционала - добавление плюшек 2. Быстро и просто - создать - сделать всё что хочешь - снести и создать новый 3. Кастомные конфигурации - разные настройки php и mysql - доработанные имаджи 4. Безопасность by design + доступ по ключам и ~/.ssh:ro 5. Единообразие окружения
  • 10. Минусы ● Ресурсы MEM - MySql - 200мб (отдельный сервер на каждый сайт) - Php - 60мб на приложение + opcache ● Старьё и зоопарк: Пять drupal-6 + 3 клиентские джумлы ушли в лепразорий на reg.ru
  • 11. Бекапы и восстановление → AWS наше всё! Бэкап-план ● Ежедневные - 3 дня ● Еженедельные - 15 дней ● Ежемесячные - 70 дней ● Полугодовые - 500 дней ● Навсегда ● s3 конфиг на уровне мастер- аккаунта ● 5 докеров для бекапа ● s3 lifecicle ● Директория “подготовка к бекапу” - lifecycle 1 день ● Докер для восстановления ● просто бекап файлов в том числе и файлов mysql ● базу всегда зовут одинаково, но пароль разный
  • 12. Цикл жизни 1. ci: dev-stage-prod 2. dev-prod-del 3. сайт → AWS s3 → сайт2 Dev - режим разработки ● drupal site:mode dev ● ngnix css, js, img* - expires OFF ● mysql - лимиты ● adminer (phpmyadmin) Prod - продакшен: ● drupal site:mode prod ● www.мойсайт.рф ● https ● ngnix expires ONN ● cron Del - удаление проекта: ● Чистка: логи, .composer, .drush/cache, drush-backups ● Бекап на S3 ● Удаление контейнеров 7шт ● Удаление файловой системы и nginx- конфига в корзину
  • 13. Добавление сервера 1. apt-get install git, apache2-utils, htop 2. Docker + REST 3. Общесистемные контейнеры - nginx-proxy - Exim4 4. Имаджи - docker pull mysql:5.6 tutum/dockup - docker build docker-php:1.2
  • 14. Плюшки ● Контроль доступа ● Ссылка на авторизацию менеджерам ● Вызов удаленных команд ● https + LetsEncrypt ● Кастомные конфигурации nginx ● Dev/Prod конфигурация - php / mysql / ssmtp / supervisord ● Приложения: redmine, mailhog … ● Очистка ● Update контейнера
  • 15.
  • 16.
  • 17.
  • 18. Нерешенные вопросы ХЗ ● memory limit ● exim4 ● лог-ротатор ● cron Лень ● распределенный LetsEncrypt ● Запись docker-compose ● Dev/Prod конфигурация