第7章 地理レプリケーションの構成

地理レプリケーションは、障害回復を目的として、地理的に分散したクラスタ間でデータをミラー化する機能を提供します。ミラー化プロセスは非同期であり、定期的に実行され、変更されたファイルのみが複製されます。この機能は、LAN、WANまたはインターネットを介して使用できます。レプリケーションは非同期であるため、アーキテクチャはプライマリ・セカンダリのストレージ・モデルに従って、プライマリ・ボリュームの変更がセカンダリ・ボリュームに複製されます。障害が発生した場合は、セカンダリ・ボリュームからデータをリストアできます。

この章では、地理レプリケーションのプロセス、最小要件、および機能をデプロイする環境を構成するためのステップ(使用するコマンドを含む)について説明します。

7.1 地理レプリケーションについて

地理レプリケーションの最も重要なユース・ケースは、障害回復に関するものです。あるGlusterボリュームから、地理的に異なる別のクラスタでホストされている別のGlusterボリュームへの、データの非同期コピーを実行します。コピーは、SSH接続を介してバックエンドのrsyncプロセスを使用して実行されます。

地理レプリケーションでは、プライマリ・クラスタが構成済ボリュームにデータをホストすることを前提としています。プライマリ・クラスタのデータに加えられた変更は、セカンダリ・クラスタの構成済ボリュームに定期的にコピーされます。

プライマリ・クラスタに障害が発生した場合は、セカンダリ・クラスタからデータをリストアすることも、セカンダリ・クラスタを昇格して、プライマリ・クラスタを置き換えることもできます。

Glusterは、地理レプリケーションが構成されている個別のクラスタ間の実際の物理的な場所またはネットワークについては関与しません。地理レプリケーションは、同じLAN上、WAN上、インターネット経由、または同じシステムでホストされている仮想マシン間で構成できます。関与するクラスタがネットワーク経由でSSHを介して相互にアクセスできる場合は、地理レプリケーションを構成できます。

地理レプリケーションにより、プライマリ・クラスタからのデータが複数のセカンダリ・クラスタにコピーされるマルチサイト・ミラー化の可能性、およびセカンダリ・クラスタに複製されるデータを別のセカンダリ・クラスタにミラー化できるカスケード・ミラー化の可能性も促進されます。

このドキュメントは、標準のGlusterボリュームのデータが、単一のセカンダリ・クラスタでホストされているボリュームに地理的に複製される、基本的なテスト済の構成に重点を置いています。

