kubectl -n keycloak exec -it pods/infinispan-0 -- ./bin/cli.sh --trustall --connect https://127.0.0.1:11222
當兩個站點的 Infinispan 叢集狀態斷線且快取內容不同步時,請使用此程序。例如,在發生腦裂或一個站點因維護而離線後執行此操作。
在程序結束時,次要站點上的資料將被丟棄並替換為活動站點的資料。離線站點中的所有快取都會被清除,以防止出現無效的快取內容。
在本指南中,site-a
是目前活動的站點,而 site-b
是一個離線站點,它不屬於 AWS Global Accelerator EndpointGroup,因此不會接收使用者請求。
傳輸狀態可能會影響 Infinispan 叢集的效能,方法是增加回應時間和/或資源使用量。 |
第一個程序是刪除離線站點中的過時資料。
登入離線站點。
關閉 Keycloak。這將清除所有 Keycloak 快取,並防止 Keycloak 狀態與 Infinispan 不同步。
當使用 Keycloak Operator 部署 Keycloak 時,請將 Keycloak 自定義資源中的 Keycloak 實例數更改為 0。
使用 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 進行連線。 |
執行以下指令,停用從離線站點到活動站點的複寫。這可防止清除請求到達活動站點並刪除所有正確的快取資料。
site take-offline --all-caches --site=site-a
{
"authenticationSessions" : "ok",
"work" : "ok",
"loginFailures" : "ok",
"actionTokens" : "ok"
}
檢查複寫狀態是否為 offline
。
site status --all-caches --site=site-a
{
"status" : "offline"
}
如果狀態不是 offline
,請重複上一個步驟。
請確保複寫狀態為 offline ,否則清除資料會清除兩個站點。 |
使用以下指令清除離線站點中的所有快取資料
clearcache actionTokens
clearcache authenticationSessions
clearcache loginFailures
clearcache work
這些指令不會列印任何輸出。
重新啟用從離線站點到活動站點的跨站點複寫。
site bring-online --all-caches --site=site-a
{
"authenticationSessions" : "ok",
"work" : "ok",
"loginFailures" : "ok",
"actionTokens" : "ok"
}
檢查複寫狀態是否為 online
。
site status --all-caches --site=site-a
{
"status" : "online"
}
現在,我們準備將狀態從活動站點傳輸到離線站點。
登入您的活動站點
使用 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 進行連線。 |
觸發從活動站點到離線站點的狀態傳輸。
site push-site-state --all-caches --site=site-b
{
"authenticationSessions" : "ok",
"work" : "ok",
"loginFailures" : "ok",
"actionTokens" : "ok"
}
檢查所有快取的複寫狀態是否為 online
。
site status --all-caches --site=site-b
{
"status" : "online"
}
透過檢查所有快取的 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
使用以下指令清除/重設狀態傳輸狀態
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
登入您的次要站點。
啟動 Keycloak。
當使用 Keycloak Operator 部署 Keycloak 時,請將 Keycloak 自定義資源中的 Keycloak 實例數更改回原始值。
無需任何動作。
兩個站點同步後,可以按照將站點上線指南中的步驟,將先前離線的站點新增回 Global Accelerator EndpointGroup。