• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Другая виртуализация
 

Другая виртуализация

on

  • 1,016 views

Модным ныне словом «виртуализация» сейчас называют различные обёртки аппаратной виртуализации, однако этот ...

Модным ныне словом «виртуализация» сейчас называют различные обёртки аппаратной виртуализации, однако этот термин намного старше и более всеохватывающий. На уровне ознакомления с технологией мы поговорим о виртуализации ресурсов в кластере и на примере pacemaker.

Statistics

Views

Total Views
1,016
Views on SlideShare
247
Embed Views
769

Actions

Likes
0
Downloads
7
Comments
0

2 Embeds 769

http://tech.yandex.ru 752
https://tech.yandex.ru 17

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Другая виртуализация Другая виртуализация Presentation Transcript

    • Другая сторона виртуализации Sergey Vasilenko
    • Готовимся к переезду в облако Возьмем проект Visitor WEB-frontend business logic database Три сервера8 Задача — перенести в облако, для:8 • увеличения масштабируемости8 • уменьшения времени простоя при обслуживании8 • повышения отказоустойчивости8 • оптимизации расходов на содержание проекта8 8 Напрашивается решение — начать с трех VM в облаке.
    • Готовимся к переезду в облако WEB-frontend ext.IP business logic database int.IP-addr int.IP-addr Business logic. software Database int.IP HTTP-server Для нормальной работы нашим серверам надо:8 • сетевая связанность (IP адреса, внутренняя сеть, канал в Internet)8 • Среда исполнения основной задачи8 8 >> Мы что-то забыли???
    • Готовимся к переезду в облако WEB-frontend business logic database int.IP-addr int.IP-addr HTTP-server Business logic. software Database storage storage storage ext.IP int.IP Да! Мы забыли дисковую подсистему. 8 8 8 Плохая идея:8 • использовать дисковые разделы виртуальных машин в облаке8 8 Хорошая идея:8 • воспользоваться сетевым облачным хранилищем
    • Переезд в облако WEB-frontend business logic database int.IP-addr int.IP-addr net.storage+FS net.storage+FS net.storage+FS HTTP-server Business logic. software Database ext.IP int.IP
    • Переезд в облако Что еще мы можем получить от облака:8 • мониторинг состояния VM8 • регулярные бэккапы8 • балансировку входящего траффика8 • защиту от DDOS атак8
    • Переезд в облако Что еще мы можем получить от облака:8 • мониторинг состояния VM8 • регулярные бэккапы8 • балансировку входящего траффика8 • защиту от DDOS8 8 Чего нам облако не даст:8 • резервирования всего того, что крутится внутри наших VM
    • Велосипед давно изобретен! Примерно с 2004 года при активном участии компаний RedHat и Linbit разрабатывается кластерный ресурсменеджер с открытым кодом. 8 Для решения нашей задачи мы можем
 использовать связку Pacemaker / Corosync
    • Resource-manager Отвечает за своевременный запуск/остановку:8 • в нужной последовательности8 • с соблюдением зависимостей между ресурсами8 • распределяя нагрузку между нодами кластера8 8 Обеспечивает отказоустойчивость:8 • мониторя запущенные ресурсы8 • контролируя состояния нод8 • отслеживая кворум8 8 Облегчает масштабирование:8 • обеспечивая работу групповых ресурсов8 • реализуя событийную модель
    • Corosync Нижний уровень комуникаций в кластере:8 L Отслеживает состояния нод кластера, принимает решение о наличии или отсутствии кворума (v2)8 L Обеспечивает синхронизацию состояний ресурсов кластера8 L Предоставляет транспортный уровень для сервисных служб более высокого уровня8 8 Имеет три режима работы с сетью: Multicast, Broadcast, Unicast (c перечислением нод кластера в конфиге). 8 /etc/corosync/corosync.conf8 /etc/corosync/service.d/*
    • Corosync. Транспорт. L L L Unicast: все узлы перечислены в конфиге, сообщения передаются от узла к узлу. Все просто, железобетонно. Добавлять и удалять ноды в кластере — неудобно. Broadcast: более удобный способ. Ноды кластера в конфигах не перечисляются, добавляются автоматически. Авторизация — по ключу. Однако этот способ работает только в случае, если все ноды находятся в одном широковещательном ethernetдомене. Если единого L2 сегмента сети нет – этот метод неприемлим. Multicast: тоже удобен. Единый сегмент сети не нужен. Однако коммутаторы должны правильно пропускать мультикаст-траффик.
    • Pacemaker L Контролирует состояние ресурсов L Распределяет ресурсы по нодам кластера L Помогает производить выборы для master/slave ресурсов L Отслеживает кворум L Экстренно выключает ресурсы 8 Работает поверх Corosync.
 Собственных конфигурационных файлов не имеет. Конфигурируется через утилиты командной
 строки с любого узла кластера. 
 Практически мгновенно синхронизирует свою конфигурацию между узлами.
    • Пакеты и утилиты L Corosync 1.xx (1.4.6) L Pacemaker (1.1.10) L PCS (замена устаревшему crmsh)
    • В кластере Ресурсы (все что исполняется на кластере): L Имеют состояние (started, stopped, master...) L Могут быть сгруппированы L Могут зависеть один от другого L Могут быть привязаны к каким-то определенным узлам кластера L Могут иметь атрибуты 8 Ноды (узлы кластера): L Могут иметь атрибуты L Могут иметь состояние 8 Кворум L Может присутствовать или отсутствовать.
    • OCF-скрипты Ресурсы могут управляться: L Upstart L Systemd L Service L LSB L OCF – родное средство Pacemaker /usr/lib/ocf/resource.d/*
    • Ресурсы Обычный ресурс L существует в одном экземпляре L на одной из нод кластера L в процессе жизнедеятельности может мигрировать на другие ноды
    • Атрибуты ресурса L L Обычные атрибуты
 это параметры с которыми ресурс был создан. В принципе на ресурс можно повесить любой атрибут, но создать ресурс с атрибутом, который не упомянут в его Metadata Pacemaker не даст. Meta-атрибуты (служебные)
 это атрибуты, которые имеют значение для Pacemaker’a, но бессмысленны для самого ресурса. Они управляют поведением.
 Например с мета-атрибутом target-role=”Stopped” ресурс будет создан, но не запустится автоматически.
    • Ресурс обыкновенный Создается так: #pcs resource create ClusterIP ocf:heartbeat:IPaddr2 
 ip=192.168.0.120 cidr_netmask=32 
 nic=eth0 mac=AA:BB:CC:00:11:22 
 op monitor interval=5s #pcs status #pcs resource show ClusterIP
    • Ресурсы. Clone. L Обычный ресурс L Clone 8 ресурс, который существует в нескольких экземплярах, по одному на ноду. 8 8 Наиболее частый случай применения – существовать везде.
    • Ресурсы. Clone. #pcs resource create httpd ocf:heartbeat:nginx 
 configfile=/etc/nginx.conf port=80 
 meta target-role=”Stopped” 
 op monitor interval=10s #pcs resource clone httpd 
 notify=true 
 ordered=true 
 clone-max=2 #pcs resource enable httpd 8 #pcs status #pcs resource show httpd #pcs resource show httpd-clone
    • Ресурсы. Master/slave. L Обычный ресурс L Clone L Master/slave 8 Специальный вид Клона, в котором один из ресурсов назначается старшим. Старшинство определяется выборами. Любой экземпляр ресурса может выдвинуть свою кандидатуру. Но утверждает ее и назначает старшего – Pacemaker.
    • Ресурсы. Master/slave. Создается так: #pcs resource create httpd ocf:heartbeat:nginx 
 configfile=/etc/nginx.conf port=80 
 meta target-role=”Stopped” 
 op monitor interval=10s 
 op monitor interval=7s role=”Master” #pcs resource master httpd 
 notify=true 
 master-max=1 
 master-node-max=1 #pcs resource enable httpd 8 #pcs status
    • Мина замедленного действия #pcs resource create ntpd lsb:ntpd 
 meta target-role='Stopped' 
 op monitor interval='60' #pcs resource clone ntpd #pcs resource enable ntpd 8 8 !!! НЕ КЛОНИРУЙТЕ СИСТЕМНЫЙ SSH !!!
    • OCF — а что внутри? Операции L L L L L L L L L L meta-data start stop monitor notify promote demote migrate_to migrate_from reload Коды возврата L L L 8 L L 8 L L L L 8 L 0: OCF_SUCCESS 7: OCF_NOT_RUNNING 8: OCF_RUNNING_MASTER 1: OCF_ERR_GENERIC 9: OCF_FAILED_MASTER 2: 3: 4: 5: OCF_ERR_ARGS OCF_ERR_UNIMPLEMENTED OCF_ERR_PERM OCF_ERR_INSTALLED 6: OCF_ERR_CONFIGURED /usr/lib/ocf/resource.d/*
    • OCF: start/stop Вызванный с этими аргументами ocf-скрипт должен правильно стартовать/останавливать ресурс. 8 Например процесс остановки должен не только гасить ресурс, но и проверять успешно ли прошло гашение. Ждать если надо, и снова проверять. Если ничего не помогает kill -TERM, или даже kill -KILL.
    • OCF: monitor C этим аргументом ocf-скрипт регулярно вызывается для проверки состояния ресурса. Случаи бывают разными. В одном случае стоит всего лишь проверить, что процесс с PIDом из PID-файла действительно запущен, в другом имеет смысл убедиться, что процесс реально работает, а не просто завис и занимает место в памяти. У одного ресурса может быть несколько мониторов, запускающихся через разные промежутки времени, выполняющие различные действия. (depth=NN)
    • OCF: meta-data Эту особую операцию Pacemaker применяет перед стартом ресурса. Он расчитывает получить в ответ XML с описанием какие атрибуты есть у ресурса, какие обязательны, какие операции к нему можно применять и как часто нужно его мониторить. Частоту можно переопределить при создании ресурса. 8 Ответ строго стардартизирован, примеры можно посмотреть запустив OCF-скрипт руками с этим параметром: 8 #OCF_ROOT=/usr/lib/ocf OCF_RESOURCE_INSTANCE=test-1 
 /usr/lib/ocf/resource.d/xxx/test meta-data
    • Теория закончилась Портативная лаборатория быстрого развертывания http://bit.ly/1fejrJS
    • Взаимодействие ресурсов IP address IP address FS FS httpd блочное устройство запрашивается изнутри VM httpd блочное устройство запрашивается через cloud-API, и подается в VM как pluggable device
    • Взаимодействие ресурсов Цепочка ресурсов # pcs resource create IPADDR ocf:heartbeat:Ipaddr2 
 ip=10.0.0.201 nic=eth1 # pcs resource create FS ocf:heartbeat:Dummy
 # pcs resource create HTTPD ocf:heartbeat:nginx # pcs constraint colocation add FS with IPADDR
 # pcs constraint colocation add HTTPD with FS # # # # pcs pcs pcs pcs constraint constraint constraint constraint order order order order start IPADDR then start FS
 start FS then start HTTPD
 stop HTTPD then stop FS
 stop FS then stop IPADDR 8 # pcs status
 # pcs resource enable/disable/move
    • Взаимодействие ресурсов Множественная зависимость # pcs resource create IPADDR ocf:heartbeat:IPaddr2 
 ip=10.0.0.201 nic=eth1 # pcs resource create FS ocf:heartbeat:Dummy
 # pcs resource create HTTPD ocf:heartbeat:nginx # pcs constraint colocation add HTTPD with IPADDR
 # pcs constraint colocation add HTTPD with FS
 # pcs constraint colocation add IPADDR with FS # # # # pcs pcs pcs pcs constraint constraint constraint constraint order order order order start IPADDR then start HTTPD
 start FS then start HTTPD
 stop HTTPD then stop FS
 stop HTTPD then stop IPADDR 8 # pcs resource delete XXX
    • Утилиты диагностики Для мониторинга и отладки у нас есть: L crm_mon L pcs status L pcs config L pcs cluster edit L А для начала неплохо бы проверить сетевую связанность между узлами кластера и синхронизацию времени.
    • Итого: …. Pacemaker – не волшебная таблетка “сделать все хорошо” – это этакий init на стеройдах, способный к эффективной коллективной работе. … включая НДС
    • СПАСИБО! 8 L Pacemaker: http://clusterlabs.org/ L Corosync: http://corosync.github.io/corosync/ L Лаба: http://bit.ly/1fejrJS 8 8 8 svasilenko@mirantis.com Skype: xenolog13