ノート:

同期を使用したOracle Cloud Infrastructureでのリージョン間双方向同期の実行

イントロダクション

リージョン間のオブジェクト・ストレージ同期は、データ・バックアップ、ディザスタ・リカバリ、マルチリージョン・アクセスなど、様々なクラウド・ワークロードに不可欠です。Oracle Cloud Infrastructure(OCI)はOCI Object Storageのレプリケーション機能を提供しますが、ネイティブの双方向同期ソリューションは提供しません。この制限により、ユーザーは、リージョン間でファイルを同期するためにカスタム実装に依存する必要があります。

オープンソースの分散型ファイル同期ツールであるSyncthingは、リアルタイムで動作する連続的な双方向同期を提供します。オブジェクト・レプリケーションのイベントドリブン・モデルに依存するOCI Functionsとは異なり、Syncthingは、ローカルおよびOCI Object Storageマウント・ディレクトリをサポートしながら、仮想マシン(VM)間でファイル構造全体を効率的に同期します。

このチュートリアルでは、OCI Resource Managerスタックを使用して、2つのリージョンにまたがるOCI ComputeインスタンスにSyncthingをデプロイし、ローカルVMストレージとOCI Object Storageマウント・ディレクトリ間の自動双方向同期を可能にします。

考慮事項

s3fsを使用してOCIオブジェクト・ストレージとの同期をマウントする場合:

シンクが良いアイデアになるのはいつですか?

目的

前提条件

タスク1: VMデプロイメントに必要な情報の準備

  1. OCI Resource Managerスタックをダウンロードします。このスタックは、VM.Standard.E5でOracle Linux 8を実行しているVMのデプロイメントを自動化します。フレックス・シェイプ。CloudInitを使用して同期をインストールし、既存のOCIバケットをマウントし、s3fsを使用してアクセスを構成します。VMにはSSHアクセス、パブリックIPがプロビジョニングされ、簡単に識別できるようにタグ付けされます。詳細は、OCIリソース・マネージャ・スタックを参照してください。

  2. 両方のターゲット・リージョンにパブリック・サブネットを持つVCNを作成します。

    スタックは両方の場所にデプロイされ、双方向のクロスリージョン・ストレージ同期のためにVMと同期をプロビジョニングします。デプロイすると、VMのパブリックIPを使用してブラウザで同期にアクセスできます。

  3. テストが実行される各リージョンにOCI Object Storageバケットが存在することを確認します。バケットの表示は「プライベート」にできます。

  4. s3fsマウントの顧客秘密キーを作成します。OCIオブジェクト・ストレージへのアクセスには、顧客秘密キーが使用されます。

    1. OCIコンソールにログインし、「プロファイル」に移動して、ユーザー名および「顧客秘密キー」をクリックします。

      プロファイル- 顧客秘密キー

    2. 「秘密キーの生成」をクリックし、s3fs-accessなどの名前を入力します。

    3. 生成されたキーは、タスク2で後で使用するため、必ずコピーしてください。

      顧客シークレット・アクセス・キー

    4. 「アクセス・キー」をクリックし、後でタスク2で使用する値をコピーします。

      顧客シークレット・アクセス・キー

    5. 「ネームスペース」「バケット詳細」ページからコピーします。このページで後で使用します(タスク2)。

      オブジェクト・ストレージ・バケット・ネームスペース

