文件

網站複製概觀

網站複製將多個獨立的 MinIO 部署配置為稱為對等網站的複本叢集。

Diagram of a site replication deployment with two sites

具有兩個對等網站的網站複製部署。負載平衡器管理將操作路由到兩個網站中的任何一個。寫入一個網站的資料會自動複製到另一個對等網站。

網站複製假設使用內含的 MinIO 身分提供者 (IDP) *或* 外部 IDP。所有已配置的部署都必須使用相同的 IDP。使用外部 IDP 的部署必須在各網站使用相同的配置。

如需網站複製架構和部署概念的詳細資訊,請參閱 部署架構:複製的 MinIO 部署

概觀

在所有網站間複製的內容

每個 MinIO 部署(「對等網站」)都會在其他對等網站之間同步以下變更

  • Bucket 和物件的建立、修改和刪除,包括

  • IAM 使用者、群組、原則以及原則與使用者或群組的對應(針對 LDAP 使用者或群組)的建立和刪除

  • 從本機 root 憑證可驗證的會話權杖的安全權杖服務 (STS) 憑證建立

  • 建立和刪除存取金鑰(不包括 root 使用者擁有的金鑰)

站點複製會在所有已複製站點上的所有新舊儲存桶啟用儲存桶版本控制

新版本 mc: RELEASE.2023-12-02T02-03-28Z

您可以選擇在對等站點之間複製 ILM 過期規則。對於新的站點複製設定,請使用 mc admin replicate add,並搭配 --replicate-ilm-expiry 旗標。對於現有的站點複製設定,您可以使用 mc admin replicate update,並搭配 --enable-ilm-expiry-replication--disable-ilm-expiry-replication 旗標,來啟用或停用此行為,視情況而定。

站點間不複製的內容

在站點複製設定中,MinIO 部署不會複製下列項目的建立或修改:

初始站點複製流程

啟用站點複製後,身份和存取管理 (IAM) 設定會依以下順序同步:

  1. 原則

  2. 使用者帳戶(針對本機使用者)

  3. 群組

  4. 存取金鑰

    root 的存取金鑰不會同步。

  5. 已同步使用者帳戶的政策對應

  6. 安全令牌服務 (STS) 使用者的政策對應

  1. 原則

  2. 與具有有效 MinIO 政策的 OIDC 帳戶關聯的存取金鑰。root 存取金鑰不會同步。

  3. 已同步使用者帳戶的政策對應

  4. 安全令牌服務 (STS) 使用者的政策對應

  1. 原則

  2. 群組

  3. 與具有有效 MinIO 政策的 LDAP 帳戶關聯的存取金鑰。root 存取金鑰不會同步。

  4. 已同步使用者帳戶的政策對應

  5. 安全令牌服務 (STS) 使用者的政策對應

在對等站點之間初始同步資料後,MinIO 會持續複製和同步所有站點之間發生的可複製的資料

站點修復

站點複製設定中的任何 MinIO 部署都可以從具有該資料最新版本的對等站點重新同步損壞的符合複製資格的資料

在版本 RELEASE.2023-07-18T17-49-40Z 中變更:站點複製作業最多重試三次。

MinIO 會取消佇列在三次嘗試後仍無法複製的複製作業。 掃描器會在稍後挑選出受影響的物件,並將它們重新加入佇列以進行複製。

在版本 RELEASE.2022-08-11T04-37-28Z 中變更:執行任何 GETHEAD API 方法時,失敗或待處理的複製會自動重新加入佇列。例如,在站點恢復連線後,使用 mc statmc catmc 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 選項。

Proxy 至其他站點

MinIO 對等站點可以將物件的 GET/HEAD 請求 Proxy 至其他對等站點,以檢查該物件是否存在。這允許正在修復或落後於其他對等站點的站點仍然傳回持續儲存在其他站點的物件。

