6.3.2. Gluster NFS (非推奨)

警告
Gluster-NFS は、Red Hat Gluster Storage 3.5 では非推奨です。Red Hat では Gluster-NFS の使用を推奨しておらず、Red Hat Gluster Storage 3.5.3 にアップグレードする新規デプロイメントおよび既存デプロイメントでのその使用をサポートしません。
NFSv3 規格をサポートする Linux および他のオペレーティングシステムは、NFS を使用して Red Hat Gluster Storage ボリュームにアクセスできます。
注記
Red Hat Gluster Storage 3.2 以降では、GlusterFS サーバーは、作成される新規ボリュームについてデフォルトで無効にされます。必要に応じて、新しいボリュームで Gluster NFS サーバーを明示的に再起動できます。これは、以下のようにクライアントで mount -t nfs コマンドを実行できます。
# mount -t nfs HOSTNAME:VOLNAME MOUNTPATH
サーバーノードのいずれかで以下を行います。
# gluster volume set VOLNAME nfs.disable off
ただし、Gluster NFS サーバーを使用した既存のボリュームは、Red Hat Gluster Storage 3.2 にアップグレードした後も影響を受けず、Gluster NFS サーバーを暗黙的に有効化します。
オペレーティングシステムでの NFSv3 標準の実装によっては、運用上の問題が発生する可能性があります。NFSv3 の使用時に問題が発生した場合は、Red Hat サポートに連絡し、Red Hat Gluster Storage クライアントのオペレーティングシステムの互換性と、NFSv3 に影響する既知の問題に関する情報を受け取ります。
NFS ACL v3 がサポートされています。これにより、NFS クライアントでの getfacl および setfacl 操作が可能になります。nfs.acl オプションを使用して、glusterFS NFS サーバーにアクセス制御リスト (ACL) の設定に、以下のオプションが提供されます。以下に例を示します。
  • nfs.acl ON を設定するには、以下のコマンドを実行します。
    # gluster volume set VOLNAME nfs.acl on
  • nfs.acl OFF を設定するには、以下のコマンドを実行します。
    # gluster volume set VOLNAME nfs.acl off
注記
ACL はデフォルトで ON です。
Red Hat Gluster Storage には Network Lock Manager (NLM) v4 が含まれています。NLM プロトコルにより、NFSv3 クライアントはネットワーク全体のファイルをロックできます。NLM は、NFSv3 マウントポイント上でアプリケーションが標準の fcntl() (POSIX) および flock() (BSD) ロック呼び出しを使用して、クライアント全体でアクセスを同期するようにするのに必要です。
本セクションでは、NFS を使用して Red Hat Gluster Storage ボリュームをマウントする方法を説明します (手動および自動の両方)。また、ボリュームが正常にマウントされたことを確認する方法を説明します。
重要
Red Hat Enterprise Linux 7 では、以下のコマンドを使用して、ランタイムおよび永続モードのアクティブなゾーンでファイアウォールサービスを有効にします。
アクティブゾーンの一覧を取得するには、以下のコマンドを実行します。
# firewall-cmd --get-active-zones
アクティブなゾーンでファイアウォールサービスを許可するには、次のコマンドを実行します。
# firewall-cmd --zone=zone_name --add-service=nfs --add-service=rpc-bind
# firewall-cmd --zone=zone_name --add-service=nfs --add-service=rpc-bind --permanent

6.3.2.1. Gluster NFS 用の CTDB の設定 (非推奨)

複製ボリューム環境では、Samba 共有に高可用性とロック同期を提供するように CTDB ソフトウェア (Cluster Trivial Database) を設定する必要があります。CTDB は、仮想 IP アドレス (VIP) およびハートビートサービスを追加して高可用性を提供します。
信頼されたストレージプールのノードに障害が発生した場合、CTDB により、障害が発生したノードがホストしていた仮想 IP アドレスを別のノードを引き継ぐことができます。これにより、提供されるサービスの IP アドレスが常に利用できるようになります。ただし、ロックはフェイルオーバーの一部として移行されません。
重要
Red Hat Enterprise Linux 7 では、以下のコマンドを使用して、ランタイムおよび永続モードのアクティブなゾーンで CTDB ファイアウォールサービスを有効にします。
アクティブゾーンの一覧を取得するには、以下のコマンドを実行します。
# firewall-cmd --get-active-zones
アクティブゾーンにポートを追加するには、次のコマンドを実行します。
# firewall-cmd --zone=zone_name --add-port=4379/tcp
# firewall-cmd --zone=zone_name --add-port=4379/tcp  --permanent
注記
Amazon Elastic Compute Cloud (EC2) は仮想 IP をサポートしないため、このソリューションとの互換性はありません。
6.3.2.1.1. 前提条件
Red Hat Gluster Storage Server に CTDB を設定する前に、以下の手順を実行します。
  • 古いバージョンの CTDB (バージョン <= ctdb1.x) がすでにある場合は、以下のコマンドを実行して CTDB を削除します。
    # yum remove ctdb
    古いバージョンを削除したら、最新の CTDB のインストールに進みます。
    注記
    最新の CTDB パッケージを取得するには、システムが samba チャンネルにサブスクライブしていることを確認してください。
  • 以下のコマンドを使用して、NFS サーバーとして使用されるすべてのノードに CTDB をインストールします。
    # yum install ctdb
  • CTDB は、デフォルトで TCP ポート 4379 を使用します。このポートが Red Hat Gluster Storage サーバー間でアクセスできることを確認します。
