Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
centos_7_samba_cluster [2014/09/16 17:49] metallic [Подготовка системы] |
centos_7_samba_cluster [2022/03/25 17:00] (текущий) |
||
---|---|---|---|
Строка 26: | Строка 26: | ||
Отключаем SELinux, редактируем / | Отключаем SELinux, редактируем / | ||
SELINUX=disabled | 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/ | Настраиваем сеть, на каждом хосте по два сетевых интерфейса eth0 и eth1, первый используется для внутрикластерного взаимодействия и имеет сеть 192.168.232.0/ | ||
Строка 56: | Строка 64: | ||
Устанавливаем необходимое ПО | Устанавливаем необходимое ПО | ||
# yum groupinstall "High Availability" | # yum groupinstall "High Availability" | ||
- | # yum install samba samba-client | + | # 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 -l100%FREE samba_cluster | ||
+ | | ||
+ | Смотрим на обоих нодах(по-умолчанию тома должны быть видимы на всех нодах) | ||
+ | |||
+ | # ls / | ||
+ | |||
+ | ===== Создание кластерной ФС и подключение ее к кластеру ===== | ||
+ | |||
+ | Создаем кластерную ФС GFS2 поверх только что созданного LVM тома. Кол-во журналов(-j 2) соответствует кол-ву нод кластера, | ||
+ | |||
+ | # mkfs.gfs2 -p lock_dlm -t samba_cluster: | ||
+ | | ||
+ | / | ||
+ | This will destroy any data on /dev/dm-2 | ||
+ | Are you sure you want to proceed? [y/n]y | ||
+ | | ||
+ | Device: | ||
+ | Block size: 4096 | ||
+ | Device size: 10,00 GB (2620416 blocks) | ||
+ | Filesystem size: 10,00 GB (2620413 blocks) | ||
+ | Journals: | ||
+ | Resource groups: | ||
+ | Locking protocol: | ||
+ | Lock table: | ||
+ | UUID: a750c8de-b4bc-2b0b-90ef-0a609319a657 | ||
+ | |||
+ | После создания ФС можно попробовать ее примонтировать на обоих узлах | ||
+ | |||
+ | # mount / | ||
+ | |||
+ | Не забываем отмонтировать и проверить, | ||
+ | |||
+ | Настаиваем кластер(все команды выполняются на одном узле). Задаем поведение, | ||
+ | |||
+ | # pcs property set no-quorum-policy=freeze | ||
+ | |||
+ | Создаем ресурс ФС, в случае необходимости к опциям можно добавить acl | ||
+ | |||
+ | # pcs resource create clusterfs Filesystem device="/ | ||
+ | | ||
+ | И наконец настраиваем порядок запуска и зависимости, | ||
+ | |||
+ | # pcs constraint order start clvmd-clone then clusterfs-clone | ||
+ | # pcs constraint colocation add clusterfs-clone with clvmd-clone | ||
+ | |||
+ | Проверяем, | ||
+ | |||
+ | # pcs resource show | ||
+ | Clone Set: dlm-clone [dlm] | ||
+ | | ||
+ | Clone Set: clvmd-clone [clvmd] | ||
+ | | ||
+ | Clone Set: clusterfs-clone [clusterfs] | ||
+ | | ||
+ | | ||
+ | # df -h | ||
+ | / | ||
+ | |||
+ | Как видим, ФС примонтирована и все ресурсы у кластера в рабочем состоянии. На этом настройка pacemaker закончена, | ||
+ | |||
+ | ===== Настройка CTDB ===== | ||
+ | |||
+ | Создаем на кластерной ФС директорию для Samba и файлы nodes, public_addresses для CTDB | ||
+ | |||
+ | # mkdir /mnt/ctdb | ||
+ | # touch / | ||
+ | # touch / | ||
+ | |||
+ | Редактируем конфиг / | ||
+ | |||
+ | CTDB_RECOVERY_LOCK="/ | ||
+ | CTDB_NODES=/ | ||
+ | CTDB_PUBLIC_ADDRESSES=/ | ||
+ | CTDB_MANAGES_SAMBA=yes | ||
+ | CTDB_MANAGES_WINBIND=no | ||
+ | CTDB_MANAGES_NFS=no | ||
+ | CTDB_DEBUGLEVEL=NOTICE | ||
+ | | ||
+ | Если Samba интегрирована с Active Directory, то включаем еще опцию CTDB_MANAGES_WINBIND. | ||
+ | |||
+ | В файле nodes перечислены IP-адреса всех узлов кластера, | ||
+ | |||
+ | # cat / | ||
+ | 192.168.232.10 | ||
+ | 192.168.232.20 | ||
+ | |||
+ | Файл public_addresses содержит IP-адреса узлов через которые кластер обслуживает клиентов. Как упоминалось, | ||
+ | |||
+ | # cat / | ||
+ | 10.0.0.100/ | ||
+ | 10.0.0.200/ | ||
+ | |||
+ | И наконец редактируем конфиг Samba, он должен быть одинаков на всех узлах. | ||
+ | |||
+ | [global] | ||
+ | workgroup = COMPANY | ||
+ | server string = Samba Test Cluster | ||
+ | netbios name = MEGACLUSTER | ||
+ | max protocol = SMB2 | ||
+ | log file = / | ||
+ | max log size = 1000 | ||
+ | security = user | ||
+ | domain master = no | ||
+ | domain logons = no | ||
+ | local master = no | ||
+ | os level = 33 | ||
+ | preferred master = no | ||
+ | load printers = no | ||
+ | | ||
+ | # ----------------------- Cluster Options ------------------------ | ||
+ | clustering = yes | ||
+ | # Две опции ниже важные, | ||
+ | # получить странные глюки | ||
+ | private dir = /mnt/ctdb | ||
+ | lock directory = /mnt/ctdb | ||
+ | idmap backend = tdb2 | ||
+ | passdb backend = tdbsam | ||
+ | | ||
+ | # | ||
+ | | ||
+ | [test] | ||
+ | comment = Cluster Share | ||
+ | path = /mnt/share | ||
+ | browseable = yes | ||
+ | writable = yes | ||
+ | |||
+ | Наконец включаем CTDB | ||
+ | |||
+ | # systemctl enable ctdb.service | ||
+ | # systemctl start ctdb.service | ||
+ | |||
+ | После чего он должен распределить адреса по узлам и запустить Samba. Проверяем: | ||
+ | |||
+ | # ctdb status | ||
+ | Number of nodes:2 | ||
+ | pnn:0 192.168.232.10 | ||
+ | pnn:1 192.168.232.20 | ||
+ | Generation: | ||
+ | Size:2 | ||
+ | hash:0 lmaster:0 | ||
+ | hash:1 lmaster:1 | ||
+ | Recovery mode:NORMAL (0) | ||
+ | Recovery master:0 | ||
+ | | ||
+ | # ctdb ip | ||
+ | Public IPs on node 1 | ||
+ | 10.0.0.100 0 | ||
+ | 10.0.0.200 1 | ||
+ | | ||
+ | # ip address show | ||
+ | | ||
+ | 3: eth1: < | ||
+ | link/ether 00: | ||
+ | inet 10.0.0.100/ | ||
+ | | ||
+ | | ||
+ | # smbcontrol smbd ping | ||
+ | PONG from pid 1:5658 | ||
+ | |||
+ | Если Samba интегрирована с AD теперь можно попробовать подключиться со стороны клиента, | ||
+ |