タスク2: スタックの適用

  1. OCIコンソールにログインし、「開発者サービス」「リソース・マネージャ」に移動して「スタック」をクリックします。

    OCIリソース・マネージャ・スタック

  2. Terraform OCIリソース・マネージャ・スタックを作成します。詳細は、Zipファイルからのスタックの作成を参照してください。

    1. スタックの作成」をクリックします。

    2. .zipファイルを選択し、スタックを追加します。

    3. 「タグ・キー」を入力します。

    4. 「次」をクリックします。

  3. 「変数の構成」ページで、次の情報を入力します。

    • コンパートメント:コンパートメントを入力します。
    • VCNおよびサブネット:既存のVCNおよびパブリック・サブネットを選択します。
    • 必要に応じてvm表示名を変更します。
    • パブリックSSHキー: VMのパブリックSSHキーを入力します。
    • 可用性ドメイン:可用性ドメインを選択します。
    • 顧客秘密キーOCIDおよび顧客秘密キー:タスク1で作成した顧客秘密キーOCIDおよび顧客秘密キーを入力します。
    • バケット名:バケット名を入力します。
    • オブジェクト・ストレージ・ネームスペース:オブジェクト・ストレージ・ネームスペースを選択します。
  4. 「次へ」をクリックし、情報を確認します。すべて問題がない場合は、「適用の実行」を選択し、「作成」をクリックします。

    OCI ORM適用スタック

    適用ジョブが正常に完了すると、新しく作成されたVMのパブリックIPおよびプライベートIPが返されます。

    ORMスタック出力

  5. セカンダリ・リージョンのステップを繰り返して、2つ目のVMを作成します。

  6. 次のコマンドを使用してSSHを介して接続することで、OCIオブジェクト・ストレージ・バケットがVMレベルで/home/opc/loggingにマウントされていることを確認します。

    mount | grep s3fs
    

    バケットが正常にマウントされると、次のような出力が表示されます。

    マウント・バケット情報

    これにより、s3fsがいずれかのVMでバケットを/home/opc/loggingにマウントしたことが確認されます。

タスク3: 同期の構成

両方のVMが2つのリージョンにデプロイされたら、次のステップに従って各VMで同期を構成し、それらの間のストレージを同期します。

  1. 最初のリージョンでVMのパブリックIPをコピーし、ブラウザでそれを使用して同期インタフェースにアクセスします。次のURLを入力します。

    http://<vm1-public-ip>:8384
    
  2. インタフェースにアクセスすると、次の図のようなSyncthingインタフェースが表示されます。「フォルダ」および「リモート・デバイス」は、次のステップで同期用に構成する領域です。

    同期画面

    ノート: GUIセクションの「設定」ユーザー名およびパスワードを設定して、警告を削除できます。

  3. 「フォルダ」セクションで、「フォルダの追加」をクリックして、同期管理インタフェースにローカルVMフォルダを作成または含めます。

    同期追加フォルダ

  4. 次の情報を入力してローカル・フォルダを構成し、「保存」をクリックします。

    • フォルダ・ラベル:フォルダを識別するためのわかりやすい名前。たとえば、local_VM1です。
    • フォルダ・パス:ローカル・フォルダのディレクトリ・パス。たとえば、~/local_VM1です。

    ローカルフォルダの同期

    VM端末で、新しいフォルダlocal_VM1が作成されたことを確認できます。

  5. セカンダリ・リージョンのVMでステップ1から4を繰り返し、VM2同期インタフェースにlocal_VM2フォルダを追加します。

  6. 2つのVM間のクロスリージョン同期接続をVM1から構成します。

    1. 最初の同期VMの「リモート・デバイス」セクションで、「リモート・デバイスの追加」をクリックして、2番目のリージョンのリモート・フォルダを含めます。

      リモート端末を追加

    2. 「一般」に、次の情報を入力します。

      • デバイスID:これは、2番目の同期デバイスのIDです。VM2で、同期インタフェースを開き、「アクション」「IDの表示」にナビゲートし、表示された値をコピーして、このフィールドに貼り付けます。

        リモートデバイス- 表示ID

      • デバイス名: remote_VM2などの関連名を入力します。

        リモート端末- 一般タブ

    3. 「共有」で、リモート・デバイスと共有するlocal_VM1を選択します。

      リモート端末- 共有タブ

    4. 「詳細」で、「アドレス」tcp://<vm2-public-ip>:22000と入力します。22000は、データの同期に使用されるTCPポートです。

    5. 「保存」をクリックします。

  7. この時点で、VM1 Syncthingでは、ローカル・フォルダlocal_VM1が緑色の「最新」で表示され、リモート・デバイスremote_VM2「切断済」が表示されます。

    In order to complete the connection, perform the same steps on VM2 Syncthing, using the equivalent data collected from VM1 Syncthing, enter Device ID, tcp://<vm1-public-ip>:22000 as Addresses and Device name such as remote_VM1.

    ノート: VCNsのセキュリティ・リストでポート22000が開いていることを確認します。

  8. 同等の構成が完了したら、各Syncthingインタフェースでリモートフォルダの追加を受け入れるように求められます。「追加」をクリックします。

    リモートフォルダを受け入れる

  9. 特定の詳細でローカルに保存するように求められます。たとえば、VM1では、受信したlocal_VM2を保存するように求められます。VM1の名前をremote_VM2に変更して、より明確に表示できます。また、ローカルのVM1パスにマップすることもできます。任意のパスを指定できます。新しいフォルダが存在しない場合は作成されます。~/local_VM1を選択することもできます。つまり、2つのVMの2つのフォルダの内容が同じ場所にマージされます。この例では、パス~/remote_VM2を入力します。

  10. 受信local_VM1フォルダに対して相対的にVM2で同じステップを実行し、remote_VM1としてマップします。

  11. これで、2つのVMが同期され、Syncthingによって管理されるフォルダ(VM1、local_VM1およびremote_VM2、VM2、local_VM2およびremote_VM1)になります。

    同期されたフォルダ

