ピアツーピアのrsyncレプリケーションの実装

この実装では、rsyncテクノロジを使用し、ピア・ツー・ピア・モデルに従います。このモデルでは、コピーは中間層ピア・ホスト間で直接実行されます。各ノードには、そのピアへのSSH接続があり、SSHを介してrsyncコマンドを使用してプライマリ中間層ファイル・アーティファクトをレプリケートします。

rsyncピア・ツー・ピア・レプリケーションを実装する利点は次のとおりです。

  • これは任意の中間層に適用可能な汎用ソリューションであるため、複数のシステムがある場合は、それらのすべてで同じアプローチを使用できます。
  • これは、基礎となるストレージ・タイプに依存しません。ブロック・ボリューム、NFSなどに存在するファイル・アーティファクトのレプリケートに有効です。
  • 中央ホストやストレージなど、追加のハードウェアは必要ありません。
  • ストレージはセカンダリ・ノードにマウントされたままにできます。したがって、スイッチオーバーまたはフェイルオーバー操作ごとにセカンダリにストレージを接続またはマウントする追加の手順は必要ありません。

rsyncピア・ツー・ピアを実装する際の考慮事項は次のとおりです。

  • 各環境のカスタム・スクリプトを作成し、定期的に実行することはユーザーの責任です。
  • レプリカの方向を逆にする方法を実装するのはユーザーの責任です。
  • スクリプトは一元化されていないため、多くのノードにわたるメンテナンスが必要であるため、大規模なクラスタではソリューションがより複雑になります。

ピアツーピアのrsyncスクリプトでは、プルまたはプッシュ・モデルを使用できます。プル・モデルでは、リモート・ノードからローカル・ノードにファイルがコピーされます。"push"モデルでは、スクリプトはローカル・ノードからリモート・ノードにファイルをコピーします。スタンバイ・ロールを持つノードでrsyncスクリプトを実行すると、プライマリからコンテンツを取得するプル操作が実行されます。プライマリ・ロールを持つノードでrsyncスクリプトを実行すると、内容をセカンダリ・ノードにコピーするプッシュ操作が実行されます。Oracleでは、ピアツーピアのプル・モデルをお薦めします。このように、rsyncスクリプトは、コピーのすべての操作(たとえば、コピーのchecksum比較)がセカンダリ・ノードで実行されるため、プライマリ・システムのホストのより少ないリソースを使用します。

rsyncピア・ツー・ピアのレプリケーションの設定

rsyncピア・ツー・ピア・モデルを実装するには、次のことが必要です。

  • ホストとそのピア・ホスト間のSSH接続を許可します。
  • rsyncを使用して中間層ファイル・アーティファクトをプライマリ・ホストからセカンダリ・ホストにコピーするスクリプトを作成します。rsyncスクリプトは、コピーから特定のフォルダ(ロック・ファイル、ログ、一時ファイルなど)をスキップできます。
  • コピーからその情報を除外するか、レプリカの後に適切な情報で更新することによって、サイト固有の情報を管理する方法を実装します。
  • これらのスクリプトを定期的に実行するようにスケジュールします。
  • スイッチオーバーまたはフェイルオーバー後にレプリカの方向を変更するメカニズム。このメカニズムは、サイトの役割を識別する動的チェック、またはスイッチオーバーまたはフェイルオーバー後の手動変更(たとえば、適切なスクリプトの無効化および有効化)である場合があります。
例1: ピアツーピア・レプリケーション用のOracle Fusion Middleware障害時リカバリ・ガイドのrsyncスクリプトの使用

ノート:

この例は、すべての中間層システムに適用されます。『Oracle Fusion Middleware障害時リカバリ・ガイド』で提供されるスクリプトを使用して、WebLogic DRシステムの中間層レプリカ(rsync_for_WLS.shおよびrsync_copy_and_validate.sh)を実行します。しかし、これらのスクリプトは一般的に適用可能で、OCIの中間層ファイル・アーティファクトを同期するのに十分な柔軟性を提供します。これらのリソースやその他のリソースへのリンクについては、「詳細の参照」を参照してください。

この例では、セカンダリサイトの各ホストは、そのピアプライマリノードとの接続を確立し、内容のプルを実行します。これらのスクリプトを使用して中間層レプリケーションを設定するには、『Oracle Fusion Middleware障害時リカバリ・ガイド』プライマリ・ファイル・システムのセカンダリ・サイトへのレプリケートに関する項、特にレプリケーションの再同期アプローチおよびピア・ツー・ピアの使用のステップを参照してください。



