站點複寫概觀
站點複寫將多個獨立的 MinIO 部署設定為稱為對等站點的複本叢集。
站點複寫假設使用隨附的 MinIO 身分提供者 (IDP) 或外部 IDP。所有設定的部署都必須使用相同的 IDP。使用外部 IDP 的部署必須在各站點使用相同的設定。
有關站點複寫架構和部署概念的詳細資訊,請參閱部署架構:複寫的 MinIO 部署。
概觀
在所有站點之間複寫的內容
每個 MinIO 部署(「對等站點」)會在其他對等站點之間同步以下變更
建立、修改和刪除儲存桶和物件,包括
儲存桶和物件設定
鎖定,包括保留和法律保留設定
建立和刪除 IAM 使用者、群組、原則以及原則與使用者或群組的對應 (對於 LDAP 使用者或群組)
為可從本機
root
憑證驗證的會話權杖建立安全權杖服務 (STS) 憑證建立和刪除存取金鑰(由
root
使用者擁有的金鑰除外)
站點複寫會針對所有複寫站點上的所有新儲存桶和現有儲存桶啟用儲存桶版本控制。
新功能版本:RELEASE.2023-12-02T02-03-28Z
您可以選擇在對等站點之間複寫 ILM 到期規則。對於新的站點複寫設定,請使用具有 --replicate-ilm-expiry
旗標的 mc admin replicate add
。對於現有的站點複寫設定,您可以使用具有 --enable-ilm-expiry-replication
或 --disable-ilm-expiry-replication
旗標的 mc admin replicate update
來啟用或停用該行為,視情況而定。
未在各站點之間複寫的內容
在站點複製配置中,MinIO 部署不會複製以下項目的建立或修改:
初始站點複製程序
啟用站點複製後,身分和存取管理 (IAM) 設定會依以下順序同步:
原則
使用者帳戶(針對本機使用者)
群組
存取金鑰
root
的存取金鑰不會同步。已同步使用者帳戶的策略映射
安全權杖服務 (STS) 使用者的策略映射
原則
與具有有效MinIO 策略的 OIDC 帳戶相關聯的存取金鑰。
root
存取金鑰不會同步。已同步使用者帳戶的策略映射
安全權杖服務 (STS) 使用者的策略映射
原則
群組
與具有有效MinIO 策略的 LDAP 帳戶相關聯的存取金鑰。
root
存取金鑰不會同步。已同步使用者帳戶的策略映射
安全權杖服務 (STS) 使用者的策略映射
在跨對等站點初始同步資料後,MinIO 會持續複製和同步所有站點上發生的可複製的資料。
站點修復
站點複製配置中的任何 MinIO 部署都可以從具有該資料最新版本(「最新」版本)的對等站點重新同步損壞的可複製資料。
在版本 RELEASE.2023-07-18T17-49-40Z 中變更:站點複製操作會重試最多三 (3) 次。
MinIO 會取消複製嘗試三次後仍無法複製的複製操作。 掃描器會在稍後擷取受影響的物件,並將其重新排入複製佇列。
在版本 RELEASE.2022-08-11T04-37-28Z 中變更:執行任何 GET
或 HEAD
API 方法時,失敗或擱置的複製會自動重新排隊。 例如,在站點重新上線後,使用 mc stat
、mc cat
或 mc ls
命令會提示修復以重新排隊。
在版本 RELEASE.2022-12-02T23-48-47Z 中變更:如果某個站點因任何原因遺失資料,請使用 mc admin replicate resync
從另一個健全的站點重新同步資料。 這會啟動一個作用中的程序,重新同步資料,而無需等待被動的MinIO 掃描器來識別遺失的資料。
您可以使用 MINIO_SCANNER_SPEED
環境變數或 scanner speed
設定來調整 MinIO 如何平衡掃描器效能與讀/寫操作。
同步與非同步複製
MinIO 支援為給定的遠端目標指定非同步(預設)或同步複製。
透過非同步複製,MinIO 會在將物件放入複製佇列之前完成原始 PUT
操作。 因此,原始用戶端可能會在物件複製之前看到成功的 PUT
操作。 雖然這可能會導致遠端出現過時或遺失的物件,但它會降低因複製負載而導致寫入操作速度變慢的風險。
透過同步複製,MinIO 會嘗試在完成原始 PUT
操作之前複製物件。 無論複製嘗試是否成功,MinIO 都會傳回成功的 PUT
操作。 這會降低寫入操作速度變慢的風險,但可能會導致遠端位置出現過時或遺失的物件。
MinIO 強烈建議使用預設的非同步站點複製。 同步站點複製效能很大程度上取決於站點之間的延遲,較高的延遲可能會導致 PUT 效能降低和複製延遲。 若要設定同步站點複製,請使用 mc admin replicate update
,並使用 --mode
選項。
代理到其他站點
MinIO 對等站點可以將物件的 GET/HEAD
要求代理到其他對等站點,以檢查物件是否存在。 這允許正在修復或落後於其他對等站點的站點仍然傳回持續到其他站點的物件。
例如
用戶端向
Site1
發出GET("data/invoices/january.xls")
Site1
無法找到該物件Site1
將要求代理到Site2
Site2
會傳回所要求物件的最新版本Site1
將代理的物件傳回給用戶端
對於不包含唯一版本 ID 的 GET/HEAD
要求,代理要求會傳回對等站點上該物件的最新版本。 這可能會導致檢索物件的非目前版本,例如,如果回應的對等站點也遇到複製延遲。
MinIO 不會代理 LIST
、DELETE
和 PUT
操作。
必要條件
先備份叢集設定
使用 mc admin cluster bucket export
和 mc admin cluster iam export
命令來擷取儲存桶中繼資料和 IAM 設定的快照,然後再設定站點複製。 如果在站點複製設定期間發生設定錯誤,您可以使用這些快照來還原儲存桶/IAM 設定。
設定時具有資料的一個站點
在設定時,只有一個站點可以具有資料。 其他站點必須沒有儲存桶和物件。
設定站點複製後,第一個部署上的任何資料都會複製到其他站點。
所有站點必須使用相同的 IDP
所有站點都必須使用相同的身分提供者。 站點複製支援包含的 MinIO IDP、OIDC 或 LDAP。
所有站點都必須使用相同的 MinIO Server 版本
所有站點都必須具有相符且一致的 MinIO Server 版本。 在具有不相符的 MinIO Server 版本之站點之間設定複製可能會導致意外或不希望的複製行為。
您也應該確保用於設定複製的 mc
版本與伺服器版本密切相符。
存取相同的加密服務
對於透過金鑰管理服務 (KMS) 進行的 SSE-S3 或 SSE-KMS 加密,所有站點都必須有權存取中央 KMS 部署。
您可以使用中央 KES 伺服器或透過中央支援的金鑰保管庫伺服器連接的多個 KES 伺服器(例如每個站點一個)來實現此目的。
複製需要版本控制
站點複製需要儲存桶版本控制,並自動為所有建立的儲存桶啟用它。 您無法在站點複製部署中停用版本控制。
MinIO 無法複製您從版本控制中排除的儲存桶中前置詞的物件。
每個站點都安裝負載平衡器
指定站點的負載平衡器、反向代理或類似網路控制平面元件的 URL 或 IP 位址。請求會自動路由到部署中的節點。
MinIO 建議不要對等站點使用單一節點主機名稱。這會建立單一故障點:如果該節點離線,則複寫會失敗。
從儲存貯體複寫切換至站點複寫
儲存貯體複寫和多站點複寫是互斥的。您不能在相同的部署中使用這兩種複寫方法。
如果您先前已設定儲存貯體複寫,並希望現在使用站點複寫,則在初始化站點複寫時,您必須先刪除部署中所有具有資料的儲存貯體複寫規則。在命令列上使用 mc replicate rm
或使用 MinIO 主控台來移除儲存貯體複寫規則。
設定站點複寫時,只能有一個站點擁有資料。所有其他站點必須是空的。
教學
設定站點複寫
部署兩個或更多獨立的 MinIO 站點,每個站點都使用相同的身分識別提供者
只有一個站點可以擁有任何儲存貯體或物件。其他站點必須是空的。
在瀏覽器中,存取具有資料的站點的主控台(如果有的話)
例如,
https://<addressforsite>:9000
將
<addressforsite>
取代為負載平衡器、反向代理或類似控制平面的主機名稱或 IP 位址,該控制平面管理與 MinIO 部署的連線。選取 設定,然後選取 站點複寫
選取 新增站點 +
填寫所要求的資訊
此站點
- 站點名稱:
要與站點關聯的名稱或其他識別文字。
- 端點:
(必要) 管理與站點連線的負載平衡器的主機名稱或 IP。
- 存取金鑰:
(必要) 用於登入站點的
root
使用者名稱。
- 秘密金鑰:
(必要) 用於登入站點的
root
密碼。
對等站點
- 站點名稱:
要與站點關聯的名稱或其他識別文字。
- 端點:
(必要) 管理與站點連線的負載平衡器的主機名稱或 IP。
- 存取金鑰:
(必要) 對等站點的
root
使用者名稱,用於登入站點。
- 秘密金鑰:
(必要) 對等站點的
root
密碼,用於登入站點。
指定站點的負載平衡器、反向代理或類似網路控制平面元件的 URL 或 IP 位址。請求會自動路由到部署中的節點。
MinIO 建議不要對等站點使用單一節點主機名稱。這會建立單一故障點:如果該節點離線,則複寫會失敗。
若要新增兩個以上的站點,請選取其中一個站點條目旁的
+
按鈕。若要移除先前新增的站點,請選取站點旁的-
按鈕。站點複寫會在每個站點的
root
使用者下新增一個svcacct
,以執行複寫活動。選取 儲存
選取 複寫狀態 按鈕,以驗證複寫已在對等站點之間完成。
存在的任何 可複寫的資料都應顯示為已成功同步。
如需更多關於檢閱站點複寫的資訊,請參閱站點複寫狀態教學。
下列步驟為三個分散式部署建立新的站點複寫組態。其中一個站點包含可複寫的資料。
這三個站點使用別名,minio1
、minio2
和 minio3
,且只有 minio1
包含任何資料。
部署三個或更多獨立的 MinIO 站點,每個站點都使用相同的IDP
從空的站點開始,或只有一個站點擁有任何可複寫的資料。
為每個站點設定別名
指定站點的負載平衡器、反向代理或類似網路控制平面元件的 URL 或 IP 位址。請求會自動路由到部署中的節點。
MinIO 建議不要對等站點使用單一節點主機名稱。這會建立單一故障點:如果該節點離線,則複寫會失敗。
例如,對於三個 MinIO 站點,您可以建立別名
minio1
、minio2
和minio3
。使用
mc alias set
來定義管理與站點連線的負載平衡器的主機名稱或 IP。mc alias set minio1 https://minio1.example.com:9000 adminuser adminpassword mc alias set minio2 https://minio2.example.com:9000 adminuser adminpassword mc alias set minio3 https://minio3.example.com:9000 adminuser adminpassword
或定義環境變數
export MC_HOST_minio1=https://adminuser:adminpassword@minio1.example.com export MC_HOST_minio2=https://adminuser:adminpassword@minio2.example.com export MC_HOST_minio3=https://adminuser:adminpassword@minio3.example.com
新增站點複寫組態
mc admin replicate add minio1 minio2 minio3
如果所有站點都是空的,則別名的順序無關緊要。如果其中一個站點包含任何可複寫的資料,您必須將其列在第一位。
最多只能有一個站點包含任何可複寫的資料。
查詢站點複寫組態以進行驗證
mc admin replicate info minio1
您可以使用站點複寫組態中任何對等站點的別名。
查詢站點複寫狀態,以確認任何初始資料已複寫到所有對等站點。
mc admin replicate status minio1
您可以使用站點複寫組態中任何對等站點的別名。輸出應說明所有可複寫的資料都已同步。
輸出可能類似如下
Bucket replication status: ● 1/1 Buckets in sync Policy replication status: ● 5/5 Policies in sync User replication status: No Users present Group replication status: No Groups present
如需更多關於檢閱站點複寫的資訊,請參閱站點複寫狀態教學。
擴展站點複寫
您可以將更多站點新增到現有的站點複寫組態。
新站點必須符合下列需求
站點已完全部署且可透過主機名稱或 IP 存取
與組態中的所有其他站點共用 IDP 組態
使用與其他已設定站點相同的 root 使用者憑證
不包含任何儲存貯體或物件資料
部署新的空的 MinIO 站點
在瀏覽器中,存取現有複寫站點之一的主控台
例如,
https://<addressforsite>:9000
選取 設定,然後選取 站點複寫
選取 新增站點 +
輸入下列項目
- 存取金鑰:
(必要) 用於登入每個站點的使用者名稱。在所有站點中應相同。
- 秘密金鑰:
(必要) 用於登入每個站點的使用者名稱的密碼。在所有站點中應相同。
- 站點名稱:
用於站點名稱的別名。
- 端點:
(必要) 管理與站點連線的負載平衡器的主機名稱或 IP。
指定站點的負載平衡器、反向代理或類似網路控制平面元件的 URL 或 IP 位址。請求會自動路由到部署中的節點。
MinIO 建議不要對等站點使用單一節點主機名稱。這會建立單一故障點:如果該節點離線,則複寫會失敗。
若要新增兩個以上的站點,請選取最後一個站點條目旁的
+
按鈕。選取 儲存
依照所述需求部署新的 MinIO 對等站點
為新站點設定別名
指定站點的負載平衡器、反向代理或類似網路控制平面元件的 URL 或 IP 位址。請求會自動路由到部署中的節點。
MinIO 建議不要對等站點使用單一節點主機名稱。這會建立單一故障點:如果該節點離線,則複寫會失敗。
若要檢查現有別名,請使用
mc alias list
。使用
mc alias set
來定義管理與新站點連線的負載平衡器的主機名稱或 IP。mc alias set minio4 https://minio4.example.com:9000 adminuser adminpassword
或定義環境變數
export MC_HOST_minio4=https://adminuser:adminpassword@minio4.example.com
新增站點複寫組態
使用
mc admin replicate add
命令,使用新的對等站點擴展站點複寫組態。指定所有現有對等站點的別名,然後指定要新增的新站點的別名。例如,下列命令會將新的對等站點
minio4
新增到包含現有站點minio1
、minio2
和minio3
的現有站點複寫組態中。mc admin replicate add minio1 minio2 minio3 minio4
注意
如果任何站點無法連線或永久遺失,您必須先使用
mc admin replicate rm
移除無法連線的站點,然後才能使用新站點擴展。查詢站點複寫組態以進行驗證
mc admin replicate info minio1
修改站點的端點
如果對等站點變更其主機名稱,您可以修改複寫組態以反映新的主機名稱。
在瀏覽器中,存取其中一個複寫站點的主控台
例如,
https://<addressforsite>:9000
選取 設定,然後選取 站點複寫
選取要更新的站點旁的鉛筆 編輯 圖示
輸入下列項目
- 新的端點:
(必要) 要使用的新端點位址和連接埠。
指定站點的負載平衡器、反向代理或類似網路控制平面元件的 URL 或 IP 位址。請求會自動路由到部署中的節點。
MinIO 建議不要對等站點使用單一節點主機名稱。這會建立單一故障點:如果該節點離線,則複寫會失敗。
選取 更新
使用
mc admin replicate info
取得站點的部署 IDmc admin replicate info <ALIAS>
使用
mc admin replicate update
更新站點的端點mc admin replicate update ALIAS --deployment-id [DEPLOYMENT-ID] --endpoint [NEW-ENDPOINT]
將 [DEPLOYMENT-ID] 取代為要更新的站點的部署 ID。
將 [NEW-ENDPOINT] 取代為站點的新端點。
指定站點的負載平衡器、反向代理或類似網路控制平面元件的 URL 或 IP 位址。請求會自動路由到部署中的節點。
MinIO 建議不要對等站點使用單一節點主機名稱。這會建立單一故障點:如果該節點離線,則複寫會失敗。
從複寫中移除站點
您可以隨時從複寫中移除站點。您可以在稍後重新新增站點,但您必須先完全清除站點中的儲存貯體和物件資料。
在瀏覽器中,存取其中一個複寫站點的主控台
例如,
https://<addressforsite>:9000
選取 設定,然後選取 站點複寫
選取要更新的站點旁的垃圾桶刪除圖示
在提示中選取 刪除 以確認站點刪除
mc admin replicate rm ALIAS PEER_TO_REMOVE --force
將
ALIAS
取代為複寫組態中任何對等站點的 別名。將
PEER_TO_REMOVE
取代為要移除的對等站台別名。
站台複寫設定中所有運作正常的對等點都會自動更新,以移除指定的對等點。
MinIO 需要 --force
旗標才能從站台複寫設定中移除對等點。
檢閱複寫狀態
MinIO 提供使用者、群組、政策或儲存貯體在跨站台複寫的相關資訊。
摘要資訊包含每個類別的已同步和失敗項目數量。
在瀏覽器中,存取其中一個複寫站點的主控台
例如,
https://<addressforsite>:9000
選取 設定,然後選取 站點複寫
選擇 複寫狀態
(選用) 檢視特定項目的複寫狀態
在 檢視以下項目的複寫狀態:下拉式選單中選擇要檢視的項目類型
指定要檢視的特定儲存貯體、群組、政策或使用者的名稱
(選用) 選擇 重新整理 以更新資訊
mc admin replicate status <ALIAS> --<flag> <value>
例如
mc admin replicate status minio3 --bucket images
顯示
minio3
站台上images
儲存貯體的複寫狀態。輸出類似如下:
● Bucket config replication summary for: images Bucket | MINIO2 | MINIO3 | MINIO4 Tags | | | Policy | | | Quota | | | Retention | | | Encryption | | | Replication | ✔ | ✔ | ✔
mc admin replicate status minio3 --all
顯示
minio3
所屬的所有複寫站台的複寫狀態摘要。輸出類似如下:
Bucket replication status: ● 1/1 Buckets in sync Policy replication status: ● 5/5 Policies in sync User replication status: ● 1/1 Users in sync Group replication status: ● 0/2 Groups in sync Group | MINIO2 | MINIO3 | MINIO4 ittechs | ✗ in-sync | | ✗ in-sync managers | ✗ in-sync | | ✗ in-sync