タスク4: ローカル・ストレージの同期のテスト

同期同期をテストするには、SSHを使用して各VMにログインします。opcホーム・ディレクトリ内には、2つのフォルダがあります。

同期を確認するには、1つのVM上のローカル・フォルダ内のファイルを追加または変更し、変更がリモートVM上の対応するフォルダに表示されるかどうかを確認します。また、同期インタフェースまたはログを監視して、2つのOCIリージョン間の同期が成功したことを確認します。

  1. VM1にSSH接続します。

    ssh opc@<vm1-public-ip>
    
  2. 次のコマンドを実行して、ローカルの同期共有 local_VM1フォルダに移動します。

    cd ~/local_VM1
    
  3. テスト・ファイルを作成するには、次のコマンドを実行します。

    echo "testing sync" > testVM1.txt
    
  4. 新しいターミナルを開き、VM2にSSHを実行します。

    ssh opc@<vm2-public-ip>
    
  5. 次のコマンドを実行して、VM2の共有フォルダに移動します。

    cd ~/remote_VM1
    
  6. 次のコマンドを実行して、ファイルが表示されているかどうかを確認します。

    ls -l
    cat testVM1.txt
    
  7. VM2で同じ手順を実行し、ファイルが remote_VM2フォルダの VM1に表示されていることを確認します。

  8. 同期インタフェースで同期ステータスを確認します。ブラウザでhttp://<vm1-public-ip>:8384およびhttp://<vm2-public-ip>:8384を開き、ログおよび同期ステータスを確認します。

    同期されたファイル

タスク5: OCIオブジェクト・ストレージ・バケット・コンテンツの同期のテスト

バケットは、/home/opc/loggingディレクトリにデプロイされたVMにマウントされます。マウントされたバケットにあるファイルをテストおよび同期するには、logging VMディレクトリをローカル・フォルダとして追加し、リモート・デバイスから共有するために、前のステップを再実行する必要があります。次のように表示されます。

次に、loggingディレクトリにファイルを作成します。このファイルはOCIバケットに表示され、正しく構成されている場合はVM2 loggingディレクトリに同期します。したがって、クロス・リージョンの2番目のバケットにも同期します。

バケット同期

タスク6: その他のテストの実行

以前に構成したものと同じフォルダと共有デバイスで簡単にテストできる点が2つあります。

承認

その他の学習リソース

docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。