Назад | Перейти на главную страницу

Отказоустойчивость CTDB Samba не является высокодоступной

TL; DR

Отказ узла в кластере ctdb + samba при взаимодействии с общим ресурсом прерывает соединение с общим ресурсом.

Моя установка

3 узла под управлением ceph + cephfs
2 из этих узлов, на которых запущен клиент CTDB и Samba 1 (не один из 3 серверов)

Это лабораторная установка, поэтому только один ник на сервер = узел, одна подсеть, а также все компоненты Ceph плюс Samba на одних и тех же серверах. Я понимаю, что это не выход.

Эта проблема

Я хочу разместить кластерный файловый ресурс Samba поверх Ceph с помощью ctdb. Я следил за документацией CTDB (https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba#Configuring_Clusters_with_CTDB) и его части: https://wiki.samba.org/index.php/Samba_CTDB_GPFS_Cluster_HowTo. Кластер работает, и общий ресурс доступен, доступен для чтения и записи на обоих узлах, мой файл smb.conf выглядит следующим образом:

[global]
netbios name = CEPHFS
workgroup = SIMPLE
clustering = yes
idmap config * : backend = autorid
idmap config * : range = 1000000-1999999
log file = /var/log/samba/smb.log

# Set files creation permissions
create mask = 664
force create mode = 664

# Set directory creation mask
directory mask = 2775
force directory mode = 2775

[public]
comment = public share
path = /mnt/mycephfs/testshare
public = yes
writeable = yes
only guest = yes
ea support = yes

CTDB управляет Samba и сообщает обоим узлам как ОК.

Но когда я читаю или пишу на один из узлов через общедоступный IP-адрес и позволяю ему выйти из строя (перезапуск ctdb), чтение или запись завершаются ошибкой. Вторая попытка записи завершается успешно (публичный IP-адрес успешно используется другим хостом).

Но CTDB должен уметь это делать согласно https://ctdb.samba.org/ -> Поглощение IP? У меня есть tcpdump нового сервера (тот, который принимает общедоступный IP-адрес), отправляющий tcp RST моему клиенту после того, как клиент отправляет повторные передачи на сервер.

Есть идеи, в чем может быть проблема?

PS: Я более чем счастлив предоставить вам дополнительную информацию (файл конфигурации ctdb, конфигурация брандмауэра, pcap, что угодно;)), но этого достаточно ...

Редактировать:

Также протестировано с GlusterFS в качестве серверной части хранилища в виртуализированной среде и на клиенте Windows 10. Нужен был kernel share modes = No, используя gluster vfs.

Проблема в том, что версия Samba не поддерживает постоянные ручки тем не менее, следующие хранилище поддерживает его, но пока не готов к созданию стабильной версии в официальном репозитории Samba. Видеть YouTube для полного объяснения этой реализации.

Прочные ручки поддерживаются Samba, поэтому сбои сети на узле будут устранены, но сбои, когда CTDB выполняет захват IP, потребуют от клиента SMB повторного подключения. Приложение / программа Windows должно управлять ошибкой, перехватывать ее и повторять попытку, например xcopy на окнах есть флаг / Z (видеть параметры) который восстановить соединение когда произошло переключение IP на новый узел.