Настройка службы Samba высокой степени доступности

Сетевые файловые системы высокой степени доступности является одним из самых эффективным применением кластера. Использование служб Samba высокой степени доступности даёт следующие преимущества:

ЗамечаниеЗамечание
 

Полное рассмотрение конфигурации Samba выходит за рамки этого документа. Поэтому в этом руководстве выделены только основные аспекты использования этой службы в кластере. Обратитесь к Официальному руководству по настройке Red Hat Linux за дополнительными подробностями о настройке Samba. Кроме этого, за дополнительной информацией о Samba обратитесь по адресу http://www.redhat.com/support/resources/print_file/samba.html. Для настройки службы Samba высокой степени доступности необходимо понимать как настраивается обычные, не кластерные службы Samba.

Требования к серверу Samba

Если вы намереваетесь создать службы Samba высокой степени доступности, все узлы вашего кластера должны соответствовать определенным требованиям. Эти требования включают в себя:

Модель работы Samba

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

В обычной, не кластерной конфигурации Samba управление службой осуществляется с помощью файла /etc/samba/smb.conf, в котором описываются файловые системы, доступные определенным Windows-клиентам. В нем также описываются права доступа и другие параметры подключения общих ресурсов. В модели с одним сервером, один экземпляр демонов smbd и nmbd автоматически запускается сценарием уровня выполнения /etc/rc.d/init.d/smb.

Чтобы реализовать службы Samba высокой степени доступности, вместо одного файла /etc/samba/smb.conf каждая службы Samba использует свой файл конфигурации. Эти файлы носят названия /etc/samba/smb.conf.sharename; где sharename - имя определенного ресурса, предоставляемого службой Samba. Например, если один общий ресурс называется eng а другой ресурс - acct, файлы конфигурации Samba будут иметь названия /etc/samba/smb.conf.eng и /etc/samba/smb.conf.acct, соответственно.

Формат файла smb.conf.sharename идентичен формату стандартного файла smb.conf. Никаких дополнительных полей для работы службы в кластере не создаётся. В файле smb.conf.sharename необходимо определить некоторые параметры, которые потребуются для корректной работы кластера, они будут описаны в следующем разделе. Когда с помощью утилиты cluadmin добавляется новая служба Samba, автоматически создается шаблон файла smb.conf.sharename на основе заданных параметров службы. Этот файл затем может использоваться как исходная точка; впоследствии администратор может добавлять в него клиентов Windows, определенные каталоги для общего доступа, а также разрешения.

Системный администратор должен скопировать полученный файл /etc/samba/smb.conf.sharename на каждый узел кластера. После внесения любых изменений файла smb.conf.sharename, сделанных после первоначальной конфигурации, также необходимо скопировать этот файл на другой узел кластера.

Для повышения степени доступности Samba, каждая отдельная служба Samba в кластере настраивается (в cluadmin) со своей собственной парой демонов smbd/nmbd. Поэтому, если в кластере настроено несколько служб Samba, на отдельном узле кластера вы можете увидеть несколько экземпляров этих пар демонов. Демоны Samba smbd/nmbd не запускаются стандартными сценариями уровня выполнения init.d; их запускает кластерное программное обеспечение на работающем, исполняющим службу, узле.

Чтобы один узел мог выполнять несколько экземпляров демонов Samba, каждой паре демонов требуется отдельный каталог блокировок. Поэтому, для каждой службы Samba определяется свой каталог блокировок демона. Этот каталог носит название /var/cache/samba/sharename; где sharename заменяется именем общего ресурса Samba, указанного при конфигурации службы (в cluadmin). Для приведенного выше примера, соответствующие каталоги блокировок будут называться /var/cache/samba/eng и /var/cache/samba/acct.

Когда служба Samba настраивается с помощью утилиты cluadmin, каталог /var/cache/samba/sharename автоматически создаётся утилитой cluadmin. При этом появляется сообщение о необходимости вручную создать такой каталог блокировок на другом узле кластера. Например: mkdir /var/cache/samba/eng

Сбор информации о конфигурации службы Samba

Перед настройкой служб Samba соберите информацию о конфигурации, например, какие файловые системы будут представляться в виде общих папок Windows клиентам. Для настройки служб Samba потребуется следующая информация:

Настраивая службы Samba с помощью утилиты cluadmin:

Пример конфигурации службы Samba

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

Ниже приведены используемые параметры настройки службы, а также некоторые комментарии к ним.

Ниже приведена часть файла /etc/hosts, в котором описаны IP адреса и связанные имена компьютеров, используемых в кластере.

10.0.0.3        clu3          # cluster member

10.0.0.4        clu4          # second cluster member

10.0.0.10       cluacct    # floating IP address associated with accounting team NFS service

