本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
適用於 RabbitMQ 代理程式的 Amazon MQ 部署選項
RabbitMQ 代理程式可以建立為單一執行個體代理程式或建立於叢集部署中。對於這兩種部署模式,Amazon MQ 會經由備援方式儲存資料,以提供高耐久性。
您可以使用 RabbitMQ 支援的任何程式設計語言,並啟用下列通訊協定來存取 RabbitMQ
選項 1:適用於 RabbitMQ 單一執行個體代理程式的 Amazon MQ
單一執行個體代理程式由 Network Load Balancer (NLB) 後方的一個可用區域中的一個代理程式組成。代理程式會與您的應用程式和 Amazon EBS 儲存磁碟區進行通訊。Amazon EBS 提供針對低延遲和高輸送量最佳化的區塊層級儲存。
使用 Network Load Balancer 可確保在維護時段期間或因為基礎 Amazon 硬體故障而取代代理程式執行個體時,適用於 RabbitMQ 代理程式端點的 Amazon MQ 保持不變。EC2Network Load Balancer 可讓您的應用程式和使用者繼續使用相同的端點來連接至代理程式。
下圖說明 Amazon MQ for RabbitMQ 單一執行個體代理程式。

選項 2:適用於 RabbitMQ 叢集部署的 Amazon MQ
叢集部署是 Network Load Balancer 後面的三個 RabbitMQ 代理程式節點的邏輯分組,每個節點共用使用者、佇列,以及跨多個可用區域 (AZ) 的分散式狀態。
在叢集部署中,Amazon MQ 會自動管理代理程式政策,以啟用跨所有節點的傳統鏡像,進而確保高可用性 (HA)。每個鏡像佇列都包含一個主要節點和一或多個鏡像。每個佇列都有自己的主要節點。指定佇列的所有作業都會先套用在佇列的主要節點上,然後傳播到鏡像。Amazon MQ 會建立預設系統政策,以將 ha-mode
設為 all
和將 ha-sync-mode
設為 automatic
。這可確保資料會跨不同可用區域複寫到叢集中的所有節點,以獲得更佳的耐久性。
注意
在維護時段,叢集的所有維護會一次執行一個節點,而且隨時保留至少兩個執行中的節點。每次關閉節點時,該節點的用戶端連線都會被切斷,而且需要重建。您必須確保用戶端程式碼設計為自動重新連線到叢集。如需連線復原的詳細資訊,請參閱 從網路故障中自動復原。
由於 Amazon MQ 設定 ha-sync-mode: automatic
,在維護期間,當每個節點重新加入叢集時,佇列就會同步處理。佇列同步處理會封鎖所有其他佇列操作。您可以讓佇列保持簡短,以減輕在維護時段對佇列同步處理的影響。
不應刪除預設政策。如果您確實刪除此政策,Amazon MQ 將自動重新建立該政策。Amazon MQ 也會確保 HA 屬性套用至您在叢集式代理程式上建立的所有其他政策。如果您新增不含 HA 屬性的政策,Amazon MQ 會為您新增這些屬性。如果您新增具不同高可用性屬性的政策,Amazon MQ 將會取代這些屬性。如需傳統鏡像的詳細資訊,請參閱傳統鏡像佇列
下圖說明 RabbitMQ 叢集代理程式部署,其中三個節點位於三個可用區域 (AZ),每個節點都有自己的 Amazon EBS 磁碟區和共用狀態。Amazon EBS 提供針對低延遲和高輸送量最佳化的區塊層級儲存。
