Показаны различия между двумя версиями страницы.
centos_7_samba_cluster [2014/09/24 17:38] metallic [Подключение LVM к кластеру] |
centos_7_samba_cluster [2022/03/25 17:00] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Samba Cluster ====== | ||
- | ===== Введение ===== | ||
- | Предоставление файловых сервисов пользователям является типичной задачей и трудно найти офисную сеть в которой такие сервисы не работают. Наиболее распространенные протоколы - **NFS**(сетевая файловая система) и **CIFS**(windows shares и их аналог в *nix Samba), второй встречается намного чаще. В некоторых же бизнес-процессах файловый сервис занимает ключевую роль, например как в моей сети. У меня имеется хранилище объемом больше сотни терабайт и клиенты, | ||
- | Итак, исходные данные: | ||
- | |||
- | Для решения этой задачи будет использоваться свободный аналог Red Hat 7 - Centos 7, хотя я и являюсь сторонником GNU/Debian, но в данной задачей, | ||
- | |||
- | Основные компоненты схематично указаны на рисунке ниже. | ||
- | |||
- | {{ : | ||
- | |||
- | Как видно из схемы, два(или более) сервера имеют доступ к общему хранилищу данных, | ||
- | |||
- | Итак, кластерная ФС, которая доступна на всех узлах у нас уже есть, осталось запустить файловую службу **Samba**, в этой статье используется 4-ая ветка. Но просто так это сделать нельзя, | ||
- | |||
- | < | ||
- | Во всех документациях говорится, | ||
- | В Pacemaker есть даже **RA**(resource agent) // | ||
- | </ | ||
- | |||
- | ===== Подготовка системы ===== | ||
- | Имеем два хоста с установленной ОС Linux Centos 7. Выполняем обновление системы. | ||
- | # yum update | ||
- | |||
- | Отключаем SELinux, редактируем / | ||
- | SELINUX=disabled | ||
- | | ||
- | Выключаем фаервол | ||
- | # systemctl stop firewalld | ||
- | # systemctl disable firewalld | ||
- | |||
- | либо добавляем правила разрешающие узлам кластера взаимодействовать | ||
- | # firewall-cmd --permanent --add-service=high-availability | ||
- | # firewall-cmd --add-service=high-availability | ||
- | |||
- | Настраиваем сеть, на каждом хосте по два сетевых интерфейса eth0 и eth1, первый используется для внутрикластерного взаимодействия и имеет сеть 192.168.232.0/ | ||
- | DEVICE=eth0 | ||
- | ONBOOT=yes | ||
- | BOOTPROTO=static | ||
- | TYPE=Ethernet | ||
- | IPADDR=192.168.232.10 | ||
- | PREFIX=24 | ||
- | |||
- | Настраиваем имена хостов, | ||
- | samba_node1 | ||
- | |||
- | Теперь надо настроить надежное разрешение имен на обоих узлах, а еще лучше, чтобы не зависеть еще от одного сервиса(DNS) и избавиться от дополнительной точки отказа, | ||
- | 192.168.232.10 samba_node1 | ||
- | 192.168.232.20 samba_node2 | ||
- | |||
- | Перезагружаем оба узла | ||
- | # reboot | ||
- | |||
- | Проверяем на обоих узлах | ||
- | [samba_node1 ~]# ping -c 1 samba_node2 | ||
- | PING samba_node2 (192.168.232.20) 56(84) bytes of data. | ||
- | 64 bytes from samba_node2 (192.168.232.20): | ||
- | | ||
- | [samba_node2 ~]# ping -c 1 samba_node1 | ||
- | PING samba_node1 (192.168.232.10) 56(84) bytes of data. | ||
- | 64 bytes from samba_node1 (192.168.232.10): | ||
- | |||
- | Устанавливаем необходимое ПО | ||
- | # yum groupinstall "High Availability" | ||
- | # yum install samba samba-client | ||
- | |||
- | ===== Первоначальная настройка кластера ===== | ||
- | На всех узлах устанавливаем пароль на пользователя hacluster | ||
- | # passwd hacluster | ||
- | |||
- | Включаем сервис pcsd на всех узлах | ||
- | # systemctl start pcsd.service | ||
- | # systemctl enable pcsd.service | ||
- | |||
- | Авторизуем узлы в кластере(команда выполняется на любом узле), авторизуемся с пользователем hacluster и паролем, | ||
- | # pcs cluster auth samba_node1 samba_node2 | ||
- | Username: hacluster | ||
- | Password: | ||
- | samba_node1: | ||
- | samba_node2: | ||
- | |||
- | Создаем кластер(команда выполняется на любом узле) | ||
- | # pcs cluster setup --start --name samba_cluster samba_node1 samba_node2 | ||
- | Shutting down pacemaker/ | ||
- | Redirecting to / | ||
- | Redirecting to / | ||
- | Killing any remaining services... | ||
- | Removing all cluster configuration files... | ||
- | samba_node1: | ||
- | samba_node1: | ||
- | samba_node2: | ||
- | samba_node2: | ||
- | | ||
- | Здесь samba_node1 и samba_node2 - имена узлов кластера, | ||
- | totem { | ||
- | version: 2 | ||
- | secauth: off | ||
- | cluster_name: | ||
- | transport: udpu | ||
- | } | ||
- | | ||
- | nodelist { | ||
- | node { | ||
- | ring0_addr: samba_node1 | ||
- | nodeid: 1 | ||
- | } | ||
- | node { | ||
- | ring0_addr: samba_node2 | ||
- | nodeid: 2 | ||
- | } | ||
- | } | ||
- | | ||
- | quorum { | ||
- | provider: corosync_votequorum | ||
- | two_node: 1 | ||
- | } | ||
- | | ||
- | logging { | ||
- | to_syslog: yes | ||
- | } | ||
- | |||
- | Включаем автозагрузку кластера(команда выполняется на любом узле) | ||
- | # pcs cluster enable --all | ||
- | samba_node1: | ||
- | samba_node2: | ||
- | |||
- | Выключаем механизм stonith(команда выполняется на любом узле) | ||
- | # pcs property set stonith-enabled=false | ||
- | |||
- | <note important> | ||
- | Механизм stonith отвечает за физическое отключение узла кластера, | ||
- | </ | ||
- | |||
- | Вот и все, первичная настройка кластера завершена, | ||
- | # pcs status | ||
- | Cluster name: samba_cluster | ||
- | Last updated: Tue Sep 16 19:00:28 2014 | ||
- | Last change: Tue Sep 16 19:00:11 2014 via cibadmin on samba_node2 | ||
- | Stack: corosync | ||
- | Current DC: samba_node1 (1) - partition with quorum | ||
- | Version: 1.1.10-32.el7_0-368c726 | ||
- | 2 Nodes configured | ||
- | 0 Resources configured | ||
- | | ||
- | | ||
- | Online: [ samba_node1 samba_node2 ] | ||
- | | ||
- | Full list of resources: | ||
- | | ||
- | | ||
- | PCSD Status: | ||
- | samba_node1: | ||
- | samba_node2: | ||
- | | ||
- | Daemon Status: | ||
- | corosync: active/ | ||
- | pacemaker: active/ | ||
- | pcsd: active/ | ||
- | |||
- | Как видно, оба узла онлайн, | ||
- | |||
- | ===== Подключение LVM к кластеру ===== | ||
- | Включаем cluster locking в конфиге LVM и включаем автозагрузку демона lvmetad, все это можно сделать одной командой: | ||
- | |||
- | # lvmconf --enable-cluster | ||
- | | ||
- | Проверяем, | ||
- | |||
- | # cat / | ||
- | locking_type = 3 | ||
- | |||
- | Теперь создаем два клонированных ресурса. Первый распределенный менеджер блокировок и второй - кластерный LVM(команды выполняются на любом узле) | ||
- | |||
- | # pcs resource create dlm ocf: | ||
- | # pcs resource create clvmd ocf: | ||
- | |||
- | Настраиваем порядок запуска, | ||
- | |||
- | # pcs constraint order start dlm-clone then clvmd-clone | ||
- | # pcs constraint colocation add clvmd-clone with dlm-clone | ||
- | |||
- | Проверяем, | ||
- | |||
- | # pcs resource show | ||
- | Clone Set: dlm-clone [dlm] | ||
- | | ||
- | Clone Set: clvmd-clone [clvmd] | ||
- | | ||
- | |||
- | Ну а теперь создаем LVM том как обычно, | ||
- | |||
- | # pvcreate /dev/sdb | ||
- | # vgcreate samba_cluster /dev/sdb | ||
- | # lvcreate -n samba_cluster samba_cluster | ||
- | |||
- | Смотрим на обоих нодах(по-умолчанию тома должны быть видимы на всех нодах) | ||
- | |||
- | # ls / | ||
- | |||
- | ===== Создание кластерной ФС и подключение ее к кластеру ===== |