Upload
yandex
View
203
Download
3
Embed Size (px)
Citation preview
Системы управления кластерами
Симаков Алексей
ru.wikipedia.org
Кластер - разновидность параллельной или распределенной системы, которая состоит из нескольких комьютеров и используется как единый ресурс
4
Сначала было приложение…
App
5
База
App
DB
6
Балансировка
App
DB
App App
LB
7
App
DB
App App
LB
DB
App
LB
Дублирование
8
Адаптация
App
Cache
App App
LB
Cache
App
LB
DB DB
Cache
9
App
Cache
App App
LB
Cache
App
LB
DB DB
Cache
App
Cache
DB
Production Testing
Окружения
10
Задача #1
Управление конфигурацией
Задача #2
Оркестрация
The Heartbleed Bug
1. Обновить openssl 2. Перезапустить сервисы
11
Системы управления кластерами
Chef
13
Лирическое отступление #1
Термины
〉Императивность
〉Декларативность
〉Идемпотентность
Декларация net.core.somaxconn:
sysctl:
- value: 10240
14
Лирическое отступление #1
Императив #! /bin/sh
echo ‘net.core.somaxconn = 10240’ > /etc/sysctl.conf
sysctl -p
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
Chef 0.10 (2011) Технологии
〉couchdb
〉ruby
〉solr
〉rabbitmq
〉pull only
16
Chef
〉role
〉node
〉environment
〉cookbook
〉recipe
〉attribute
17
18
Лирическое отступление #2
Отделить код от данных
Data Code
19
Лирическое отступление #2
Code
Prod
Test
Dev
Chef 0.12 (2014)
〉postgresql
〉ruby + erlang
〉solr
〉one-liner
〉pull & push
20
21
Системы управления кластерами
Ansible
Ansible
〉python
〉serverless
〉ssh/paramiko
〉yaml
23
Системы управления кластерами
Salt
25
Salt. Execution framework
salt -E ‘hdp.*’ cmd.run uptime
salt -E ‘web.*’ -B 25% cmd.run /etc/init.d/nginx restart
26
Salt. Основы
Grains - информация о локальной системе
States - состояние до которого нужно довести
Pillar - хранилище глобальных переменных
27
Salt. Grains
# salt ‘hdp001g*’ grains.items
hdp001g.yandex.net:
----------
SSDs:
biosreleasedate:
08/08/2013
biosversion:
3.0a
28
Salt. State
/etc/salt/nginx/init.sls nginx: pkg: - installed service: - running - require: - pkg: nginx
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 %}
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 %}
31
Salt. Pillar. #2
apache: pkg: - installed - name: {{ pillar['apache'] }} git: pkg: - installed - name: {{ pillar['git'] }}
base:
'web*.yandex.net':
- system
- web
'db*..yandex.net':
- system
- mysql
32
Salt.
33
Salt. Архитектура
конфигурация salt-master
salt-minionsalt-minion
salt-syndic
salt-minion salt-minion
gitfs
zeromq
34
Reclass
Recursive external node classification
35
Salt и reclass
reclass concept salt terminology
nodes hosts
classes (none)
applications states
parameters pillar
environment environment
36
Reclass. Class #1versions.yml
---
applications:
- hadoop.cdh
parameters:
cloudera:
version: 5.0.1
jdk:
package: yandex-jdk7
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
38
Reclass. Class #2hadoop/base.yml
---
classes:
- hadoop.versions
applications:
- hadoop
parameters:
hadoop:
metrics:
- jvm
39
Reclass. Class #3marmot/base.yml
---
classes:
- hadoop.base
parameters:
cluster: marmot
zookeeper:
client_port: 2181
Системы управления кластерами
CFEngine
Особенности
〉свой DSL 〉написан на C 〉легковесный 〉10 миллионов серверов
на Enterprise версии
41
как выбрать?
Системы управления кластерами
Экзотика
juju - service orchestration на Go
NixOS - функциональный подход к
управлению пакетами
44
Экзотика
Симаков Алексей
зам. руководителя отдела эксплуатации
Контакты
Конец