Симаков Алексей - Системы управления кластерами

Preview:

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

Экзотика

Симаков Алексей

зам. руководителя отдела эксплуатации

Контакты

@jinrouasimakov@yandex-team.ru

Конец