4.3. Samba の設定

以下の手順では、Samba 環境を初期化し、クラスターノードで Samba を設定します。
  1. クラスターの両方のノードで、以下の手順を実行します。
    1. sambactdbcifs-utils をインストールします。
      # yum install samba ctdb cifs-utils
    2. firewalld デーモンを実行している場合は、以下のコマンドを実行して、 ctdbsamba サービスに必要なポートを有効にします。
      # firewall-cmd --add-service=ctdb --permanent
      # firewall-cmd --add-service=samba --permanent
      # firewall-cmd --reload
    3. 以下のコマンドを実行して、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
    4. /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 ファイルを検証する方法は、『システム管理者のガイド』の ファイルとプリントサーバーを参照してください。
    5. クラスターノードの IP アドレスを /etc/ctdb/nodes ファイルに追加します。
      # cat << END > /etc/ctdb/nodes
      192.168.1.151
      192.168.1.152
      END
    6. クラスターのノード間における負荷分散は、このクラスターによってエクスポートされた 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
    7. Samba グループを作成し、パブリックテスト共有ディレクトリのローカルユーザーを追加して、以前に作成したグループをプライマリグループとして設定します。
      # groupadd smbguest
      # adduser smbguest -g smbguest
    8. 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/’
  2. クラスターの 1 つのノードで、以下の手順に従います。
    1. CTDB ロックファイルとパブリック共有のディレクトリを設定します。
      [root@z1 ~]# mkdir -p /mnt/gfs2share/ctdb/
      [root@z1 ~]# mkdir -p /mnt/gfs2share/public/
    2. 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’