dr-scripts-peer-peer-oracle.zip

rsyncピア・ツー・ピアのレプリケーションの検証

スイッチオーバーまたはフェイルオーバー操作では、プロセスが起動される前に、レプリケートされた情報がスタンバイ・サイトで使用可能である必要があります。これは、(スタンバイ・データベースをスナップショット・モードでオープンして)セカンダリ・システムを検証する場合にも必要です。

この実装では、ストレージは常にスタンバイで使用可能です。ボリュームをアタッチまたはマウントする必要はありません。必要な唯一のアクションは、コンテンツの最新バージョンが含まれていることを確認することです。

  1. レプリケーションを実行します。
    スクリプトを実行して、コンテンツの最新バージョンをレプリケートします。
  2. 定期レプリケーションを無効にします。
    最後のレプリカの終了後、すべてのレプリカ・スクリプトを無効にします。それ以外の場合は、スイッチオーバー、フェイルオーバー、または検証手順を妨げる可能性があります。操作後、適切な方向でスクリプトを再度有効にします。
  3. セカンダリ中間層ホストでサイト固有の情報を置き換えます。
    レプリケートするファイル・システム・アーティファクトにサイト固有の情報が含まれている場合は、コピーによって上書きされないか、レプリカ後に更新されることを確認してください。

    ヒント :

    たとえば、rsyncスクリプトは、tnsnames.oraファイルをコピーからスキップするため、レプリケーションごとに変更する必要はありません。

    システムでOracle Autonomous Databaseが使用されている場合は、セカンダリ・リージョンのデータベースに接続するために必要なウォレット・フォルダをセカンダリにリストアします。置換スクリプトfmwadb_switch_db_conn.shは、すべてのスタンバイ中間層ホストで使用できます。これには、入力として、セカンダリ・オリジナルのウォレットがあるパスおよびウォレット・パスワードが必要です。

rsyncピア・ツー・ピアの進行中のレプリケーションの実行

レプリケーション・スクリプトを定期的に実行して、セカンダリ・ドメインとプライマリの同期を維持します。

中間層ホストからrsyncを使用する場合は、次の推奨事項に従ってください。

  • OS crontabまたは別のスケジューリング・ツールを使用して、レプリケーション・スクリプトを定期的に実行します。たとえば、『Oracle Fusion Middleware障害時リカバリ・ガイド』で提供されるrsyncスクリプトを使用する場合は、「同期スクリプトによる継続レプリケーションのスケジュール」の項で説明されているステップに従います。これらのリソースやその他のリソースへのリンクについては、このプレイブックの「詳細」を参照してください。レプリケーションの頻度については、このプレイブックの先頭にある中間層ファイル・アーティファクトで説明されているガイドラインに従ってください。
  • 中間層プロセスをスタンバイ・サイトで停止したままにします。変更のレプリケート中にサーバーがスタンバイ・サイトで稼働している場合、その変更は次回起動時に有効になります。スタンバイ・サイトを検証する場合、またはスイッチオーバーまたはフェイルオーバーの手順中にのみ起動します。
  • 各サイトに固有の情報を最新の状態に維持します。たとえば、ファイル・システムにAutonomous Databaseに接続するためのアーティファクトを含むフォルダが含まれている場合は、このフォルダのバックアップ・コピーを保持します。ウォレットで更新を実行する場合は、ウォレット・フォルダのバックアップを更新してください。このようにして、後続のスイッチオーバーおよびフェイルオーバーで正しくリストアされます。
  • スイッチオーバーまたはフェイルオーバー後、レプリカの方向を逆にします。これは、特定の実装によって異なります。これは、アクティブ・サイトのユーザーを識別する動的チェックを使用するか、スイッチオーバーまたはフェイルオーバー後の手動変更を使用して、適切なスクリプトを無効化および有効化することで実行できます。たとえば、『Oracle Fusion Middleware障害時リカバリ・ガイド』で提供されるrsyncスクリプトを使用して、レプリカをもう一方の方向で実行するための同等のスクリプトを作成してください。crontabまたはスケジュール済ツールで、実際のロールに適したスクリプトのみを有効にします。