Ниже приведен настройки в утилите cluadmin службы Samba с описанными выше параметрами:

Service name: samba_acct
Preferred member [None]: clu4
Relocate when the preferred member joins the cluster (yes/no/?) [no]: yes
User script (e.g., /usr/foo/script or None) [None]: 
Status check interval [0]: 90
Do you want to add an IP address to the service (yes/no/?) [no]: yes

        IP Address Information

IP address: 10.0.0.10
Netmask (e.g. 255.255.255.0 or None) [None]: 
Broadcast (e.g. X.Y.Z.255 or None) [None]: 
Do you want to (a)dd, (m)odify, (d)elete or (s)how an IP address, or 
are you (f)inished adding IP addresses [f]: 
Do you want to add a disk device to the service (yes/no/?) [no]: yes

Disk Device Information

Device special file (e.g., /dev/sdb4): /dev/sdb12
Filesystem type (e.g., ext2, ext3 or None): ext2            
Mount point (e.g., /usr/mnt/service1) [None]: /mnt/users/accounting
Mount options (e.g., rw,nosuid,sync): rw,nosuid,sync
Forced unmount support (yes/no/?) [yes]: 
Would you like to allow NFS access to this filesystem (yes/no/?)\
	    [no]: no 
Would you like to share to Windows clients (yes/no/?)  [no]: yes

You will now be prompted for the Samba configuration: 
Samba share name: acct

The samba config file /etc/samba/smb.conf.acct does not exist.

Would you like a default config file created (yes/no/?)  [no]: yes

Successfully created daemon lock directory /var/cache/samba/acct.
Please run `mkdir /var/cache/samba/acct` on the other cluster member.

Successfully created /etc/samba/smb.conf.acct.
Please remember to make necessary customizations and then copy the file
over to the other cluster member.

Do you want to (a)dd, (m)odify, (d)elete or (s)how DEVICES, or 
are you (f)inished adding DEVICES [f]: f
name: samba_acct
preferred node: clu4
relocate: yes
user script: None
monitor interval: 90
IP address 0: 10.0.0.10
  netmask 0: None
  broadcast 0: None
device 0: /dev/sdb12
  mount point, device 0: /mnt/users/accounting
  mount fstype, device 0: ext2            
  mount options, device 0: rw,nosuid,sync
  force unmount, device 0: yes
  samba share, device 0: acct
Add samba_acct service as shown? (yes/no/?) yes

После настройки службы, выполненной с помощью cluadmin, как показано выше, не забудьте:

Параметры конфигурационного файла smb.conf.sharename

В этом разделе описаны поля файла smb.conf.sharename, которые влияют на корректную работу служб Samba высокой степени доступности. Полное описание всех параметров файла конфигурации Samba выходит за рамки этого документа. Для поддержки кластера никаких дополнительных полей добавлено не было, формат файла также соответствует соглашениям Samba.

Ниже показан пример файла smb.conf.sharename, автоматически сгенерированного утилитой cluadmin для службы с указанными с параметрами. Этот пример соответствует настройке службе, выполненной с помощью cluadmin выше.

# Template samba service configuration file - please modify to specify
# subdirectories and client access permissions.
# Remember to copy this file over to other cluster member, and create
# the daemon lock directory /var/cache/samba/acct.
#
# From a cluster perspective, the key fields are:
# lock directory - must be unique per samba service.
# bind interfaces only - must be present set to yes.
# interfaces - must be set to service floating IP address.
# path - must be the service mountpoint or subdirectory thereof.
# Refer to the cluster documentation for details.

[global]
        workgroup = RHCLUSTER
        lock directory = /var/cache/samba/acct
        log file = /var/log/samba/%m.log
        encrypt passwords = yes
        bind interfaces only = yes
        interfaces = 10.0.0.10

[acct]
        comment = High Availability Samba Service
        browsable = yes
        writable = no
        public = yes
        path = /mnt/service12

Ниже приведены описания самых значимых, с точки зрения кластера, параметров файла /etc/samba/smb.conf.sharename. В этом примере, файл с именем /etc/samba/smb.conf.acct соответствует имени общего ресурса acct, определенному в утилите cluadmin. Ниже описаны только поля, относящиеся к работе кластера. Остальные поля соответствуют стандартным правилам Samba, которые должны соблюдаться.

Глобальные параметры

Эти параметры относятся ко всем общим ресурсам, указанным в файле smb.conf.sharename. Обратите внимание, в этом файле можно описать несколько общих разделов, при этом соответствующие каталоги должны находиться в подключенных службой файловых системах.

lock directory (каталог блокировок)

