同步站點

此文件描述將離線站點與線上站點同步所需的程序

何時使用此程序

當兩個站點的 Infinispan 叢集狀態斷線且快取內容不同步時,請使用此程序。例如,在發生腦裂或一個站點因維護而離線後執行此操作。

在程序結束時,次要站點上的資料將被丟棄並替換為活動站點的資料。離線站點中的所有快取都會被清除,以防止出現無效的快取內容。

程序

Infinispan 叢集

在本指南中,site-a 是目前活動的站點,而 site-b 是一個離線站點,它不屬於 AWS Global Accelerator EndpointGroup,因此不會接收使用者請求。

傳輸狀態可能會影響 Infinispan 叢集的效能,方法是增加回應時間和/或資源使用量。

第一個程序是刪除離線站點中的過時資料。

  1. 登入離線站點。

  2. 關閉 Keycloak。這將清除所有 Keycloak 快取,並防止 Keycloak 狀態與 Infinispan 不同步。

    當使用 Keycloak Operator 部署 Keycloak 時,請將 Keycloak 自定義資源中的 Keycloak 實例數更改為 0。

  3. 使用 Infinispan CLI 工具連線到 Infinispan 叢集

    指令
    kubectl -n keycloak exec -it pods/infinispan-0 -- ./bin/cli.sh --trustall --connect https://127.0.0.1:11222

    它會要求您輸入 Infinispan 叢集的用戶名和密碼。這些憑證是在 使用 Infinispan Operator 為 HA 部署 Infinispan 指南的設定憑證章節中設定的。

    輸出
    Username: developer
    Password:
    [infinispan-0-29897@ISPN//containers/default]>
    Pod 名稱取決於在 Infinispan CR 中定義的叢集名稱。可以使用 Infinispan 叢集中的任何 Pod 進行連線。
  4. 執行以下指令,停用從離線站點到活動站點的複寫。這可防止清除請求到達活動站點並刪除所有正確的快取資料。

    指令
    site take-offline --all-caches --site=site-a
    輸出
    {
      "authenticationSessions" : "ok",
      "work" : "ok",
      "loginFailures" : "ok",
      "actionTokens" : "ok"
    }
  5. 檢查複寫狀態是否為 offline

    指令
    site status --all-caches --site=site-a
    輸出
    {
      "status" : "offline"
    }

    如果狀態不是 offline,請重複上一個步驟。

    請確保複寫狀態為 offline,否則清除資料會清除兩個站點。
  6. 使用以下指令清除離線站點中的所有快取資料

    指令
    clearcache actionTokens
    clearcache authenticationSessions
    clearcache loginFailures
    clearcache work

    這些指令不會列印任何輸出。

  7. 重新啟用從離線站點到活動站點的跨站點複寫。

    指令
    site bring-online --all-caches --site=site-a
    輸出
    {
      "authenticationSessions" : "ok",
      "work" : "ok",
      "loginFailures" : "ok",
      "actionTokens" : "ok"
    }
  8. 檢查複寫狀態是否為 online

    指令
    site status --all-caches --site=site-a
    輸出
    {
      "status" : "online"
    }

現在,我們準備將狀態從活動站點傳輸到離線站點。

  1. 登入您的活動站點

  2. 使用 Infinispan CLI 工具連線到 Infinispan 叢集

    指令
    kubectl -n keycloak exec -it pods/infinispan-0 -- ./bin/cli.sh --trustall --connect https://127.0.0.1:11222

    它會要求您輸入 Infinispan 叢集的用戶名和密碼。這些憑證是在 使用 Infinispan Operator 為 HA 部署 Infinispan 指南的設定憑證章節中設定的。

    輸出
    Username: developer
    Password:
    [infinispan-0-29897@ISPN//containers/default]>
    Pod 名稱取決於在 Infinispan CR 中定義的叢集名稱。可以使用 Infinispan 叢集中的任何 Pod 進行連線。
  3. 觸發從活動站點到離線站點的狀態傳輸。

    指令
    site push-site-state --all-caches --site=site-b
    輸出
    {
      "authenticationSessions" : "ok",
      "work" : "ok",
      "loginFailures" : "ok",
      "actionTokens" : "ok"
    }
  4. 檢查所有快取的複寫狀態是否為 online

    指令
    site status --all-caches --site=site-b
    輸出
    {
      "status" : "online"
    }
  5. 透過檢查所有快取的 push-site-status 指令的輸出,等待狀態傳輸完成。

    指令
    site push-site-status --cache=actionTokens
    site push-site-status --cache=authenticationSessions
    site push-site-status --cache=loginFailures
    site push-site-status --cache=work
    輸出
    {
      "site-b" : "OK"
    }
    {
      "site-b" : "OK"
    }
    {
      "site-b" : "OK"
    }
    {
      "site-b" : "OK"
    }

    請參閱 跨站點文件中的此章節中的表格,以取得可能的狀態值。

    如果報告錯誤,請針對該特定快取重複狀態傳輸。

    指令
    site push-site-state --cache=<cache-name> --site=site-b
  6. 使用以下指令清除/重設狀態傳輸狀態

    指令
    site clear-push-site-status --cache=actionTokens
    site clear-push-site-status --cache=authenticationSessions
    site clear-push-site-status --cache=loginFailures
    site clear-push-site-status --cache=work
    輸出
    "ok"
    "ok"
    "ok"
    "ok"

現在,狀態已在離線站點中可用,可以再次啟動 Keycloak

  1. 登入您的次要站點。

  2. 啟動 Keycloak。

    當使用 Keycloak Operator 部署 Keycloak 時,請將 Keycloak 自定義資源中的 Keycloak 實例數更改回原始值。

AWS Aurora 資料庫

無需任何動作。

AWS Global Accelerator

兩個站點同步後,可以按照將站點上線指南中的步驟,將先前離線的站點新增回 Global Accelerator EndpointGroup。

延伸閱讀

在此頁面上