例如

  1. 用戶端向 Site1 發出 GET("data/invoices/january.xls")

  2. Site1 無法找到物件

  3. Site1 將請求 Proxy 至 Site2

  4. Site2 傳回所請求物件的最新版本

  5. Site1 將 Proxy 的物件傳回給用戶端

對於包含唯一版本 ID 的 GET/HEAD 請求,Proxy 請求會傳回對等站點上該物件的最新版本。這可能會導致擷取物件的非最新版本,例如,如果回應的對等站點也遇到複製延遲的情況。

MinIO 不會 Proxy LISTDELETEPUT 作業。

先決條件

先備份叢集設定

在設定站點複寫之前,請使用 mc admin cluster bucket exportmc admin cluster iam export 命令,分別對儲存桶中繼資料和 IAM 設定進行快照。如果站點複寫設定期間發生設定錯誤,您可以使用這些快照來還原儲存桶/IAM 設定。

設定時有一個包含資料的站點

在設定時,只有一個站點可以有資料。其他站點必須是空的,不能有儲存桶和物件。

在設定站點複寫後,第一個部署上的任何資料都會複寫到其他站點。

所有站點都必須使用相同的 IDP

所有站點都必須使用相同的 身分提供者。站點複寫支援內建的 MinIO IDP、OIDC 或 LDAP。

所有站點都必須使用相同的 MinIO 伺服器版本

所有站點都必須具有相符且一致的 MinIO 伺服器版本。在 MinIO 伺服器版本不符的站點之間設定複寫可能會導致意外或不想要的複寫行為。

您還應該確保用於設定複寫的 mc 版本與伺服器版本緊密匹配。

存取相同的加密服務

對於透過金鑰管理服務 (KMS) 進行的 SSE-S3SSE-KMS 加密,所有站點都必須存取中央 KMS 部署。

您可以使用中央 KES 伺服器或多個 KES 伺服器(例如每個站點一個),並透過中央支援的 金鑰保管庫伺服器 連線來實現此目的。

複寫需要版本控制

站點複寫需要 儲存桶版本控制,並會自動為所有建立的儲存桶啟用它。您無法在站點複寫部署中停用版本控制。

MinIO 無法複寫您已排除在版本控制之外的儲存桶前綴中的物件。

每個站點都安裝負載平衡器

指定站點的負載平衡器、反向代理或類似網路控制平面元件的 URL 或 IP 位址。請求會自動路由到部署中的節點。

MinIO 不建議為對等站點使用單一節點主機名稱。這會建立單一故障點:如果該節點離線,複寫就會失敗。

從儲存桶複寫切換到站點複寫

儲存桶複寫 和多站點複寫是互斥的。您不能在相同的部署上使用這兩種複寫方法。

如果您先前已設定儲存桶複寫,並希望現在使用站點複寫,您必須先刪除在初始化站點複寫時具有資料的部署上的所有儲存桶複寫規則。在命令列上使用 mc replicate rm 或 MinIO 主控台來移除儲存桶複寫規則。

設定站點複寫時,只有一個站點可以有資料。所有其他站點都必須是空的。

教學

