Red Hat Training

A Red Hat training course is available for RHEL 8

8.2. 高可用性クラスターでの Samba の設定

Pacemaker クラスターで Samba サービスを設定するには、クラスター内のすべてのノードでサービスを設定します。

前提条件

  • 高可用性クラスターでの Samba サービス用の GFS2 ファイルシステムの設定 で説明したように、GFS2 ファイルシステムで設定された 2 ノードの Red Hat High Availability クラスター。
  • Samba 共有に使用するために GFS2 ファイルシステム上に作成されたパブリックディレクトリー。この例では、ディレクトリーは /srv/samba/share1 です。
  • このクラスターによってエクスポートされた Samba 共有へのアクセスに使用できるパブリック仮想 IP アドレス。

手順

  1. クラスター内の両方のノードで、Samba サービスを設定し、共有定義をセットアップします。

    1. Samba および CTDB パッケージをインストールします。

      # dnf -y install samba ctdb cifs-utils samba-winbind
    2. ctdbsmbnmb、および winbind サービスが実行されておらず、起動時に開始されていないことを確認してください。

      # systemctl disable --now ctdb smb nmb winbind
    3. /etc/samba/smb.conf ファイルで、Samba サービスを設定し、1 つの共有を持つスタンドアロンサーバーの次の例のように、共有定義をセットアップします。

      [global]
          netbios name = linuxserver
          workgroup = WORKGROUP
          security = user
          clustering = yes
      [share1]
          path = /srv/samba/share1
          read only = no
    4. /etc/samba/smb.conf ファイルを検証します。

      # testparm
  2. クラスター内の両方のノードで、CTDB を設定します。

    1. /etc/ctdb/nodes ファイルを作成し、このノードファイルの例のように、クラスターノードの IP アドレスを追加します。

      192.0.2.11
      192.0.2.12
    2. /etc/ctdb/public_addresses ファイルを作成し、クラスターのパブリックインターフェイスの IP アドレスとネットワークデバイス名をファイルに追加します。public_addresses ファイルで IP アドレスを割り当てる場合は、これらのアドレスが使用されていないこと、および目的のクライアントからルーティング可能であることを確認してください。/etc/ctdb/public_addresses ファイルの各エントリーの 2 番目のフィールドは、対応するパブリックアドレスのクラスターマシンで使用するインターフェイスです。この例の public_addresses ファイルでは、インターフェイス enp1s0 がすべてのパブリックアドレスに使用されます。

      192.0.2.201/24 enp1s0
      192.0.2.202/24 enp1s0

      クラスターのパブリックインターフェイスは、クライアントがネットワークから Samba にアクセスするために使用するインターフェイスです。負荷分散のために、クラスターの各パブリック IP アドレスの A レコードを DNS ゾーンに追加します。これらの各レコードは、同じホスト名に解決される必要があります。クライアントはホスト名を使用して Samba にアクセスし、DNS はクライアントをクラスターのさまざまなノードに分散します。

    3. firewalld サービスを実行している場合は、ctdb および samba サービスに必要なポートを有効にします。

      # firewall-cmd --add-service=ctdb --add-service=samba --permanent
      # firewall-cmd --reload
  3. クラスター内の 1 つのノードで、SELinux コンテキストを更新します。

    1. GFS2 共有上の SELinux コンテキストを更新します。

      [root@z1 ~]# semanage fcontext -at ctdbd_var_run_t -s system_u "/mnt/ctdb(/.)?"
      [root@z1 ~]# restorecon -Rv /mnt/ctdb
    2. Samba で共有されているディレクトリーの SELinux コンテキストを更新します。

      [root@z1 ~]# semanage fcontext -at samba_share_t -s system_u "/srv/samba/share1(/.)?"
      [root@z1 ~]# restorecon -Rv /srv/samba/share1

関連情報