6.3.2.1.2. Gluster NFS のポートおよびファイアウォール情報
GNFS-Client マシンで次のコマンドを実行して、statd サービス、nlm サービス、および portmapper サービスが使用するポートを追加するように firewalld を設定します。
# firewall-cmd --zone=public --add-port=662/tcp --add-port=662/udp \
--add-port=32803/tcp --add-port=32769/udp \
--add-port=111/tcp --add-port=111/udp
# firewall-cmd --zone=public --add-port=662/tcp --add-port=662/udp \
--add-port=32803/tcp --add-port=32769/udp \
--add-port=111/tcp --add-port=111/udp --permanent
クライアントおよびサーバーマシンで以下の手順を実行します。
  • Red Hat Enterprise Linux 7 では、以下のように /etc/sysconfig/nfs ファイルを編集します。
    # sed -i '/STATD_PORT/s/^#//' /etc/sysconfig/nfs
    注記
    この手順は、Red Hat Enterprise Linux 8 には適用されません。
  • サービスを再起動します。
    • Red Hat Enterprise Linux 6 の場合:
      # service nfslock restart
      # service nfs restart
      重要
      Red Hat Gluster Storage は 3.5 Batch Update 1 以降では、Red Hat Enterprise Linux 6 (RHEL 6) でサポートされません。インストールガイドの『バージョンの詳細』表および『Red Hat Gluster Storage ソフトウェアコンポーネントおよびバージョン』 を参照してください。
    • Red Hat Enterprise Linux 7 の場合:
      # systemctl restart nfs-config
      # systemctl restart rpc-statd
      # systemctl restart nfs-mountd
      # systemctl restart nfslock
      注記
      この手順は、Red Hat Enterprise Linux 8 には適用されません。
6.3.2.1.3. Red Hat Gluster Storage サーバーでの CTDB の設定
Red Hat Gluster Storage サーバーで CTDB を設定するには、以下の手順を実行します。
  1. 複製ボリュームを作成します。このボリュームは、ゼロバイトロックファイルのみをホストするため、最小サイズのブリックを選択します。複製ボリュームを作成するには、以下のコマンドを実行します。
    # gluster volume create volname replica n ipaddress:/brick path.......N times
    詳細は以下のようになります。
    N: Gluster NFS サーバーとして使用されるノード数。各ノードは、1 つのブリックをホストする必要があります。
    以下に例を示します。
    # 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
  2. 以下のファイルの META="all" ステートメントの all を、新たに作成したボリューム名に置き換えます。
    /var/lib/glusterd/hooks/1/start/post/S29CTDBsetup.sh
    /var/lib/glusterd/hooks/1/stop/pre/S29CTDB-teardown.sh
    以下に例を示します。
    META="all"
      to
    META="ctdb"
  3. ボリュームを起動します。
    # gluster volume start ctdb
    最初のプロセスの一環として、S 29CTDBsetup.sh スクリプトはすべての Red Hat Gluster Storage サーバーで実行され、マウント用に /etc/fstab のエントリーを追加し、Gluster NFS サーバーのすべてのノードで /gluster/lock にボリュームをマウントします。また、起動時に CTDB サービスの自動起動も有効にします。
    注記
    特別な CTDB ボリュームを停止すると、S29CTDB-teardown.sh スクリプトはすべての Red Hat Gluster Storage サーバーで実行し、マウント用に /etc/fstab のエントリーを削除し、/gluster/lock でボリュームをアンマウントします。
  4. /etc/sysconfig/ctdb ファイルが Gluster NFS サーバーとして使用されるすべてのノードに存在するかどうかを確認します。このファイルには、Red Hat Gluster Storage の推奨される CTDB 設定が含まれます。
  5. Gluster NFS サーバーとして使用されるすべてのノードに /etc/ctdb/nodes ファイルを作成し、これらのノードの IP をファイルに追加します。
    10.16.157.0
    10.16.157.3
    10.16.157.6
    ここに一覧表示される IP は、NFS サーバーのプライベート IP です。
  6. IP フェイルオーバーを必要とする Gluster NFS サーバーとして使用するすべてのノードで、/etc/ctdb/public_addresses ファイルを作成し、CTDB 作成すべき仮想 IP をこのファイルに追加します。これらの IP アドレスを以下の形式に追加します。
    <Virtual IP>/<routing prefix><node interface>
    以下に例を示します。
    192.168.1.20/24 eth0
    192.168.1.21/24 eth0
  7. 以下のコマンドを実行して、すべてのノードで CTDB サービスを起動します。
    # service ctdb start
注記
gNFS を備えた CTDB はノードレベルの高可用性のみを提供し、NFS サービスの障害は検出できません。したがって、ノードの稼働中に NFS サービスがダウンした場合、CTDB は高可用性を提供しません。