設定站點複寫

  1. 部署 兩個或多個個別的 MinIO 站點,每個站點都使用相同的身分提供者

    只有一個站點可以有任何儲存桶或物件。其他站點必須是空的。

  2. 在瀏覽器中,存取具有資料的站點的主控台 (如果有的話)

    例如,https://<addressforsite>:9000

    <addressforsite> 替換為管理 MinIO 部署連線的負載平衡器、反向代理或類似控制平面的主機名稱或 IP 位址。

  3. 選取 設定,然後選取 站點複寫

  4. 選取 新增站點 +

  5. 填寫所要求的資訊

    此站點

    • 站點名稱:

      與站點相關聯的名稱或其他識別文字。

    • 端點:

      (必要) 管理站點連線的負載平衡器的主機名稱或 IP。

    • 存取金鑰:

      (必要) 用於登入站點的 root 的使用者名稱。

    • 密碼金鑰:

      (必要) 用於登入站點的 root 的密碼。

    對等站點

    • 站點名稱:

      與站點相關聯的名稱或其他識別文字。

    • 端點:

      (必要) 管理站點連線的負載平衡器的主機名稱或 IP。

    • 存取金鑰:

      (必要) 用於登入站點的對等站點 root 的使用者名稱。

    • 密碼金鑰:

      (必要) 用於登入站點的對等站點 root 的密碼。

    指定站點的負載平衡器、反向代理或類似網路控制平面元件的 URL 或 IP 位址。請求會自動路由到部署中的節點。

    MinIO 不建議為對等站點使用單一節點主機名稱。這會建立單一故障點:如果該節點離線,複寫就會失敗。

    若要新增兩個以上的其他站點,請選取其中一個站點項目的側邊的 + 按鈕。若要移除先前新增的站點,請選取站點側邊的 - 按鈕。

    站點複寫會在每個站點的 root 使用者下新增一個 svcacct,以執行複寫活動。

  6. 選取 儲存

  7. 選取 複寫狀態 按鈕以驗證複寫已在對等站點之間完成。

    存在的任何 可複寫的資料 都應顯示為已成功同步。

    如需更多關於檢閱站點複寫的資訊,請參閱 站點複寫狀態教學

下列步驟會為三個 分散式部署 建立新的站點複寫設定。其中一個站點包含 可複寫的資料

這三個站點使用別名 minio1minio2minio3,而且只有 minio1 包含任何資料。

  1. 部署 三個或多個個別的 MinIO 站點,使用相同的 IDP

    從空的站點開始, 只有一個站點具有任何 可複寫的資料

  2. 為每個站點設定別名

    指定站點的負載平衡器、反向代理或類似網路控制平面元件的 URL 或 IP 位址。請求會自動路由到部署中的節點。

    MinIO 不建議為對等站點使用單一節點主機名稱。這會建立單一故障點:如果該節點離線,複寫就會失敗。

    例如,對於三個 MinIO 站點,您可以建立別名 minio1minio2minio3

    使用 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
    
  3. 新增站點複寫設定

    mc admin replicate add minio1 minio2 minio3
    

    如果所有站點都是空的,則別名的順序無關緊要。如果其中一個站點包含任何 可複寫的資料,您必須先列出它。

    只有一個站點可以包含任何可複寫的資料。

  4. 查詢站點複寫設定以驗證

    mc admin replicate info minio1
    

    您可以使用站點複寫設定中任何對等站點的別名。

  5. 查詢站點複寫狀態以確認任何初始資料已複寫到所有對等站點。

    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 使用者認證

  • 不包含儲存桶或物件資料

  1. 部署新的空白 MinIO 站點

  2. 在瀏覽器中,存取其中一個現有複寫站點的主控台

    例如,https://<addressforsite>:9000

  3. 選取 設定,然後選取 站點複寫

  4. 選取 新增站點 +

  5. 輸入以下項目

    存取金鑰:

    (必要) 用於登入每個站點的使用者名稱。應該在所有站點中相同。

    密碼金鑰:

    (必填) 用於登入每個站點的使用者名稱密碼。在所有站點應保持一致。

    站點名稱:

    用於站點名稱的別名。

    端點:

    (必要) 管理站點連線的負載平衡器的主機名稱或 IP。

    指定站點的負載平衡器、反向代理或類似網路控制平面元件的 URL 或 IP 位址。請求會自動路由到部署中的節點。

    MinIO 不建議為對等站點使用單一節點主機名稱。這會建立單一故障點:如果該節點離線,複寫就會失敗。

    若要新增兩個以上的站點,請選擇最後一個站點條目旁的 + 按鈕。

  6. 選取 儲存

  1. 依照所述需求部署新的 MinIO 對等站點。

  2. 為新站點設定別名

    指定站點的負載平衡器、反向代理或類似網路控制平面元件的 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
    
  3. 新增站點複寫設定

    使用 mc admin replicate add 命令,以新的對等站點擴展站點複寫組態。指定所有現有對等站點的別名,然後指定要新增的新站點的別名。

    例如,以下命令會將新的對等站點 minio4 新增至包含現有站點 minio1minio2minio3 的現有站點複寫組態。

    mc admin replicate add minio1 minio2 minio3 minio4
    

    注意

    如果任何站點無法連線或永久遺失,您在以新站點擴展之前,必須先使用 mc admin replicate rm 移除無法連線的站點。

  4. 查詢站點複寫設定以驗證

    mc admin replicate info minio1
    