Указывает имя каталога, в котором демоны Samba smbd/nmbd будут размещать свои файлы блокировок. Оно должно быть равно /var/cache/samba/sharename, где sharename может меняться в зависимости от параметра, заданного в cluadmin. Этот каталог необходимо определить для работы на одном узле нескольких экземпляров демонов smbd/nmbd разных служб.

bind interfaces only (привязывать только к интерфейсам)

Этот параметр должен равен yes (да) чтобы каждая пара служб smbd/nmbd привязывалась к плавающему IP адресу, связанному с кластерной службой Samba.

interfaces (интерфейсы)

Укажите IP адрес, связанный со службой Samba. Если указывается сетевая маска службы, это поле выглядит следующим образом: interfaces = 10.0.0.10/255.255.254.0

Специальные параметры общего ресурса

Эти параметры относятся к определенному разделу Samba.

writable

По умолчанию, для общего ресурса установлены права только на чтение. Задавайте этот параметр в соответствии с требованиями вашего окружения.

path (путь)

По умолчанию, это точка подключения первой файловой системы, указанная при настройке службы. В этом поле задается каталог или подкаталог, который будет быть доступен Windows-клиентам.

Доступ Windows-клиентов к общим ресурсам Samba

Windows-клиенты не требуют дополнительной настройки для использования общих ресурсов предоставляемых кластером высокой степени доступности. Единственным требованием при подключении Windows-клиентов является использование для доступа к общему ресурсу Samba плавающего IP адреса (или связанного имени компьютера), определенного в cluadmin, например 10.0.0.10. Windows-клиенты не должны обращаться к ресурсу по адресу одного из узлов кластера (например, clu3 или clu4).

В зависимости от используемой в окружении кластера схемы проверки подлинности, для определения учетных записей Windows-пользователей в кластерных системах может понадобиться команда smbpasswd. При создании этих учетных записей, необходимо, чтобы информация, связанная с учетными записями Samba была синхронизирована на обоих узлах кластера. Добиться этого можно, либо запустив утилиту smbpassword на каждом узле кластера, либо выполнив эту команду в одной системе и скопировав полученный файл /etc/samba/smbpasswd в другую. Например, чтобы разрешить подключение к общему ресурсу Samba, обслуживаемому кластером, Windows-клиенту sarge, необходимо выполнить следующую команду на обоих узлах кластера, определяя каждый раз одно и то же имя пользователя и пароль:

smbpasswd -a sarge

После этого Windows-клиент может обращаться к общему ресурсу Samba обычным способом. Например, можно нажать кнопку Start (Пуск) на панели задач, выбрав затем Run (Выполнить). При этом на экране появляется диалоговое окно, в котором можно указать имя кластерного общего ресурса Samba. Например: \\10.0.0.10\acct или \\cluacct\acct. Для подключения общего ресурса Samba Windows-клиент может также выполнить операцию Map Network Drive (Подключить сетевой диск). Убедитесь в том, что в имени ресурса указывается имя компьютера, соответствующее плавающему IP-адресу службы. Согласно приведенной выше выдержке из файла /etc/hosts; правильным именем этого ресурса высокой степени доступности будет \\cluacct\acct. Обращение к этому ресурсу не должно производиться по имени узла кластера. Например, не обращайтесь к ресурсу по имени \\clu3\acct или \\clu4\acct. Если вы обратились к ресурсу по имени узла кластера (например \\clu3\acct), Windows-клиенты смогут получать доступ к этому ресурсу, только если он действительно обслуживается узлом clu3, таким образом вы теряете высокую степень доступности ресурса.

В отличие от протокола NFS, применяемый в Windows протокол CIFS/SMB использует больше состояний. Как следствие, в Windows-окружении, каждое отдельное приложение должно соответствующим образом реагировать на отсутствие немедленного ответа от сервера Samba. В случае запланированного перемещения службы или неожиданного сбоя, в течении некоторого времени клиенты Windows не будут получать ответа от сервера Samba. Разработанные корректно приложения Windows будут обращаться к ресурсу повторно в течении этого интервала.

Такие приложения смогут дождаться ответа службы, таким образом перемещение или перенос службы проходит для Windows клиентов незаметно. Напротив, некорректно разработанные приложения Windows выдадут сообщения об ошибке в случае отказа или перемещении службы, указывая на невозможность подключения к ресурсам. Возможно вам потребуется повторить операцию или перезапустить Windows-приложение для повторного подключения к общему ресурсу Samba, если это приложение повело себя некорректно при сбое или перемещении службы.

Поведение Windows-клиентов в ответ на сбой или перемещение службы samba также зависит от версии системы Windows, установленной на клиентском компьютере. Например, операционные системы, основанные на версии Windows 98 часто выдают ошибку, например, такую, "The network path was not found (Сетевой путь указан неверно)". Тогда как более поздние версии, такие как Windows 2000, при тех же обстоятельствах продолжают работать.