46

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

  • Upload
    yandex

  • View
    203

  • Download
    3

Embed Size (px)

Citation preview

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

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

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

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

ru.wikipedia.org

Кластер - разновидность параллельной или распределенной системы, которая состоит из нескольких комьютеров и используется как единый ресурс

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

4

Сначала было приложение…

App

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

5

База

App

DB

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

6

Балансировка

App

DB

App App

LB

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

7

App

DB

App App

LB

DB

App

LB

Дублирование

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

8

Адаптация

App

Cache

App App

LB

Cache

App

LB

DB DB

Cache

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

9

App

Cache

App App

LB

Cache

App

LB

DB DB

Cache

App

Cache

DB

Production Testing

Окружения

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

10

Задача #1

Управление конфигурацией

Задача #2

Оркестрация

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

The Heartbleed Bug

1. Обновить openssl 2. Перезапустить сервисы

11

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

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

Chef

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

13

Лирическое отступление #1

Термины

〉Императивность

〉Декларативность

〉Идемпотентность

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

Декларация net.core.somaxconn:

sysctl:

- value: 10240

14

Лирическое отступление #1

Императив #! /bin/sh

echo ‘net.core.somaxconn = 10240’ > /etc/sysctl.conf

sysctl -p

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

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: Симаков Алексей - Системы управления кластерами

Chef 0.10 (2011) Технологии

〉couchdb

〉ruby

〉solr

〉rabbitmq

〉pull only

16

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

Chef

〉role

〉node

〉environment

〉cookbook

〉recipe

〉attribute

17

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

18

Лирическое отступление #2

Отделить код от данных

Data Code

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

19

Лирическое отступление #2

Code

Prod

Test

Dev

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

Chef 0.12 (2014)

〉postgresql

〉ruby + erlang

〉solr

〉one-liner

〉pull & push

20

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

21

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

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

Ansible

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

Ansible

〉python

〉serverless

〉ssh/paramiko

〉yaml

23

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

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

Salt

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

25

Salt. Execution framework

salt -E ‘hdp.*’ cmd.run uptime

salt -E ‘web.*’ -B 25% cmd.run /etc/init.d/nginx restart

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

26

Salt. Основы

Grains - информация о локальной системе

States - состояние до которого нужно довести

Pillar - хранилище глобальных переменных

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

27

Salt. Grains

# salt ‘hdp001g*’ grains.items

hdp001g.yandex.net:

----------

SSDs:

biosreleasedate:

08/08/2013

biosversion:

3.0a

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

28

Salt. State

/etc/salt/nginx/init.sls nginx: pkg: - installed service: - running - require: - pkg: nginx

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

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: Симаков Алексей - Системы управления кластерами

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: Симаков Алексей - Системы управления кластерами

31

Salt. Pillar. #2

apache: pkg: - installed - name: {{ pillar['apache'] }} git: pkg: - installed - name: {{ pillar['git'] }}

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

base:

'web*.yandex.net':

- system

- web

'db*..yandex.net':

- system

- mysql

32

Salt.

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

33

Salt. Архитектура

конфигурация salt-master

salt-minionsalt-minion

salt-syndic

salt-minion salt-minion

gitfs

zeromq

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

34

Reclass

Recursive external node classification

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

35

Salt и reclass

reclass concept salt terminology

nodes hosts

classes (none)

applications states

parameters pillar

environment environment

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

36

Reclass. Class #1versions.yml

---

applications:

- hadoop.cdh

parameters:

cloudera:

version: 5.0.1

jdk:

package: yandex-jdk7

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

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: Симаков Алексей - Системы управления кластерами

38

Reclass. Class #2hadoop/base.yml

---

classes:

- hadoop.versions

applications:

- hadoop

parameters:

hadoop:

metrics:

- jvm

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

39

Reclass. Class #3marmot/base.yml

---

classes:

- hadoop.base

parameters:

cluster: marmot

zookeeper:

client_port: 2181

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

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

CFEngine

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

Особенности

〉свой DSL 〉написан на C 〉легковесный 〉10 миллионов серверов

на Enterprise версии

41

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

как выбрать?

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

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

Экзотика

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

juju - service orchestration на Go

NixOS - функциональный подход к

управлению пакетами

44

Экзотика

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

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

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

Контакты

@[email protected]

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

Конец