Симаков Алексей - Системы управления кластерами
TRANSCRIPT
![Page 1: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/1.jpg)
![Page 2: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/2.jpg)
Системы управления кластерами
Симаков Алексей
![Page 3: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/3.jpg)
ru.wikipedia.org
Кластер - разновидность параллельной или распределенной системы, которая состоит из нескольких комьютеров и используется как единый ресурс
![Page 4: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/4.jpg)
4
Сначала было приложение…
App
![Page 5: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/5.jpg)
5
База
App
DB
![Page 6: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/6.jpg)
6
Балансировка
App
DB
App App
LB
![Page 7: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/7.jpg)
7
App
DB
App App
LB
DB
App
LB
Дублирование
![Page 8: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/8.jpg)
8
Адаптация
App
Cache
App App
LB
Cache
App
LB
DB DB
Cache
![Page 9: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/9.jpg)
9
App
Cache
App App
LB
Cache
App
LB
DB DB
Cache
App
Cache
DB
Production Testing
Окружения
![Page 10: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/10.jpg)
10
Задача #1
Управление конфигурацией
Задача #2
Оркестрация
![Page 11: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/11.jpg)
The Heartbleed Bug
1. Обновить openssl 2. Перезапустить сервисы
11
![Page 12: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/12.jpg)
Системы управления кластерами
Chef
![Page 13: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/13.jpg)
13
Лирическое отступление #1
Термины
〉Императивность
〉Декларативность
〉Идемпотентность
![Page 14: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/14.jpg)
Декларация net.core.somaxconn:
sysctl:
- value: 10240
14
Лирическое отступление #1
Императив #! /bin/sh
echo ‘net.core.somaxconn = 10240’ > /etc/sysctl.conf
sysctl -p
![Page 15: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/15.jpg)
15
Лирическое отступление #1
Идемпотентность #! /bin/sh
if grep -q ^net.core.somaxconn /etc/sysctl.conf ; then
sed 's#net.core.somaxconn.*#net.core.somaxconn = 10240#’ \
-i /etc/sysctl.conf ;
else
echo 'net.core.somaxconn = 10240' > sysctl.conf;
fi
![Page 16: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/16.jpg)
Chef 0.10 (2011) Технологии
〉couchdb
〉ruby
〉solr
〉rabbitmq
〉pull only
16
![Page 17: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/17.jpg)
Chef
〉role
〉node
〉environment
〉cookbook
〉recipe
〉attribute
17
![Page 18: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/18.jpg)
18
Лирическое отступление #2
Отделить код от данных
Data Code
![Page 19: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/19.jpg)
19
Лирическое отступление #2
Code
Prod
Test
Dev
![Page 20: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/20.jpg)
Chef 0.12 (2014)
〉postgresql
〉ruby + erlang
〉solr
〉one-liner
〉pull & push
20
![Page 21: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/21.jpg)
21
![Page 22: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/22.jpg)
Системы управления кластерами
Ansible
![Page 23: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/23.jpg)
Ansible
〉python
〉serverless
〉ssh/paramiko
〉yaml
23
![Page 24: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/24.jpg)
Системы управления кластерами
Salt
![Page 25: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/25.jpg)
25
Salt. Execution framework
salt -E ‘hdp.*’ cmd.run uptime
salt -E ‘web.*’ -B 25% cmd.run /etc/init.d/nginx restart
![Page 26: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/26.jpg)
26
Salt. Основы
Grains - информация о локальной системе
States - состояние до которого нужно довести
Pillar - хранилище глобальных переменных
![Page 27: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/27.jpg)
27
Salt. Grains
# salt ‘hdp001g*’ grains.items
hdp001g.yandex.net:
----------
SSDs:
biosreleasedate:
08/08/2013
biosversion:
3.0a
![Page 28: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/28.jpg)
28
Salt. State
/etc/salt/nginx/init.sls nginx: pkg: - installed service: - running - require: - pkg: nginx
![Page 29: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/29.jpg)
29
Salt. Pillar
/srv/pillar/packag es.sls {% if grains['os'] == 'RedHat' %} apache: httpd git: git {% elif grains['os'] == 'Debian' %} apache: apache2 git: git-core {% endif %}
![Page 30: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/30.jpg)
30
Salt. Pillar. #1
/srv/pillar/packag es.sls {% if grains['os'] == 'RedHat' %} apache: httpd git: git {% elif grains['os'] == 'Debian' %} apache: apache2 git: git-core {% endif %}
![Page 31: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/31.jpg)
31
Salt. Pillar. #2
apache: pkg: - installed - name: {{ pillar['apache'] }} git: pkg: - installed - name: {{ pillar['git'] }}
![Page 32: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/32.jpg)
base:
'web*.yandex.net':
- system
- web
'db*..yandex.net':
- system
- mysql
32
Salt.
![Page 33: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/33.jpg)
33
Salt. Архитектура
конфигурация salt-master
salt-minionsalt-minion
salt-syndic
salt-minion salt-minion
gitfs
zeromq
![Page 34: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/34.jpg)
34
Reclass
Recursive external node classification
![Page 35: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/35.jpg)
35
Salt и reclass
reclass concept salt terminology
nodes hosts
classes (none)
applications states
parameters pillar
environment environment
![Page 36: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/36.jpg)
36
Reclass. Class #1versions.yml
---
applications:
- hadoop.cdh
parameters:
cloudera:
version: 5.0.1
jdk:
package: yandex-jdk7
![Page 37: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/37.jpg)
37
Reclass. Applicationcdh.sls
{% if grains['os'] == 'Ubuntu'%}
/etc/apt/sources.list.d/cdh.list:
file.managed:
- source: salt://hadoop/cdh.list
- template: jinja
- require:
- cmd: cdh-repo-key
- order: 1
- failhard: True
![Page 38: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/38.jpg)
38
Reclass. Class #2hadoop/base.yml
---
classes:
- hadoop.versions
applications:
- hadoop
parameters:
hadoop:
metrics:
- jvm
![Page 39: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/39.jpg)
39
Reclass. Class #3marmot/base.yml
---
classes:
- hadoop.base
parameters:
cluster: marmot
zookeeper:
client_port: 2181
![Page 40: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/40.jpg)
Системы управления кластерами
CFEngine
![Page 41: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/41.jpg)
Особенности
〉свой DSL 〉написан на C 〉легковесный 〉10 миллионов серверов
на Enterprise версии
41
![Page 42: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/42.jpg)
как выбрать?
![Page 43: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/43.jpg)
Системы управления кластерами
Экзотика
![Page 44: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/44.jpg)
juju - service orchestration на Go
NixOS - функциональный подход к
управлению пакетами
44
Экзотика
![Page 45: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/45.jpg)
Симаков Алексей
зам. руководителя отдела эксплуатации
Контакты
![Page 46: Симаков Алексей - Системы управления кластерами](https://reader036.vdocuments.net/reader036/viewer/2022081404/5594a48c1a28abd9158b4592/html5/thumbnails/46.jpg)
Конец