ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
同期を使用した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オブジェクト・ストレージとの同期をマウントする場合:
-
s3fs (OCI Object Storage)の書込みパフォーマンスはボトルネックになる可能性があります: s3fsを使用したOCI Object Storageへの直接書込みは、ローカル・ディスクと比較して低速です。
-
大きなファイルの同期に時間がかかる場合がある: OCI Object Storageから直接大きなファイルの書込みと読取りには、数秒ではなく数分かかる場合があります。
-
ブロック・レベルの同期の優位性が失われる: OCI Object Storageにはフル・オブジェクト書込みが必要なため、Syncthingのブロック・レベルの同期効率は低下します。
-
ベスト・プラクティス:最初にローカルで同期してから、ファイルをOCIオブジェクト・ストレージに移動します。
シンクが良いアイデアになるのはいつですか?
-
リアルタイム同期に最適です。特に、リージョン間の高頻度の小さなファイル変更に最適です。
-
双方向更新の追加ロジックを必要とするOCI Functionsとは異なり、双方向同期に最適です。
-
ハイブリッド・クラウドまたはオンプレミスからOCIへの同期に最適です。OCI Object Storageの直接統合は実現できません。
-
ローカルVMストレージを同期する場合に最適:直接同期にs3fsマウント・バケットを使用しないでください。
-
大規模なバッチ・ファイル転送には理想的ではありません。OCI Functionsは、オブジェクトごとの処理でより効率的にこれらを処理します。
目的
-
OCI Resource Managerスタックを2つのリージョンにデプロイして、同期が事前インストールされた2つのOCI Computeインスタンスを自動的にプロビジョニングします。
-
両方のVMで同期を構成して、ローカル・ストレージとOCI Object Storageのマウントされたディレクトリを複数のリージョンにわたってリアルタイムで分散的に同期できるようにします。
前提条件
-
クロスリージョン同期用の2つの有効なリージョンがあるOCIテナンシにアクセスします。
-
OCIコンピュート・インスタンス、OCIオブジェクト・ストレージ・バケットおよびネットワーキング・リソースを作成および管理する権限。
-
VMデプロイメントの各リージョンにパブリック・サブネットがある既存のVCN。
-
両方のリージョンの既存のOCIオブジェクト・ストレージ・バケット。同期に使用されます。
-
OCIオブジェクト・ストレージ・バケットをVMにマウントするためのS3ファイル・システム(s3fs)の顧客秘密キー。
タスク1: VMデプロイメントに必要な情報の準備
-
OCI Resource Managerスタックをダウンロードします。このスタックは、VM.Standard.E5でOracle Linux 8を実行しているVMのデプロイメントを自動化します。フレックス・シェイプ。CloudInitを使用して同期をインストールし、既存のOCIバケットをマウントし、s3fsを使用してアクセスを構成します。VMにはSSHアクセス、パブリックIPがプロビジョニングされ、簡単に識別できるようにタグ付けされます。詳細は、OCIリソース・マネージャ・スタックを参照してください。
-
両方のターゲット・リージョンにパブリック・サブネットを持つVCNを作成します。
スタックは両方の場所にデプロイされ、双方向のクロスリージョン・ストレージ同期のためにVMと同期をプロビジョニングします。デプロイすると、VMのパブリックIPを使用してブラウザで同期にアクセスできます。
-
テストが実行される各リージョンにOCI Object Storageバケットが存在することを確認します。バケットの表示は「プライベート」にできます。
-
s3fsマウントの顧客秘密キーを作成します。OCIオブジェクト・ストレージへのアクセスには、顧客秘密キーが使用されます。
-
OCIコンソールにログインし、「プロファイル」に移動して、ユーザー名および「顧客秘密キー」をクリックします。
-
「秘密キーの生成」をクリックし、
s3fs-access
などの名前を入力します。 -
生成されたキーは、タスク2で後で使用するため、必ずコピーしてください。
-
「アクセス・キー」をクリックし、後でタスク2で使用する値をコピーします。
-
「ネームスペース」を「バケット詳細」ページからコピーします。このページで後で使用します(タスク2)。
-
タスク2: スタックの適用
-
OCIコンソールにログインし、「開発者サービス」、「リソース・マネージャ」に移動して「スタック」をクリックします。
-
Terraform OCIリソース・マネージャ・スタックを作成します。詳細は、Zipファイルからのスタックの作成を参照してください。
-
「スタックの作成」をクリックします。
-
.zip
ファイルを選択し、スタックを追加します。 -
「タグ・キー」を入力します。
-
「次」をクリックします。
-
-
「変数の構成」ページで、次の情報を入力します。
- コンパートメント:コンパートメントを入力します。
- VCNおよびサブネット:既存のVCNおよびパブリック・サブネットを選択します。
- 必要に応じてvm表示名を変更します。
- パブリックSSHキー: VMのパブリックSSHキーを入力します。
- 可用性ドメイン:可用性ドメインを選択します。
- 顧客秘密キーOCIDおよび顧客秘密キー:タスク1で作成した顧客秘密キーOCIDおよび顧客秘密キーを入力します。
- バケット名:バケット名を入力します。
- オブジェクト・ストレージ・ネームスペース:オブジェクト・ストレージ・ネームスペースを選択します。
-
「次へ」をクリックし、情報を確認します。すべて問題がない場合は、「適用の実行」を選択し、「作成」をクリックします。
適用ジョブが正常に完了すると、新しく作成されたVMのパブリックIPおよびプライベートIPが返されます。
-
セカンダリ・リージョンのステップを繰り返して、2つ目のVMを作成します。
-
次のコマンドを使用してSSHを介して接続することで、OCIオブジェクト・ストレージ・バケットがVMレベルで
/home/opc/logging
にマウントされていることを確認します。mount | grep s3fs
バケットが正常にマウントされると、次のような出力が表示されます。
これにより、s3fsがいずれかのVMでバケットを
/home/opc/logging
にマウントしたことが確認されます。
タスク3: 同期の構成
両方のVMが2つのリージョンにデプロイされたら、次のステップに従って各VMで同期を構成し、それらの間のストレージを同期します。
-
最初のリージョンでVMのパブリックIPをコピーし、ブラウザでそれを使用して同期インタフェースにアクセスします。次のURLを入力します。
http://<vm1-public-ip>:8384
-
インタフェースにアクセスすると、次の図のようなSyncthingインタフェースが表示されます。「フォルダ」および「リモート・デバイス」は、次のステップで同期用に構成する領域です。
ノート: GUIセクションの「設定」でユーザー名およびパスワードを設定して、警告を削除できます。
-
「フォルダ」セクションで、「フォルダの追加」をクリックして、同期管理インタフェースにローカルVMフォルダを作成または含めます。
-
次の情報を入力してローカル・フォルダを構成し、「保存」をクリックします。
- フォルダ・ラベル:フォルダを識別するためのわかりやすい名前。たとえば、
local_VM1
です。 - フォルダ・パス:ローカル・フォルダのディレクトリ・パス。たとえば、
~/local_VM1
です。
VM端末で、新しいフォルダ
local_VM1
が作成されたことを確認できます。 - フォルダ・ラベル:フォルダを識別するためのわかりやすい名前。たとえば、
-
セカンダリ・リージョンのVMでステップ1から4を繰り返し、VM2同期インタフェースに
local_VM2
フォルダを追加します。 -
2つのVM間のクロスリージョン同期接続をVM1から構成します。
-
最初の同期VMの「リモート・デバイス」セクションで、「リモート・デバイスの追加」をクリックして、2番目のリージョンのリモート・フォルダを含めます。
-
「一般」に、次の情報を入力します。
-
デバイスID:これは、2番目の同期デバイスのIDです。VM2で、同期インタフェースを開き、「アクション」、「IDの表示」にナビゲートし、表示された値をコピーして、このフィールドに貼り付けます。
-
デバイス名:
remote_VM2
などの関連名を入力します。
-
-
「共有」で、リモート・デバイスと共有する
local_VM1
を選択します。 -
「詳細」で、「アドレス」に
tcp://<vm2-public-ip>:22000
と入力します。22000
は、データの同期に使用されるTCPポートです。 -
「保存」をクリックします。
-
-
この時点で、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 asremote_VM1
.ノート: VCNsのセキュリティ・リストでポート
22000
が開いていることを確認します。 -
同等の構成が完了したら、各Syncthingインタフェースでリモートフォルダの追加を受け入れるように求められます。「追加」をクリックします。
-
特定の詳細でローカルに保存するように求められます。たとえば、VM1では、受信した
local_VM2
を保存するように求められます。VM1の名前をremote_VM2
に変更して、より明確に表示できます。また、ローカルのVM1パスにマップすることもできます。任意のパスを指定できます。新しいフォルダが存在しない場合は作成されます。~/local_VM1
を選択することもできます。つまり、2つのVMの2つのフォルダの内容が同じ場所にマージされます。この例では、パス~/remote_VM2
を入力します。 -
受信
local_VM1
フォルダに対して相対的にVM2で同じステップを実行し、remote_VM1
としてマップします。 -
これで、2つのVMが同期され、Syncthingによって管理されるフォルダ(VM1、
local_VM1
およびremote_VM2
、VM2、local_VM2
およびremote_VM1
)になります。
タスク4: ローカル・ストレージの同期のテスト
同期同期をテストするには、SSHを使用して各VMにログインします。opcホーム・ディレクトリ内には、2つのフォルダがあります。
-
ローカル・フォルダ(
local_VM1
):このVMにファイルを格納します。 -
リモート・フォルダ(
remote_VM2
): 2番目のVMから同期されたファイルを反映します。
同期を確認するには、1つのVM上のローカル・フォルダ内のファイルを追加または変更し、変更がリモートVM上の対応するフォルダに表示されるかどうかを確認します。また、同期インタフェースまたはログを監視して、2つのOCIリージョン間の同期が成功したことを確認します。
-
VM1にSSH接続します。
ssh opc@<vm1-public-ip>
-
次のコマンドを実行して、ローカルの同期共有
local_VM1
フォルダに移動します。cd ~/local_VM1
-
テスト・ファイルを作成するには、次のコマンドを実行します。
echo "testing sync" > testVM1.txt
-
新しいターミナルを開き、VM2にSSHを実行します。
ssh opc@<vm2-public-ip>
-
次のコマンドを実行して、VM2の共有フォルダに移動します。
cd ~/remote_VM1
-
次のコマンドを実行して、ファイルが表示されているかどうかを確認します。
ls -l cat testVM1.txt
-
VM2で同じ手順を実行し、ファイルが
remote_VM2
フォルダの VM1に表示されていることを確認します。 -
同期インタフェースで同期ステータスを確認します。ブラウザで
http://<vm1-public-ip>:8384
およびhttp://<vm2-public-ip>:8384
を開き、ログおよび同期ステータスを確認します。
タスク5: OCIオブジェクト・ストレージ・バケット・コンテンツの同期のテスト
バケットは、/home/opc/logging
ディレクトリにデプロイされたVMにマウントされます。マウントされたバケットにあるファイルをテストおよび同期するには、logging
VMディレクトリをローカル・フォルダとして追加し、リモート・デバイスから共有するために、前のステップを再実行する必要があります。次のように表示されます。
-
VM1:
次に、logging
ディレクトリにファイルを作成します。このファイルはOCIバケットに表示され、正しく構成されている場合はVM2 logging
ディレクトリに同期します。したがって、クロス・リージョンの2番目のバケットにも同期します。
タスク6: その他のテストの実行
以前に構成したものと同じフォルダと共有デバイスで簡単にテストできる点が2つあります。
-
新しい大きなファイルを使用したテスト:これにより、すぐに同期されます。
local_VM1
/local_VM2
フォルダのVMでローカルに大きなファイルを作成し、logging
ディレクトリを作成します。これは、リージョン間のOCIオブジェクト・ストレージ同期にs3fsが使用されることを意味します。-
VM1に大きいファイルを作成します。
cd local_VM1 dd if=/dev/urandom of=~/local_VM1/testfile1 bs=1M count=500
-
VM2で同期を確認します。
ls -lh ~/local_VM2/
VMs Syncthingインタフェースでも確認します。
-
s3fsマウント・ディレクトリ(
logging
)に対して繰り返します。cd ~/logging dd if=/dev/urandom of=~/logging/testfile2 bs=1M count=500
-
ファイルの表示速度を判断するために、
logging
ディレクトリ、同期インタフェースおよび2番目のリージョン・バケットのVM2で同期を確認します。 -
その後、数GBのファイルを使用して同じテストを実行できます。また、大きなファイルを1つ目のバケットに直接アップロードし、2つ目のバケットと同期する速度を監視することも検討してください。
-
-
変更された大きいファイルを使用したテスト:変更を効率的に検出して同期します。
local_VM1
/local_VM2
ディレクトリのローカル・ファイルと、logging
ディレクトリの下のVMにマウントされたOCIオブジェクト・ストレージ・バケット内の既存のファイルを変更します。-
既存のファイルを変更します。
echo "New content" >> ~/local_VM1/testfile1
-
VM2で更新を確認します。
-
OCI Object Storageファイルについてステップ1と2を繰り返します。
echo "Modified content" >> ~/logging/testfile2
-
関連リンク
承認
- 著者 - Adina Nicolescu (シニア・クラウド・エンジニア)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Perform Cross-Region Bidirectional Synchronization in Oracle Cloud Infrastructure using Syncthing
G29469-01
Copyright ©2025, Oracle and/or its affiliates.