6.4.2. Samba への CTDB の設定
SMB を使用してレプリケーションを使用するボリュームを共有する場合は、高可用性とロック同期を提供するように CTDB (Cluster Trivial Database) を設定する必要があります。
CTDB は、仮想 IP アドレス (VIP) およびハートビートサービスを追加して高可用性を提供します。信頼されたストレージプールのノードに障害が発生した場合、CTDB により、障害が発生したノードがホストしていた仮想 IP アドレスを別のノードを引き継ぐことができます。これにより、提供されるサービスの IP アドレスが常に利用できるようになります。
重要
Amazon Elastic Compute Cloud (EC2) は仮想 IP をサポートしないため、このソリューションとの互換性はありません。
前提条件
- 古いバージョンの CTDB (バージョン <= ctdb1.x) がすでにある場合は、以下のコマンドを実行して CTDB を削除します。
# yum remove ctdb
古いバージョンを削除したら、最新の CTDB のインストールに進みます。注記最新の CTDB パッケージを取得するには、システムが samba チャンネルにサブスクライブしていることを確認してください。 - 以下のコマンドを実行して、Samba サーバーとして使用されるすべてのノードに CTDB をインストールします。
# yum install ctdb
- Samba の CTDB ベースの高可用性環境では、ロックはフェイルオーバー時に移行されません。
- ランタイムおよび永続モードのアクティブなゾーンで CTDB ファイアウォールサービスを有効にします。以下のコマンドは、Red Hat Enterprise Linux 7 をベースとするシステムを対象にしています。アクティブゾーンの一覧を取得するには、以下のコマンドを実行します。
# firewall-cmd --get-active-zones
アクティブゾーンにポートを追加するには、次のコマンドを実行します。# firewall-cmd --zone=zone_name --add-port=4379/tcp # firewall-cmd --zone=zone_name --add-port=4379/tcp --permanent
ベストプラクティス
- CTDB には、Gluster 内部ネットワークとは異なるブロードキャストドメインが必要です。Samba でエクスポートされた Gluster ボリュームにアクセスするために Windows クライアントが使用するネットワークは、内部の Gluster ネットワークとは異なります。これを実行できないと、ノード間に CTDB のフェイルオーバーがある場合や、Windows のファイル共有にアクセスするパフォーマンスが低下した場合に多すぎる可能性があります。たとえば、CTDB がネットワーク 192.168.10.X で実行されている誤った設定例を以下に示します。
Status of volume: ctdb Gluster process TCP Port RDMA Port Online Pid Brick node1:/rhgs/ctdb/b1 49157 0 Y 30439 Brick node2:/rhgs/ctdb/b1 49157 0 Y 3827 Brick node3:/rhgs/ctdb/b1 49157 0 Y 89421 Self-heal Daemon on localhost N/A N/A Y 183026 Self-heal Daemon on sesdel0207 N/A N/A Y 44245 Self-heal Daemon on segotl4158 N/A N/A Y 110627 cat ctdb_listnodes 192.168.10.1 192.168.10.2 cat ctdb_ip Public IPs on node 0 192.168.10.3 0
注記ホスト名 node1、node2、および node3 は、ブリックを設定し、同じネットワーク 192.168.10.X の IP を解決するために使用されます。Windows クライアントは内部 Gluster ネットワークを使用してファイル共有にアクセスしているため、これは当てはまらないはずです。 - また、CTDB ネットワークと Gluster 内部ネットワークは、別の物理インターフェースで実行する必要があります。Red Hat では、パフォーマンスを向上させるために 10GbE インターフェースを推奨します。
- Gluster ネットワークおよび CTDB ネットワークに同じネットワーク帯域幅を使用することが推奨されます。異なるネットワーク速度を使用すると、パフォーマンスのボトルネックが生じる可能性があります。内部ネットワークと外部ネットワークの両方で同じネットワークトラフィックが予想されます。
Red Hat Gluster Storage サーバーでの CTDB の設定
- CTDB ロックファイルを格納するために、複製されたボリュームを新たに作成します。ロックファイルのサイズはゼロバイトであるため、小さいブリックを使用してください。複製されたボリュームを作成するには、以下のコマンドを実行します。N は、複製するノード数に置き換えます。
# gluster volume create volname replica N ip_address_1:brick_path ... ip_address_N:brick_path
以下に例を示します。# gluster volume create ctdb replica 3 10.16.157.75:/rhgs/brick1/ctdb/b1 10.16.157.78:/rhgs/brick1/ctdb/b2 10.16.157.81:/rhgs/brick1/ctdb/b3
- 以下のファイルで、
META="all"
" のステートメントのall
を、すべて 新たに作成されたボリューム名に置き換えます (例:META="ctdb"
)。/var/lib/glusterd/hooks/1/start/post/S29CTDBsetup.sh /var/lib/glusterd/hooks/1/stop/pre/S29CTDB-teardown.sh
/etc/samba/smb.conf
ファイルで、全ノードの global セクションに以下の行を追加します。clustering=yes
- ボリュームを起動します。
# gluster volume start ctdb
S29CTDBsetup.sh スクリプトはすべての Red Hat Gluster Storage サーバーで実行され、マウント用に/etc/fstab
のエントリーを追加し、Samba サーバーがあるすべてのノードで/gluster/lock
にボリュームをマウントします。また、起動時に CTDB サービスの自動起動も有効にします。注記特別な CTDB ボリュームを停止すると、S29CTDB-teardown.sh スクリプトはすべての Red Hat Gluster Storage サーバーで実行し、マウント用に/etc/fstab
のエントリーを削除し、/gluster/lock
でボリュームをアンマウントします。 /etc/crdb
ディレクトリーが Samba サーバーとして使用されるすべてのノードに存在することを確認します。このファイルには、Red Hat Gluster Storage に推奨される CTDB 設定情報が含まれます。- Samba サーバーとして使用されるすべてのノードに
/etc/ctdb/nodes
ファイルを作成し、これらのノードの IP アドレスをファイルに追加します。10.16.157.0 10.16.157.3 10.16.157.6
ここに一覧表示される IP アドレスは、Samba サーバーのプライベート IP アドレスです。 - Samba サーバーとして使用されるノードで、IP フェイルオーバーが必要なノードで
/etc/ctdb/public_addresses
ファイルを作成します。CTDB が作成する仮想 IP アドレスを以下の形式でファイルに追加します。VIP/routing_prefix network_interface
以下に例を示します。192.168.1.20/24 eth0 192.168.1.21/24 eth0
- すべてのノードで CTDB サービスを起動します。RHEL 7 および RHEL 8 で以下を実行します。
# systemctl start ctdb
RHEL 6 で以下を実行します。# service ctdb start