![[MQ 9.2.3 2021 年 7 月]](ng923.gif)
![[持續交付]](ngcd.gif)
![[IBM Cloud Pak for Integration]](ngcp4i.gif)
原生 HA
原生 HA 是適用於 IBM® MQ 的原生 (內建) 高可用性解決方案,適合與雲端區塊儲存體搭配使用。
「原生 HA」配置提供高可用性佇列管理程式,其中可回復的 MQ 資料 (例如,訊息) 會在多組儲存體之間抄寫,以防止因儲存體故障而流失。 佇列管理程式由多個執行中的實例組成,其中一個實例是主導者,其他實例則準備好在失敗時快速接管,以最大化對佇列管理程式及其訊息的存取權。
原生 HA 配置由三個 Kubernetes Pod 組成,每個 Pod 都有一個佇列管理程式實例。 一個實例是作用中佇列管理程式,處理訊息並寫入其回復日誌。 每當寫入回復日誌時,作用中佇列管理程式就會將資料傳送至另外兩個實例,稱為抄本。 每一個抄本都會寫入自己的回復日誌,確認資料,然後從抄寫的回復日誌更新自己的佇列資料。 如果執行作用中佇列管理程式的 Pod 失敗,則佇列管理程式的其中一個抄本實例會接管作用中角色,並具有可操作的現行資料。
日誌類型稱為「抄寫日誌」。 抄寫的日誌基本上是線性日誌,並已啟用自動日誌管理及自動媒體映像檔。 請參閱 記載類型。 您可以使用相同的技術來管理用於管理線性日誌的抄寫日誌。
Kubernetes Service 用於將 TCP/IP 用戶端連線遞送至現行作用中實例,該實例被識別為備妥可進行網路資料流量的唯一 Pod。 這會發生,而不需要用戶端應用程式知道不同的實例。
3 個 Pod 被用來大大減少出現腦分裂情況的可能性。 在雙 Pod 高可用性中,當兩個 Pod 之間的連線功能中斷時,可能會發生核心分裂。 如果沒有連線功能,兩個 Pod 可以同時執行佇列管理程式,累計不同的資料。 當連線恢復時,會有兩個不同版本的資料 ('spit-brain ') ,需要人為介入來決定要保留哪些資料集,以及要捨棄哪些資料集。
- 如果單一 Pod 失敗,則其他兩個 Pod 之一上的佇列管理程式可以接管。 如果兩個 Pod 失敗,則佇列管理程式無法變成其餘 Pod 上的作用中實例,因為該 Pod 沒有仲裁 (其餘 Pod 無法指出其他兩個 Pod 是否失敗,或它們仍在執行中且失去連線功能)。
- 如果單一 Pod 失去連線功能,則佇列管理程式無法在此 Pod 上變成作用中,因為 Pod 沒有仲裁。 其餘兩個 Pod 中的其中一個 Pod 上的佇列管理程式可以接管具有額定的佇列管理程式。 如果所有 Pod 都失去連線功能,則佇列管理程式無法在任何 Pod 上變成作用中,因為所有 Pod 都沒有仲裁。
如果作用中 Pod 失敗並隨後回復,則可以在抄本角色中重新結合群組。
下圖顯示一般部署,其中有三個佇列管理程式實例部署在三個儲存器中。