修改站點的端點

如果對等站點變更其主機名稱,您可以修改複寫組態以反映新的主機名稱。

  1. 在瀏覽器中,存取其中一個已複寫站點的控制台

    例如,https://<addressforsite>:9000

  2. 選取 設定,然後選取 站點複寫

  3. 選取要更新的站點旁的鉛筆 編輯 圖示

  4. 輸入以下項目

    新的端點:

    (必填) 要使用的新端點位址和連接埠。

    指定站點的負載平衡器、反向代理或類似網路控制平面元件的 URL 或 IP 位址。請求會自動路由到部署中的節點。

    MinIO 不建議為對等站點使用單一節點主機名稱。這會建立單一故障點:如果該節點離線,複寫就會失敗。

  5. 選取 更新

  1. 使用 mc admin replicate info 取得站點的部署 ID。

    mc admin replicate info <ALIAS>
    
  2. 使用 mc admin replicate update 更新站點的端點。

    mc admin replicate update ALIAS --deployment-id [DEPLOYMENT-ID] --endpoint [NEW-ENDPOINT]
    

    將 [DEPLOYMENT-ID] 取代為要更新之站點的部署 ID。

    將 [NEW-ENDPOINT] 取代為站點的新端點。

    指定站點的負載平衡器、反向代理或類似網路控制平面元件的 URL 或 IP 位址。請求會自動路由到部署中的節點。

    MinIO 不建議為對等站點使用單一節點主機名稱。這會建立單一故障點:如果該節點離線,複寫就會失敗。

從複寫中移除站點

您可以隨時從複寫中移除站點。您可以稍後重新新增站點,但您必須先從站點完全清除儲存貯體和物件資料。

  1. 在瀏覽器中,存取其中一個已複寫站點的控制台

    例如,https://<addressforsite>:9000

  2. 選取 設定,然後選取 站點複寫

  3. 選取要更新之站點旁的垃圾桶「刪除」圖示

  4. 在提示中選取 刪除 以確認刪除站點

使用 mc admin replicate rm

mc admin replicate rm ALIAS PEER_TO_REMOVE --force
  • ALIAS 取代為複寫組態中任何對等站點的別名

  • PEER_TO_REMOVE 取代為要移除之對等站點的別名。

站點複寫組態中的所有健全對等點都會更新,以自動移除指定的對等點。

MinIO 需要 --force 旗標,才能從站點複寫組態中移除對等點。

檢閱複寫狀態

MinIO 提供跨站點複寫的資訊,適用於使用者、群組、原則或儲存貯體。

摘要資訊包含每個類別的 已同步失敗 項目數量。

  1. 在瀏覽器中,存取其中一個已複寫站點的控制台

    例如,https://<addressforsite>:9000

  2. 選取 設定,然後選取 站點複寫

  3. 選取 複寫狀態

  4. (選用) 檢視特定項目的複寫狀態

    檢視以下項目的複寫狀態: 下拉式選單中選取要檢視的項目類型

    指定要檢視的特定儲存貯體、群組、原則或使用者名稱

  5. (選用) 選取 重新整理 以更新資訊

使用 mc admin replicate status

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