附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
使用同步處理在 Oracle Cloud Infrastructure 中執行跨區域雙向同步
簡介
跨區域物件儲存同步對於各種雲端工作負載至關重要,包括資料備份、災害復原及多區域存取。雖然 Oracle Cloud Infrastructure (OCI) 提供 OCI Object Storage 的複製功能,但它不提供原生雙向同步解決方案。此限制表示使用者必須仰賴自訂實行,才能跨區域同步檔案。
開放原始碼、分散式檔案同步化工具的 Syncthing 能提供即時操作的連續雙向同步功能。與 OCI Functions 不同 (依賴事件導向模型進行物件複製),Syncthing 能夠在虛擬機器 (VM) 之間有效率地同步整個檔案結構,同時支援本機和 OCI 物件儲存掛載目錄。
在本教學課程中,我們將使用 OCI 資源管理程式堆疊,在兩個區域的 OCI Compute 執行處理上部署 Syncthing,以便在本機 VM 儲存和 OCI 物件儲存掛載目錄之間進行自動雙向同步。
注意事項
使用 s3fs 掛載與 OCI Object Storage 的同步處理時:
-
s3fs (OCI Object Storage) 寫入效能可能是瓶頸:與本機磁碟相比,使用 s3fs 直接寫入 OCI Object Storage 的速度較慢。
-
同步大型檔案可能很緩慢:直接從 OCI Object Storage 寫入和讀取大型檔案可能需要幾分鐘的時間,而不是幾秒鐘。
-
遺失區塊層次同步優勢:由於 OCI Object Storage 需要完整物件寫入,因此 Syncthing 的區塊層次同步效率會降低。
-
最佳實務:先在本機同步,然後將檔案移至 OCI Object Storage。
Syncthing 有什麼好主意?
-
最適合即時同步,特別適用於跨區域的高頻小型檔案變更。
-
適合雙向同步,不同於需要雙向更新額外邏輯的 OCI 函數。
-
適用於混合雲端或內部部署至 OCI 同步,直接 OCI Object Storage 整合不可行。
-
同步本機 VM 儲存時最佳:避免使用 s3fs 掛載的儲存桶進行直接同步。
-
不適用於大型批次檔案傳輸: OCI Functions 會透過每個物件處理更有效率地處理這些工作。
目標
-
在兩個區域部署 OCI 資源管理程式堆疊,以自動佈建兩個已預先安裝 Syncthing 的 OCI Compute 執行處理。
-
在兩個 VM 上設定 Syncthing,以實現跨多個區域的本機儲存和 OCI Object Storage 掛載目錄的即時、分散式同步化。
必要條件
-
存取啟用兩個區域的 OCI 租用戶,以進行跨區域同步。
-
建立和管理 OCI Compute 執行處理、OCI Object Storage 貯體和網路資源的權限。
-
每個區域中有一個用於部署 VM 的公用子網路現有 VCN。
-
兩個區域中現有的 OCI 物件儲存的儲存桶,將用於同步。
-
S3 檔案系統 (s3fs) 的客戶秘密金鑰,可在 VM 上掛載 OCI 物件儲存的儲存桶。
作業 1:準備進行 VM 部署的必要資訊
-
下載 OCI 資源管理程式堆疊。此堆疊可自動部署在 VM.Standard.E5 上執行 Oracle Linux 8 的 VM。彈性資源配置。它會使用 CloudInit 安裝 Syncthing、掛載現有的 OCI 貯體,以及使用 s3fs 設定存取權。VM 佈建了 SSH 存取、公用 IP,並標記為方便識別。如需詳細資訊,請參閱 OCI 資源管理程式堆疊。
-
在兩個目標區域中建立一個含有公用子網路的 VCN。
堆疊將會部署在這兩個位置,以佈建搭配 Syncthing 的 VM,進行雙向跨區域儲存同步化。部署之後,即可使用 VM 的公用 IP 在瀏覽器中存取 Syncthing。
-
確定將執行測試的每個區域中都有 OCI Object Storage 貯體。儲存桶的可見性可以是專用。
-
建立 s3fs 掛載的客戶秘密金鑰。客戶秘密金鑰將用於存取 OCI 物件儲存。
-
登入 OCI 主控台,瀏覽至設定檔,按一下您的使用者名稱和客戶密鑰。
-
按一下產生秘密金鑰,然後輸入名稱,例如
s3fs-access
。 -
請務必複製產生的金鑰,因為我們稍後將在「任務 2」中使用該金鑰。
-
按一下存取鍵並複製值,因為稍後我們將在「任務 2」中使用該值。
-
從儲存桶詳細資訊頁面中複製命名空間,稍後將在作業 2 中使用。
-
作業 2:套用堆疊
-
登入 OCI 主控台,瀏覽至開發人員服務、資源管理程式,然後按一下堆疊。
-
建立 Terraform OCI 資源管理程式堆疊。如需詳細資訊,請參閱 Creating a Stack from a Zip File 。
-
按一下建立堆疊。
-
選取
.zip
檔案並新增堆疊。 -
輸入標記索引鍵。
-
按下一步。
-
-
在設定變數頁面中,輸入下列資訊。
- 區間: 輸入區間。
- VCN 和子網路: 選取現有的 VCN 和公用子網路。
- 視需要修改 vm 顯示名稱。
- 公用 SSH 金鑰:輸入 VM 的公用 SSH 金鑰。
- 可用性網域: 選取可用性網域。
- 客戶秘密金鑰 OCID 和客戶秘密存取金鑰:輸入在任務 1 中建立的客戶秘密金鑰 OCID 和客戶秘密存取金鑰。
- 分組名稱:輸入分組名稱。
- 物件儲存命名空間:選取物件儲存命名空間。
-
按一下下一步,然後複查資訊。如果一切都正常,請選取執行套用,然後按一下建立。
套用工作順利完成後,應傳回新建立 VM 的公用和專用 IP。
-
重複次要區域中的步驟,在該處建立第二個 VM。
-
使用下列命令透過 SSH 連線,確認 OCI 物件儲存的儲存桶掛載至 VM 層次的
/home/opc/logging
。mount | grep s3fs
如果順利掛載儲存桶,您應該會看到類似以下的輸出:
這會確認 s3fs 已將儲存桶掛載至任何 VM 上的
/home/opc/logging
。
作業 3:設定同步處理
將這兩個 VM 部署到兩個區域後,請依照下列步驟在每個 VM 上配置 Syncthing,以同步化它們之間的儲存體。
-
複製第一個區域中 VM 的公用 IP,並在瀏覽器中使用此 IP 存取 Syncthing 介面。輸入下列 URL。
http://<vm1-public-ip>:8384
-
存取介面之後,您會看到與以下影像類似的 Syncthing 介面。資料夾和遠端裝置是您在下一個步驟中設定進行同步的區域。
注意:您可以在 GUI 區段的設定值中設定 username 和 password ,以移除警告。
-
在資料夾段落中,按一下新增資料夾,即可在 Syncthing 管理介面中建立或包含本機 VM 資料夾。
-
輸入下列資訊以設定本機資料夾,然後按一下儲存。
- 資料夾標籤:用來識別資料夾的使用者易記名稱。例如,
local_VM1
。 - 資料夾路徑:本機資料夾的目錄路徑。例如,
~/local_VM1
。
您可以存入 VM 終端機,讓新資料夾
local_VM1
建立。 - 資料夾標籤:用來識別資料夾的使用者易記名稱。例如,
-
從次要區域重複 VM 中的步驟 1 到 4,然後在 VM2 Syncthing 介面中新增
local_VM2
資料夾。 -
從 VM1 開始,設定兩個 VM 之間的跨區域 Syncthing 連線。
-
在第一個 Syncthing VM 的遠端裝置段落中,按一下新增遠端裝置,以納入第二個區域的遠端資料夾。
-
在一般中,輸入下列資訊。
-
裝置 ID:這是第二個 Syncthing 裝置的 ID。在 VM2 上,開啟 Syncthing 介面,瀏覽至動作、顯示 ID ,複製顯示的值,然後將其貼到此欄位中。
-
裝置名稱:輸入相關名稱,例如
remote_VM2
。
-
-
在共用中,選取要與遠端裝置共用的
local_VM1
。 -
在進階的位址中輸入
tcp://<vm2-public-ip>:22000
,22000
是用於 Syncthing 資料的 TCP 連接埠。 -
按一下儲存。
-
-
此時,在 VM1 Syncthing 上,本機資料夾
local_VM1
應顯示為綠色最新版,而遠端裝置remote_VM2
則會顯示為已斷線。若要完成連線,請使用從 VM1 Syncthing 收集的對等資料,在 VM2 Syncthing 上執行相同的步驟,輸入裝置 ID ,
tcp://<vm1-public-ip>:22000
作為位址,輸入裝置名稱,例如remote_VM1
。注意:請確定已在 VCN 的安全清單中開啟連接埠
22000
。 -
當同等配置完成後,應在每個 Syncthing 介面中提示您接受新增遠端資料夾。按一下新增。
-
系統會提示您將特定詳細資訊儲存在本機,例如,在 VM1 上,系統會提示您儲存內送
local_VM2
,您可以將 VM1 上的名稱變更為remote_VM2
,以取得更清晰的顯示。您也可以將它對應至本機 VM1 路徑。可以是任何路徑;如果新資料夾不存在,就會加以建立。您也可以選取~/local_VM1
,表示兩個 VM 的兩個資料夾內容將會合併至相同位置。在範例中,輸入路徑~/remote_VM2
。 -
在 VM2 上執行與內送
local_VM1
資料夾相關的相同步驟,並將其對應為remote_VM1
。 -
現在,這兩個 VM 應同步及由 Syncthing 管理的資料夾;在 VM1、
local_VM1
和remote_VM2
上,在 VM2 上,local_VM2
和remote_VM1
。
作業 4:測試本機儲存的同步化
如果要測試 Syncthing 同步化,請使用 SSH 登入每個 VM。在 opc 本位目錄中,您會找到兩個資料夾。
-
本機資料夾 (
local_VM1
):將檔案儲存在此 VM 上。 -
遠端資料夾 (
remote_VM2
):反映第二個 VM 的同步化檔案。
為了驗證同步化,我們將新增或修改一個 VM 上本機資料夾的檔案,並檢查變更是否出現在遠端 VM 的對應資料夾中。此外,我們會監控 Syncthing 介面或日誌,以確認兩個 OCI 區域之間的同步化成功 。
-
SSH 至 VM1。
ssh opc@<vm1-public-ip>
-
執行下列指令以瀏覽至本機 Syncthing 共用
local_VM1
資料夾。cd ~/local_VM1
-
執行下列命令以建立測試檔案。
echo "testing sync" > testVM1.txt
-
開啟新的終端機,然後透過 SSH 登入 VM2。
ssh opc@<vm2-public-ip>
-
執行下列命令以瀏覽至 VM2 上的共用資料夾。
cd ~/remote_VM1
-
執行下列指令以檢查檔案是否顯示。
ls -l cat testVM1.txt
-
在 VM2 上執行相同的步驟,並檢查
remote_VM2
資料夾中是否有檔案顯示於 VM1 。 -
驗證 Syncthing 介面中的同步化狀態。在瀏覽器中開啟
http://<vm1-public-ip>:8384
和http://<vm2-public-ip>:8384
,以檢查日誌和同步狀態。
作業 5:測試 OCI 物件儲存的儲存桶內容同步
儲存桶會掛載在 /home/opc/logging
目錄中部署的 VM 上。若要測試和同步掛載儲存桶中的檔案,您必須重做先前的步驟,才能將 logging
VM 目錄新增為本機資料夾,然後從遠端裝置共用檔案。您會看到類似以下的內容:
-
VM1:
接著,在 logging
目錄中建立一個檔案,讓檔案顯示在 OCI 儲存桶中,並同步至 VM2 logging
目錄 (如果正確設定),因此也會在跨區域的第二個儲存桶中。
作業 6:執行一些其他測試
有兩個點可以輕易地使用與先前設定相同的資料夾和共用裝置進行進一步測試。
-
使用新大型檔案進行測試:這將會快速同步。在
local_VM1
/local_VM2
資料夾的本機 VM 上建立大型檔案,然後建立logging
目錄,這表示 s3fs 用於跨區域 OCI 物件儲存同步化。-
在 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
目錄、Syncthing 介面中 VM2 的同步,以及第二個區域的儲存桶,以判斷檔案的顯示速度。 -
接著,您可以繼續使用一些 GB 的檔案執行相同的測試。此外,也請考慮將大型檔案直接上傳到第一個儲存桶,並監控其與第二個儲存桶同步的速度。
-
-
使用修改過的大型檔案進行測試:這也將有效地偵測並同步變更。修改
local_VM1
/local_VM2
目錄中的本機檔案,以及掛載至logging
目錄下 VM 之 OCI 物件儲存的儲存桶中的現有檔案。-
修改現有檔案。
echo "New content" >> ~/local_VM1/testfile1
-
驗證 VM2 上的更新。
-
針對 OCI 物件儲存檔案重複步驟 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
G29473-01
Copyright ©2025, Oracle and/or its affiliates.