Samba/Cluster: различия между версиями

Материал из ALT Linux Wiki
(Новая страница: «{{stub}} == Описание == В этой статье рассмотрим обеспечение высокой доступности сервиса Samba. Дл...»)
 
Строка 8: Строка 8:
* 192.168.135.251 - виртуальный IP по которому будет отвечать один из узлов
* 192.168.135.251 - виртуальный IP по которому будет отвечать один из узлов
На каждом узле доступно общее блочное устройство {{path|/dev/sdb}}, настроен hostname и в файле {{path|/etc/hosts}} прописано соответствие адреса имени. Так же настроен взаимный беспарольный root-доступ для первоначальной инициализации кластера.
На каждом узле доступно общее блочное устройство {{path|/dev/sdb}}, настроен hostname и в файле {{path|/etc/hosts}} прописано соответствие адреса имени. Так же настроен взаимный беспарольный root-доступ для первоначальной инициализации кластера.
== Установка и настройка Pacemaker ==
== Настройка Pacemaker ==
Установим необходимые пакеты на всех узлах:
Установим необходимые пакеты на всех узлах:
<pre># apt-get install pacemaker</pre>
<pre># apt-get install pacemaker</pre>
Строка 15: Строка 15:
На одном из узлов инициализируем кластер:
На одном из узлов инициализируем кластер:
<pre># crm cluster init nodes=samba01,samba02</pre>
<pre># crm cluster init nodes=samba01,samba02</pre>
Зададим имя кластера, для этого в добавим в файле {{path|/etc/corosync/corosync.conf}} следующий параметр:
<pre>totem {
...
cluster_name: samba_cluster
...
}</pre>
Применим конфигурацию corosync текущего узла на всех узлах:
<pre># crm corosync push
OK: samba02</pre>
Добавим сервисы в автозагрузку:
<pre># systemctl enable corosync
# systemctl enable pacemaker</pre>
Перезагрузимся и проверим состояние кластера:
<pre># crm status
Stack: corosync
Current DC: samba01 (version 1.1.16-alt1-94ff4df) - partition with quorum
Last updated: Wed Apr 12 10:52:47 2017
Last change: Wed Apr 12 10:46:47 2017 by hacluster via crmd on samba01
2 nodes configured
0 resources configured
Online: [ samba01 samba02 ]
No resources</pre>
== Настройка STONITH ==
Для корректной работы узлов с общим хранилищем, необходимо настроить механизм STONITH. Этот механизм позволяет кластеру физически отключить неотвечающий на запросы узел, чтобы не повредить данные на общем хранилище.<br>
Установим необходимые пакеты:
<pre># apt-get install cluster-glue-stonith</pre>
Проверим наличие необходимых ресурсов в pacemaker:
<pre># crm ra classes | grep stonith
stonith</pre>
Посмотреть доступные STONITH устройств можно командой:
<pre># stonith -L</pre>
Для примера выберем устройство meatware, которое реализует механизм с помощью сообщений на консоль, после которого оператор должен выключить узел вручную.
Описание устройств можно посмотреть командой:
<pre># stonith -t meatware -h</pre>
Обязательные параметры устройства можно посмотреть командой:
<pre># stonith -t meatware -n
hostlist 
</pre>
В нашем случае обязательный параметр только hostlist задающий имена узлов которые от может убить.<br>
Создадим для каждого узла отдельный ресурс:
<pre># configure primitive smb-meat-01 stonith:meatware params hostlist=samba01
# configure primitive smb-meat-02 stonith:meatware params hostlist=samba02</pre>
Запретим ресурсу стартовать на узле который он должен убивать:
<pre># crm configure location l-st-meat-01 smb-meat-01 -inf: samba01
# crm configure location l-st-meat-02 smb-meat-02 -inf: samba02</pre>
Включим механизм STONITH:
<pre># crm configure property stonith-enabled=true</pre>
Проверить работу механизма STONITH можно командой:
<pre># stonith_admin --reboot samba01</pre>
После настройки STONITH наш кластер будет выглядеть так:
<pre># crm status
...
Full list of resources:
smb-meat-01 (stonith:meatware): Started samba02
smb-meat-02 (stonith:meatware): Started samba01</pre>
== Настройка Cluster LVM ==
Установим необходимые пакеты:
<pre># apt-get install clvm</pre>
Сервисами DLM и CLVM должен управлять Pacemaker, они не должны запускаться автоматически:
<pre># systemctl disable dlm
# systemctl disable lvm2-clvmd</pre>
На каждом узле включаем поддержку кластера LVM:
<pre># lvmconf --enable-cluster</pre>
Проверяем включилась ли она:
<pre># cat /etc/lvm/lvm.conf | grep "locking_type ="
    locking_type = 3</pre>
Создаем ресурс для DLM:
<pre># crm configure primitive dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence</pre>
Клонируем ресурс DLM:
<pre># crm configure clone clonedlm dlm meta interleave=true ordered=true</pre>
Создаем ресурс для CLVM:
<pre># crm configure primitive clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence</pre>
Клонируем ресурс CLVM:
<pre># crm configure clone cloneclvmd clvmd meta interleave=true ordered=true</pre>
Проверим запустились ли ресурсы:
<pre># crm resource show</pre>