地理レプリケーションの詳細は、アップストリームのドキュメント(https://docs.gluster.org/en/latest/Administrator%20Guide/Geo%20Replication/)を参照してください

7.2 地理レプリケーションの一般的な要件

地理レプリケーションでは、少なくとも2つのGlusterクラスタが、各クラスタでボリュームにアクセスできるレベルに構成される必要があります。1つのクラスタがプライマリ・クラスタとして扱われ、2つ目のクラスタがセカンダリ・クラスタとして扱われます。プライマリ・クラスタは、セカンダリ・クラスタの構成前にすでに使用されている可能性があります。

クラスタは、第2章Gluster Storage for Oracle Linuxのインストールに記載されている要件に従って設定および構成する必要があります。特に、両方のクラスタのすべてのノードで、chronyなどのNTPサービスを使用したネットワーク同期時間が必要です。

地理レプリケーションは、プライマリ・クラスタとセカンダリ・クラスタの間でSSHを介して実行されます。ノード間のフェイルオーバーが適切に処理されるように、地理レプリケーションに参加するすべてのクラスタのすべてのノードにアクセスできる必要があります。ネットワークとファイアウォールの構成によって、このアクセスが容易になる必要があります。

ミラー化に使用しているセカンダリ・クラスタ・ボリュームにデータがなく、プライマリ・クラスタのコンテンツをミラー化するのに十分な容量があるようにします。

両方のクラスタのすべてのノードにglusterfs-geo-replicationパッケージをインストールします。たとえば:

sudo yum install glusterfs-geo-replication

ほとんどのOracle Linuxシステムでは、その他の一般的なソフトウェア要件はデフォルトで満たされますが、次のパッケージの最新の使用可能なバージョンがあることを確認する必要があります。

  • rsync

  • openssh

  • glusterfs

  • glusterfs-fuse

重要

地理レプリケーションをGlusterスナップショット機能と組み合せて使用する場合、リストア中にプライマリ・ノードとセカンダリ・ノードの両方でスナップショットの順序に誤りがないようにします。したがって、スナップショット操作を実行するときは、常に、最初に地理レプリケーションを一時停止します。セッションが一時停止された後で、ボリュームのスナップショットを取得するか、以前のスナップショットをリストアします。これらの操作は、プライマリ・ノードとセカンダリ・ノードの両方で実行する必要があります。その後、地理レプリケーション・セッションを再開します。

7.3 地理レプリケーションのためのセカンダリ・ノードの設定

データの同期に使用されるSSH接続がrootユーザーへの接続に必要な場合、地理レプリケーション・サービスは、そのrootアカウントを使用してプライマリ・クラスタからセカンダリ・クラスタに接続できます。ただし、rootユーザーのSSHアクセスの公開は、セキュリティ上の理由からお薦めできません。本番システムでは、かわりに、各セカンダリ・ノード・システムでこれらの接続を処理するために特別にユーザーおよびグループを作成する必要があります。

sudo useradd georep

georepは、ノード間の接続に使用するユーザーです。このユーザーに対して作成された既存のグループに変数を設定できます。または、新規ユーザーを追加する別のグループを作成できます。

構成中に後でホストにSSH鍵をコピーできるように、少なくとも1つのセカンダリ・ホストでこのユーザーのパスワードを設定する必要があります。

これで、適切な権限でミラー化に使用するボリュームのマウントが自動的に処理されるように、gluster mountbrokerを構成できるようになりました。このタスクでは、任意の1つのセカンダリ・ノード・システムでgluster-mountbrokerを実行します。

  1. 作成した新しいアカウントに対して、gluster mountbrokerを設定します。

    sudo gluster-mountbroker setup /var/mountbroker-root georep

    このコマンドでは、mountbrokerによって処理されるすべてのボリュームのルート・フォルダが設定されます。通常、フォルダは/var/mountbroker-rootに設定されますが、セカンダリ・ノードの任意の場所を定義できます。このコマンドにより、すべてのノードにディレクトリが作成されます。georepを、このフォルダへのアクセス権を持つグループに置き換えます。通常、georepは、以前に作成したユーザー名と一致します。ただし、複数のユーザーがこのデータにアクセスできる場合は、より幅広いグループを定義する必要がある場合があります。

  2. 既存のセカンダリ・クラスタのボリュームをmountbrokerに追加します。

    sudo gluster-mountbroker add secondaryvol georep

    secondaryvolは、セカンダリ・クラスタで使用するボリュームです。

  3. mountbrokerのステータスをチェックして、すべてが正しく設定されているかどうかを確認します。

    sudo gluster-mountbroker status
  4. すべてのセカンダリ・クラスタ・ノードでglusterdサービスを再起動します。

    sudo systemctl restart glusterd

7.4 地理レプリケーション・セッションの構成

この手順では、後でセカンダリ・クラスタの各ノードのauthorized_keysファイルにコピーされるSSH鍵を作成します。

  1. プライマリ・クラスタのノードで、最初のSSH鍵を作成します。

    sudo ssh-keygen
  2. パスフレーズ・プロンプトで、[Enter]を押します。

  3. 作成した鍵を、georepユーザーのセカンダリ・クラスタ内のノードにコピーします。

    sudo ssh-copy-id georep@secondary-node1.example.com
  4. SSH鍵を作成したのと同じプライマリ・クラスタ・ノードで、次のコマンドを実行します。

    sudo gluster-georep-sshkey generate

    このコマンドにより、すべてのプライマリ・ノードにコピーされる個別の鍵が作成されます。鍵は、地理レプリケーション中にセカンダリ・ノードとの後続との通信に使用されます。

  5. 引き続き同じノードで、地理レプリケーション・セッションを作成します。

    sudo gluster volume geo-replication myvolume georep@secondary-node1.example.com::secondaryvol create push-pem
    myvolume

    複製されるプライマリ・クラスタのボリューム

    secondary-node1.example.com

    セカンダリ・クラスタのノードのFQDNまたはIPアドレス。

    secondaryvol

    レプリケーションに使用されるセカンダリ・クラスタのボリューム。

    このコマンドにより、プライマリ・クラスタ・ノードの公開鍵がセカンダリ・クラスタのノードにコピーされます。

  6. セカンダリ・ノードで、georepに対してこれらの鍵を使用するように環境を構成します。

    sudo /usr/libexec/glusterfs/set_geo_rep_pem_keys.sh georep myvolume secondaryvol

7.5 地理レプリケーションの起動、停止およびステータスの確認

地理レプリケーション・セッションを構成したら、次のコマンドを使用してレプリケーションを起動します。

sudo gluster volume geo-replication myvolume georep@secondary-node1.example.com::secondaryvol start

ボリュームの地理レプリケーションを停止するには、startstopに置き換えます。

実行中のすべての地理レプリケーションのステータスを確認するには、次のコマンドを実行します。

sudo gluster volume geo-replication status

コマンド出力には、地理レプリケーションの同期に使用されている各クラスタのクラスタ・ノードが表示されます。地理レプリケーション・セッションのステータスは、次のいずれかになります。

  • Initializing: セッションが起動し、最初の接続が行われています。

  • Created: 地理レプリケーション・セッションが作成されましたが、起動されていません。

  • Active: このノードのgsyncデーモンはアクティブであり、データを同期しています。Active状態で、データ同期を処理するのは、常にプライマリ・クラスタの1つのレプリカ・ペアのみです。Activeのノードに障害が発生した場合、PassiveのノードがActiveに昇格されます。

  • Passive: アクティブ・ノードのレプリカ・ペア。クラスタ内のPassiveのノードは、現在Activeのノードに障害が発生した場合にActiveステータスに昇格されるように待機します。

  • Faulty: Faultyステータスは、地理レプリケーション・セッションの一時的または重大な問題を示している可能性があります。場合によっては、地理レプリケーション・サービスによってノードで再起動が使用されると、Faultyステータスが自動修正されることがあります。Faultyステータスが続く場合は、ログ・ファイルを確認して問題を解決してください。次のように、configコマンドを使用すると、参照する必要があるログ・ファイルを特定できます。

    sudo gluster volume geo-replication myvolume georep@secondary-node1.example.com::secondaryvol config log-file
  • Stopped: 地理レプリケーション・セッションが停止しています。