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

Материал из ALT Linux Wiki
(Новая страница: «== Описание == В этой статье рассмотрим построение масштабируемого кластера файлового сервиса Samba. Для обеспечения высокой доступности мы будет использовать сетевую файловую систему, которая будет доступна одновременно всем серверам в кластере. В каче...»)
 
Нет описания правки
Строка 23: Строка 23:


=== Установка необходимого ПО ===
=== Установка необходимого ПО ===
На все ноды сервиса samba нужно установить один набор ПО.


  # apt-get update
  # apt-get update
Строка 43: Строка 45:


то, вероятно, у вас стоит несколько пакетов с smbd, к примеру пакет <tt>samba-dc</tt>, который нам сейчас не нужен и должен быть удален.
то, вероятно, у вас стоит несколько пакетов с smbd, к примеру пакет <tt>samba-dc</tt>, который нам сейчас не нужен и должен быть удален.
Кластерную файловую систему примонтировать в  {{path|/mnt/gluster/}}, проще всего это сделать через {{path|/etc/fstab}}
gluster1,gluster2,gluster3:/gfs-volume /mnt/gluster/ glusterfs defaults,_netdev 0 0
=== Настройка службы ctdb ===
* в файле {{path|/etc/ctdb/nodes}} перечисляются IP адреса всех нод кластера
192.168.160.151
192.168.160.152
* в файле {{path|/etc/ctdb/public_addresses}} указываем адрес по которому будет взаимодействие с клиентами.
192.168.160.180/24 ens19
* в файле {{path|/etc/ctdb/ctdb.conf}} указать recovery lock на сетевой ФС
[cluster]
recovery lock=/mnt/gluster/ctdb.lock
* включить поддержку скриптов для управления необходимыми службами. CTDB сам будет запускать и управлять ими.
# for i in 00.ctdb 10.interface 50.samba; do ctdb event script enable legacy $i; done
и проверить, что они включились (наличие * у имени)
[root@samba1 ~]#  ctdb event script list legacy
* 00.ctdb
  01.reclock
  05.system
  06.nfs
* 10.interface
  11.natgw
  11.routing
  13.per_ip_routing
  20.multipathd
  31.clamd
  40.vsftpd
  41.httpd
  48.netbios
  49.winbind
* 50.samba
  60.nfs
  70.iscsi
  91.lvs
 
==== Настройка samba =====
* Выключить возможность запуска smb через systemd
systemctl disable --now smb
* создать конфигурационный файл samba
т.к. все ноды должны иметь одинаковый конфигурационный файл, то лучше всего хранить его настройки в registry.
Для этого достаточно создать минимальный {{path|/etc/samba/smb.conf}} с содержимым
[global]
clustering = yes
include = registry

Версия от 10:32, 21 января 2025

Описание

В этой статье рассмотрим построение масштабируемого кластера файлового сервиса Samba. Для обеспечения высокой доступности мы будет использовать сетевую файловую систему, которая будет доступна одновременно всем серверам в кластере. В качестве кластерной файловой системы будем использовать GlusterFS. Для механизма блокировок Samba использует TBD (trivial data base), нам понадобится его кластерная реализация CTDB. CTDB будет управлять переносом IP-адреса и запуском сервиса Samba (и winbind если речь идет о доменной конфигурации).

Конфигурация (без доменной поддержки)

Общий вид можно представить схемой

Ctdb-wo-domain.png


Кластер GlusterFS

Построение кластера GlusterFS не рассматривается в данной статье. Немного устаревшие, но в целом верные шаги, возможно посмотреть в отдельном документе GlusterFS

  • gluster1 - 192.168.160.11/24
  • gluster2 - 192.168.160.12/24
  • gluster3 - 192.168.160.13/24

Кластер Samba

  • samba1 - первая нода сервиса smb - 192.168.160.151/24
  • samba2 - первая нода сервиса smb - 192.168.160.152/24
  • 192.168.160.180/24 - виртуальный IP по которому будет отвечать один из узлов

Установка необходимого ПО

На все ноды сервиса samba нужно установить один набор ПО.

# apt-get update
# apt-get install samba-ctdb glusterfs9-client

Важно! Убедитесь, что у вас активна samba с поддержкой кластеризации. Результат должен быть таким

[root@samba1 ~]# smbd -b | grep -A 1 -i cluster
   CLUSTER_SUPPORT
   COMPILER_SUPPORTS_LL
--
Cluster support features:
   CLUSTER_SUPPORT
   CTDB_SOCKET: /var/run/ctdb/ctdbd.socket

если у вас результат такой

Cluster support features:
   NONE

то, вероятно, у вас стоит несколько пакетов с smbd, к примеру пакет samba-dc, который нам сейчас не нужен и должен быть удален.

Кластерную файловую систему примонтировать в /mnt/gluster/, проще всего это сделать через /etc/fstab

gluster1,gluster2,gluster3:/gfs-volume /mnt/gluster/ glusterfs defaults,_netdev 0 0

Настройка службы ctdb

  • в файле /etc/ctdb/nodes перечисляются IP адреса всех нод кластера
192.168.160.151
192.168.160.152
  • в файле /etc/ctdb/public_addresses указываем адрес по которому будет взаимодействие с клиентами.
192.168.160.180/24 ens19
  • в файле /etc/ctdb/ctdb.conf указать recovery lock на сетевой ФС
[cluster]
recovery lock=/mnt/gluster/ctdb.lock
  • включить поддержку скриптов для управления необходимыми службами. CTDB сам будет запускать и управлять ими.
# for i in 00.ctdb 10.interface 50.samba; do ctdb event script enable legacy $i; done

и проверить, что они включились (наличие * у имени)

[root@samba1 ~]#  ctdb event script list legacy
* 00.ctdb
  01.reclock
  05.system
  06.nfs
* 10.interface
  11.natgw
  11.routing
  13.per_ip_routing
  20.multipathd
  31.clamd
  40.vsftpd
  41.httpd
  48.netbios
  49.winbind
* 50.samba
  60.nfs
  70.iscsi
  91.lvs
 

Настройка samba =

  • Выключить возможность запуска smb через systemd
systemctl disable --now smb
  • создать конфигурационный файл samba

т.к. все ноды должны иметь одинаковый конфигурационный файл, то лучше всего хранить его настройки в registry. Для этого достаточно создать минимальный /etc/samba/smb.conf с содержимым

[global]
clustering = yes
include = registry