Версия от 16:32, 12 апреля 2017

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Описание

В этой статье рассмотрим обеспечение высокой доступности сервиса Samba. Для обеспечения высокой доступности мы будет использовать общее хранилище, которое будет доступно одновременно всем серверам в кластере. Для синхронизации доступа серверов к общему хранилищу используется DLM (распределенный менеджер блокировок). В качестве кластерной файловой системы будем использовать GFS2, но она не работает напрямую с блочными устройствами, поэтому нам придется использовать кластерную реализацию LVM. Для механизма блокировок Samba использует TBD (trivial data base), нам понадобится его кластерная реализация CTDB. CTDB будет управлять переносом IP-адреса и запуском сервиса Samba. Pacemaker будет управлять следующими ресурсами: DLM, CLVM, GFS2, CTDB.

Тестовая конфигурация

Рассмотрим следующую конфигурацию:

  • samba01 - первый узел кластера (IP 192.168.135.221/24 ens18)
  • samba02 - второй узел кластера (IP 192.168.135.223/24 ens18)
  • 192.168.135.251 - виртуальный IP по которому будет отвечать один из узлов

На каждом узле доступно общее блочное устройство /dev/sdb, настроен hostname и в файле /etc/hosts прописано соответствие адреса имени. Так же настроен взаимный беспарольный root-доступ для первоначальной инициализации кластера.

Настройка Pacemaker

Установим необходимые пакеты на всех узлах:

# apt-get install pacemaker

Для управления кластером будем использовать утилиту crmsh:

# apt-get install crmsh python-module-yaml

На одном из узлов инициализируем кластер:

# crm cluster init nodes=samba01,samba02

Зададим имя кластера, для этого в добавим в файле /etc/corosync/corosync.conf следующий параметр:

totem {
...
cluster_name: samba_cluster
...
}

Применим конфигурацию corosync текущего узла на всех узлах:

# crm corosync push
OK: samba02

Добавим сервисы в автозагрузку:

# systemctl enable corosync
# systemctl enable pacemaker

Перезагрузимся и проверим состояние кластера:

# crm status
Stack: corosync
Current DC: samba01 (version 1.1.16-alt1-94ff4df) - partition with quorum
Last updated: Wed Apr 12 10:52:47 2017
Last change: Wed Apr 12 10:46:47 2017 by hacluster via crmd on samba01
2 nodes configured
0 resources configured
Online: [ samba01 samba02 ]
No resources

Настройка STONITH

Для корректной работы узлов с общим хранилищем, необходимо настроить механизм STONITH. Этот механизм позволяет кластеру физически отключить неотвечающий на запросы узел, чтобы не повредить данные на общем хранилище.
Установим необходимые пакеты:

# apt-get install cluster-glue-stonith

Проверим наличие необходимых ресурсов в pacemaker:

# crm ra classes | grep stonith
stonith

Посмотреть доступные STONITH устройств можно командой:

# stonith -L

Для примера выберем устройство meatware, которое реализует механизм с помощью сообщений на консоль, после которого оператор должен выключить узел вручную. Описание устройств можно посмотреть командой:

# stonith -t meatware -h

Обязательные параметры устройства можно посмотреть командой:

# stonith -t meatware -n
hostlist  

В нашем случае обязательный параметр только hostlist задающий имена узлов которые от может убить.
Создадим для каждого узла отдельный ресурс:

# configure primitive smb-meat-01 stonith:meatware params hostlist=samba01
# configure primitive smb-meat-02 stonith:meatware params hostlist=samba02

Запретим ресурсу стартовать на узле который он должен убивать:

# crm configure location l-st-meat-01 smb-meat-01 -inf: samba01
# crm configure location l-st-meat-02 smb-meat-02 -inf: samba02

Включим механизм STONITH:

# crm configure property stonith-enabled=true

Проверить работу механизма STONITH можно командой:

# stonith_admin --reboot samba01

После настройки STONITH наш кластер будет выглядеть так:

# crm status
...
Full list of resources:
 smb-meat-01	(stonith:meatware):	Started samba02
 smb-meat-02	(stonith:meatware):	Started samba01

Настройка Cluster LVM

Установим необходимые пакеты:

# apt-get install clvm

Сервисами DLM и CLVM должен управлять Pacemaker, они не должны запускаться автоматически:

# systemctl disable dlm
# systemctl disable lvm2-clvmd

На каждом узле включаем поддержку кластера LVM:

# lvmconf --enable-cluster

Проверяем включилась ли она:

# cat /etc/lvm/lvm.conf | grep "locking_type ="
    locking_type = 3

Создаем ресурс для DLM:

# crm configure primitive dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence

Клонируем ресурс DLM:

# crm configure clone clonedlm dlm meta interleave=true ordered=true

Создаем ресурс для CLVM:

# crm configure primitive clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence

Клонируем ресурс CLVM:

# crm configure clone cloneclvmd clvmd meta interleave=true ordered=true

Проверим запустились ли ресурсы:

# crm resource show