4.3. Samba の設定
以下の手順では、Samba 環境を初期化し、クラスターノードで Samba を設定します。
- クラスターの両方のノードで、以下の手順を実行します。
samba
、ctdb
、cifs-utils
をインストールします。#
yum install samba ctdb cifs-utils
- firewalld デーモンを実行している場合は、以下のコマンドを実行して、
ctdb
とsamba
サービスに必要なポートを有効にします。#
firewall-cmd --add-service=ctdb --permanent
#firewall-cmd --add-service=samba --permanent
#firewall-cmd --reload
- 以下のコマンドを実行して、ctdb や samba サービスが動作しておらず、ブート時に起動しないようにします。これら 2 つのサービスがお使いのシステムに存在して動作しているわけではないことに注意してください。
#
systemctl disable ctdb
#systemctl disable smb
#systemctl disable nmb
#systemctl disable winbind
#systemctl stop ctdb
#systemctl stop smb
#systemctl stop nmb
#systemctl stop winbind
/etc/samba/smb.conf
ファイルでは、Samba サーバーを設定して[public]
共有定義を設定します。以下に例を示します。#
cat << END > /etc/samba/smb.conf
[global]
netbios name = linuxserver
workgroup = WORKGROUP
server string = Public File Server
security = user
map to guest = bad user
guest account = smbguest
clustering = yes
ctdbd socket = /tmp/ctdb.socket
[public]
path = /mnt/gfs2share/public
guest ok = yes
read only = no
END
この例で見られるように Samba をスタンドアローンサーバーとして設定する方法や、testparm ユーティリティーでsmb.conf
ファイルを検証する方法は、『システム管理者のガイド』の ファイルとプリントサーバーを参照してください。- クラスターノードの IP アドレスを
/etc/ctdb/nodes
ファイルに追加します。#
cat << END > /etc/ctdb/nodes
192.168.1.151
192.168.1.152
END
- クラスターのノード間における負荷分散は、このクラスターによってエクスポートされた Samba 共有へのアクセスに使用できる 2 つ以上の IP アドレスを
/etc/ctdb/public_addresses
ファイルに追加できます。この IP は、Samba サーバーの名前の DNS で設定する必要があるアドレスで、SMB クライアントが接続するアドレスです。複数の IP アドレスで 1 つのタイプ A の DNS レコードとして Samba サーバーの名前を設定し、ラウンドロビンがクラスターのノードにわたりクライアントを分散できるようにします。この例では、DNS エントリーlinuxserver.example.com
が、/etc/ctdb/public_addresses
ファイル下にリストされている両方のアドレスで定義されています。これにより、DNS によって、ラウンドロビン方式でクラスターノードにわたり Samba クライアントが分散されます。この操作を行う際、DNS エントリーがニーズに一致する必要があります。このクラスターによってエクスポートされた Samba 共有へのアクセスに使用できる IP アドレスを/etc/ctdb/public_addresses
ファイルに追加します。#
cat << END > /etc/ctdb/public_addresses
192.168.1.201/24 eth0
192.168.1.202/24 eth0
END
- Samba グループを作成し、パブリックテスト共有ディレクトリーのローカルユーザーを追加して、以前に作成したグループをプライマリーグループとして設定します。
#
groupadd smbguest
#adduser smbguest -g smbguest
- CTDB 関連のディレクトリーで SELinux コンテキストが 正しいことを確認してください。
#
mkdir /var/ctdb/
#chcon -Rv -u system_u -r object_r -t ctdbd_var_lib_t /var/ctdb/
changing security context of ‘/var/ctdb/’ #chcon -Rv -u system_u -r object_r -t ctdbd_var_lib_t /var/lib/ctdb/
changing security context of ‘/var/lib/ctdb/’
- クラスターの 1 つのノードで、以下の手順に従います。
- CTDB ロックファイルとパブリック共有のディレクトリーを設定します。
[root@z1 ~]#
mkdir -p /mnt/gfs2share/ctdb/
[root@z1 ~]#mkdir -p /mnt/gfs2share/public/
- GFS2 共有上の SELinux コンテキストを更新します。
[root@z1 ~]#
chown smbguest:smbguest /mnt/gfs2share/public/
[root@z1 ~]#chmod 755 /mnt/gfs2share/public/
[root@z1 ~]#chcon -Rv -t ctdbd_var_run_t /mnt/gfs2share/ctdb/
changing security context of ‘/mnt/gfs2share/ctdb/’ [root@z1 ~]#chcon -Rv -u system_u -r object_r -t samba_share_t /mnt/gfs2share/public/
changing security context of ‘/mnt/gfs2share/public’