Кластеры · 4 min read · Jan 29, 2026
Настройка активного/активного кластера Samba CTDB с использованием GFS и DRBD (CentOS 5.5)
Настройка активного/активного кластера Samba CTDB с использованием GFS и DRBD (CentOS 5.5)
Эта статья объясняет, как настроить активный/активный кластер Samba CTDB, используя GFS и DRBD. Подготовлено Рафаэлем Марангони из команды BRLink Servidor Linux.
Введение
Мы используем два узла, оба являются активными узлами, и запросы распределяются по нагрузке. Для репликации данных между узлами мы используем DRBD. Для активного/активного кластера мы должны использовать ClusterFS (в данном случае GFS), чтобы оба узла могли записывать на ресурс DRBD одновременно.
1 Предварительная заметка
Дистрибутив Linux:
Мы используем дистрибутив CentOS 5.5 (64 бита), но, вероятно, он будет работать и на Fedora (и Red Hat, безусловно). Установка CentOS очень проста и классическая, выберите базовые пакеты и другие вещи, которые вам нравятся/нужны. Один момент, который следует помнить, это то, что мы используем DRBD для репликации данных между узлами, поэтому вам нужно иметь диск или раздел, эксклюзивный для DRBD. Помните об этом перед разбиением дисков при установке CentOS.
Сетевое оборудование/топология:
Мы используем две гигабитные сетевые карты на узел, одна (eth0) подключена к сети (LAN), а другая (eth1) с перекрестным кабелем, соединяющим оба узла. Перекрестный кабель должен использоваться для повышения производительности и надежности системы, потому что DRBD не будет зависеть от сетевых коммутаторов или чего-либо еще для репликации данных между узлами.
В этом руководстве мы будем использовать физические узлы node1.clusterbr.int и node2.clusterbr.int: node1.clustersmb.int: Использует IP 10.0.0.181 (LAN) и IP 172.16.0.1 (перекрестный) nnode2.clustersmb.int: Использует IP 10.0.0.182 (LAN) и IP 172.16.0.2 (перекрестный) vip1.clustersmb.int: Это кластерный IP, от node1 10.0.0.183. vip2.clustersmb.int: Это кластерный IP, от node2 10.0.0.184.
Диски:
Оба узла имеют два диска: /dev/sda: для ОС; /dev/sdb: для DRBD. Как я уже говорил, вы можете использовать только один диск, оставив один раздел эксклюзивным для DRBD.
CTDB:
Это кластерная реализация TDB, используемая с Samba на кластерных файловых системах. Нам это нужно для активного/активного кластера, чтобы оба сервиса smb могли отвечать на сетевые запросы. Дополнительная информация на http://ctdb.samba.org.
2 Подготовка узлов
Отключение SELINUX
Нам нужно отключить SELINUX:
vi /etc/selinux/configИзмените только эту строку (оставив все остальное нетронутым):
SELINUX=disabledУстановка имени хоста
Нам нужно изменить имя хоста и шлюз узлов:
vi /etc/sysconfig/networknode1:
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node1.clustersmb.int
GATEWAY=10.0.0.9node2:
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node2.clustersmb.int
GATEWAY=10.0.0.9Настройка сетевых интерфейсов
Далее мы настроим сетевые интерфейсы:
node1:
Сетевой интерфейс LAN:
vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0
BOOTPROTO=static
IPADDR=10.0.0.181
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=a6:1e:3d:67:66:78 Интерфейс Cross-Over/DRBD:
vi /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1
BOOTPROTO=static
IPADDR=172.16.0.1
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=ee:ef:ff:9a:9a:57node2:
Сетевой интерфейс LAN:
vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0
BOOTPROTO=static
IPADDR=10.0.0.182
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=52:52:a1:1a:62:32Интерфейс Cross-Over/DRBD:
vi /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1
BOOTPROTO=static
IPADDR=172.16.0.2
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=1a:18:b2:50:96:1eНастройка конфигурации DNS
Настройка конфигурации DNS на обоих узлах (в соответствии с вашей сетью):
vi /etc/resolv.confsearch clustersmb.int
nameserver 10.0.0.9Настройка базового разрешения имен хостов
Настройка /etc/hosts (одинаковая конфигурация на обоих узлах):
vi /etc/hosts127.0.0.1 localhost.localdomain localhost
10.0.0.191 node1.clustersmb.int node1
10.0.0.192 node2.clustersmb.int node2
PS: Вы, вероятно, захотите добавить другие строки в этот файл, чтобы указать на другие адреса вашей сети.
Проверка сетевой доступности
Давайте проверим, все ли в порядке:
node1:
Пингование node2 (через интерфейс LAN):
[root@node1 ~]# ping -c 2 node2[root@node1 ~]# ping -c 2 node2
PING node2 (10.0.0.182) 56(84) bytes of data.
64 bytes from node2 (10.0.0.182): icmp_seq=1 ttl=64 time=0.089 ms
64 bytes from node2 (10.0.0.182): icmp_seq=2 ttl=64 time=0.082 ms
— node2 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.082/0.085/0.089/0.009 ms
Пингование node2 (через интерфейс перекрестного соединения):
[root@node1 ~]# ping -c 2 172.16.0.2[root@node1 ~]# ping -c 2 172.16.0.2
PING 172.16.0.2 (172.16.0.2) 56(84) bytes of data.
64 bytes from 172.16.0.2: icmp_seq=1 ttl=64 time=0.083 ms
64 bytes from 172.16.0.2: icmp_seq=2 ttl=64 time=0.083 ms
— 172.16.0.2 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.083/0.083/0.083/0.000 ms
node2:
Пингование node1 (через интерфейс LAN):
[root@node2 ~]# ping -c 2 node1[root@node2 ~]# ping -c 2 node1
PING node1 (10.0.0.181) 56(84) bytes of data.
64 bytes from node1 (10.0.0.181): icmp_seq=1 ttl=64 time=0.068 ms
64 bytes from node1 (10.0.0.181): icmp_seq=2 ttl=64 time=0.063 ms
— node1 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.063/0.065/0.068/0.008 ms
Пингование node1 (через интерфейс перекрестного соединения):
[root@node2 ~]# ping -c 2 172.16.0.1[root@node2 ~]# ping -c 2 172.16.0.1
PING 172.16.0.1 (172.16.0.1) 56(84) bytes of data.
64 bytes from 172.16.0.1: icmp_seq=1 ttl=64 time=1.36 ms
64 bytes from 172.16.0.1: icmp_seq=2 ttl=64 time=0.075 ms
— 172.16.0.1 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.075/0.722/1.369/0.647 ms
Настройка параметров инициализации
Я предпочитаю установить уровень выполнения на 3.
vi /etc/inittabИзмените только эту строку (оставив все остальное нетронутым):
id:3:initdefault:Я предпочитаю удалить некоторые службы из автоматической инициализации, чтобы оставить только службы, которые действительно будут использоваться.
Это активные службы, которые нам понадобятся:
[root@node1 ~]# chkconfig --list | grep 3:sim[root@node1 ~]# chkconfig –list | grep 3:sim
acpid 0:нет 1:нет 2:да 3:да 4:да 5:да 6:нет
anacron 0:нет 1:нет 2:да 3:да 4:да 5:да 6:нет
apmd 0:нет 1:нет 2:да 3:да 4:да 5:да 6:нет
atd 0:нет 1:нет 2:нет 3:да 4:да 5:да 6:нет
cpu_speed 0:нет 1:да 2:да 3:да 4:да 5:да 6:нет
crond 0:нет 1:нет 2:да 3:да 4:да 5:да 6:нет
irqbalance 0:нет 1:нет 2:да 3:да 4:да 5:да 6:нет
kudzu 0:нет 1:нет 2:нет 3:да 4:да 5:да 6:нет
network 0:нет 1:нет 2:да 3:да 4:да 5:да 6:нет
rawdevices 0:нет 1:нет 2:нет 3:да 4:да 5:да 6:нет
sshd 0:нет 1:нет 2:да 3:да 4:да 5:да 6:нет
syslog 0:нет 1:нет 2:да 3:да 4:да 5:да 6:нет
На этом этапе нам нужно перезагрузить оба узла, чтобы применить конфигурацию.
reboot
Get new posts in your inbox
No spam. Unsubscribe anytime.