本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon MQ 經紀人網絡
Amazon MQ 支援 ActiveMQ 的代理程式網路功能。
代理程式網路由多個同時作用中單一執行個體代理程式或作用中/待命代理程式組成。您可以根據應用程式的需求 (例如,集中器、樹狀結構或網狀結構) hub-and-spokes,設定各種拓撲中的代理程式網路,例如高可用性和延展性。例如,中樞和支點代理程式網路網路可以提高恢復能力,如果一個代理程式無法連線,則會保留訊息。具有集中器拓撲的代理程式網路可以從接受傳入訊息的大量代理程式收集訊息,並將它們集中到更多中央代理程式,以便更妥善處理許多傳入訊息的載入。
如需教學課程和詳細的組態資訊,請參閱下列內容:
下列是使用代理程式網路的優點:
-
建立代理程式網路可讓您透過新增代理程式執行個體,來提高彙總的輸送量,並達到最大的生產者與使用者連線數。
-
您可以讓生產者和使用者注意到多個運作中的代理程式執行個體,來確保更高的可用性。如果生產者和使用者目前所連線的執行個體變得無法使用,這項機制就能讓這些人重新連線到新的執行個體。
-
由於生產者和使用者可以立即重新連線到代理程式網路中的另一個節點,而且不需等待備用的代理程式執行個體提升,因此代理程式網路內的用戶端重新連線,速度會比運作中/待命的代理程式快,提供高可用性。
代理程式網路的運作方式?
Amazon MQ 透過多種方式來支援 ActiveMQ 代理程式網路功能。首先,您可以編輯每個代理程式組態中的參數,來建立代理程式網路,就如同使用原生 ActiveMQ 時所能進行的動作。其次,Amazon MQ 具有用 AWS CloudFormation 於自動化建立代理程式網路的範例藍圖。您可以直接從 Amazon MQ 主控台來部署這些範例藍圖,或是您可編輯相關的 AWS CloudFormation 範本以建立自己的拓撲和組態。
若要建立代理程式網路,可使用網路連接器,將一個代理程式連接到另一個。連線後,這些代理程式會提供訊息轉傳功能。例如,如果 Broker1 建立連接到 Broker2 的網路連接器,則當該代理程式上存在佇列或主題的取用者時,Broker1 上的訊息會轉傳到 Broker2。如果網路連接器是設定為 duplex
,則訊息也會從 Broker2 轉傳到 Broker1。網路連接器是在代理程式的組態中設定。請參閱 Amazon MQ Broker Configuration Parameters。例如,下面是代理程式組態中的範例 networkConnector
項目:
<networkConnectors>
<networkConnector name="connector_1_to_2" userName="myCommonUser" duplex="true"
uri="static:(ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617)"/>
</networkConnectors>
代理程式網路可確保訊息從一個代理程式執行個體傳送到另一個,只將訊息轉傳給具有對應使用者的代理程式執行個體。至於網路內相鄰代理程式執行個體的優點,在於 ActiveMQ 會傳送訊息到諮詢主題,此主題是關於連線到網路和從網路中斷的生產者與使用者。當代理程式執行個體接收到關於取用者的資訊,而此取用者是從特定的目的地使用時,則代理程式執行個體會開始轉傳訊息。如需詳細資訊,請參閱 ActiveMQ 文件中的 Advisory Topics (諮詢主題)
代理程式網路如何處理登入資料?
網路中的代理程式 A 若要連線到代理程式 B,代理程式 A 必須使用有效的登入資料,就如同其他任何生產者或使用者。您必須先在代理程式 A 上建立使用者,其值與代理程式 B 上的另一個使用者相同 (這些是共用相同使用者名稱和密碼值的獨立、唯一使用者),而不是在代理程式 A 的 <networkConnector>
組態中提供密碼。當您在 <networkConnector>
組態中指定 userName
屬性時,Amazon MQ 將會在執行時間自動新增密碼。
重要
不要指定 <networkConnector>
的 password
屬性。我們不建議在代理程式的組態檔案中儲存純文字密碼,因為這樣在 Amazon MQ 主控台中就看得到密碼。如需詳細資訊,請參閱Configure Network Connectors for Your Broker。
經紀人必須是相同的VPC或對等VPCs的。如需詳細資訊,請參閱Creating and Configuring a Network of Brokers教學課程中的必要條件。
藍圖範例
若要開始使用代理程式網路,Amazon MQ 提供了藍圖範例。這些範例藍圖會建立代理程式網路部署,並使用、建立所有相關資源。 AWS CloudFormation您可使用下列兩種藍圖範例:
-
單一執行個體代理程式的網狀網路
-
運作中/待命代理程式的網狀網路
從 Create brokers (建立代理程式) 頁面,選取其中一個藍圖範例,然後選擇 Next (下一步)。資源建立之後,請在 Amazon MQ 主控台中,檢閱所產生的代理程式及其組態。
藉由在代理程式組態中,建立代理程式和設定不同的 networkConnector
元素,您可以使用多種不同的拓撲,來建立代理程式的網路。如需關於設定代理程式網路的詳細資訊,請參閱 ActiveMQ 文件中的 Networks of Brokers (代理程式網路)
代理程式網路拓撲
透過部署代理程式,然後在其組態中設定 networkConnector
項目,您可以使用不同的網路拓撲來建置代理程式網路。網路連接器提供在互連的代理程式之間,轉傳隨需訊息的功能。連線可設定為雙工或非雙工,前者會在代理程式之間雙向轉傳訊息,後者指會將訊息從一個代理程式傳佈到另一個。例如,如果在 Broker1 和 Broker2 之間具有雙工連線,則出現使用者時,訊息會在代理程式之間彼此轉傳。
如果使用雙工網路連接器,訊息會從每個代理程式轉傳到其他代理程式。這些是隨需轉傳:如果 Broker2 上存在 Broker1 上訊息的使用者,則會轉傳訊息。同樣地,如果 Broker1 上存在 Broker2 上訊息的使用者,也會轉傳訊息。
如果是非雙工連線,則訊息只會從一個代理程式轉傳到其他代理程式。在此範例中,如果 Broker2 上存在 Broker1 上訊息的使用者,則會轉傳訊息。但訊息將不會從 Broker2 轉傳到 Broker1。
使用這兩種雙工和非雙工網路連接器,就有可能以任何數量規模的網路拓撲,來建置代理程式的網路。
注意
在每個網路拓撲範例中,networkConnector
元素會參考自己所連接代理程式的端點。將 uri
屬性中的代理程式端點項目,換成您代理程式的端點。請參閱 Listing brokers and viewing broker details。
網狀拓撲
網狀拓撲提供彼此連線的多個代理程式。這個簡單的範例連接了三個單一執行個體代理程式,但您可以設定更多代理程式成為網狀網路。
這個拓撲和內含多對作用中/待命代理程式所構成的網狀拓撲,都可以在 Amazon MQ 主控台中建立使用藍圖範例來建立。您可以建立這些藍圖範例,來查看正常運作的代理程式網路,並檢閱這些代理程式的設定方式。
您可以透過將網路連接器加到 Broker1 (該網路連接器會在 Broker2 和 Broker3 之間進行雙工連線,以及在 Broker2 和 Broker3 之間進行單一雙工連線),來設定三個代理程式網狀網路。
Broker1 的網路連接器:
<networkConnectors>
<networkConnector name="connector_1_to_2" userName="myCommonUser" duplex="true"
uri="static:(ssl://b-9876l5k4-32ji-109h-8gfe-7d65c4b132a1-2.mq.us-east-2.amazonaws.com:61617)"/>
<networkConnector name="connector_1_to_3" userName="myCommonUser" duplex="true"
uri="static:(ssl://b-743c885d-2244-4c95-af67-a85017ff234e-3.mq.us-east-2.amazonaws.com:61617)"/>
</networkConnectors>
Broker2 的網路連接器:
<networkConnectors>
<networkConnector name="connector_2_to_3" userName="myCommonUser" duplex="true"
uri="static:(ssl://b-743c885d-2244-4c95-af67-a85017ff234e-3.mq.us-east-2.amazonaws.com:61617)"/>
</networkConnectors>
透過將上述的連接器加入 Broker1 and Broker2 的組態,您可以在這三個代理程式之間,建立網狀網路,來隨需在所有的代理程式之間轉傳訊息。如需詳細資訊,請參閱Amazon MQ Broker Configuration Parameters。
中樞和支點拓撲
在中樞和支點拓撲中,如果支點上的任何代理程式有所中斷,將會保留訊息。訊息會轉傳到各處,而且只有中央的 Broker1 對網路的運作至關重要。
若要在此範例中設定代理程式的中樞和支點網路,您可以在 Broker1 的組態中將 networkConnector
新增至支點上的每個代理程式。
<networkConnectors>
<networkConnector name="connector_hub_and_spoke_2" userName="myCommonUser" duplex="true"
uri="static:(ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617)"/>
<networkConnector name="connector_hub_and_spoke_3" userName="myCommonUser" duplex="true"
uri="static:(ssl://b-9876l5k4-32ji-109h-8gfe-7d65c4b132a1-2.mq.us-east-2.amazonaws.com:61617)"/>
<networkConnector name="connector_hub_and_spoke_4" userName="myCommonUser" duplex="true"
uri="static:(ssl://b-743c885d-2244-4c95-af67-a85017ff234e-3.mq.us-east-2.amazonaws.com:61617)"/>
<networkConnector name="connector_hub_and_spoke_5" userName="myCommonUser" duplex="true"
uri="static:(ssl://b-62a7fb31-d51c-466a-a873-905cd660b553-4.mq.us-east-2.amazonaws.com:61617)"/>
</networkConnectors>
集中器拓撲
在此拓撲範例中,位於底部的三個代理程式可以處理大量的連線,而這些訊息會集中到 Broker1 和 Broker2。其他每個代理程式,都具有非雙工連線,來連線到更多中心代理程式。若要擴展此拓撲的容量,您可以新增額外的代理程式,來接收訊息,並且將這些訊息集中到 Broker1 和 Broker2。
若要設定此種拓撲,位於底部的每個代理程式,都會包含網路連接器,連接到做為訊息集中目的地的每個代理程式。
Broker3 的網路連接器:
<networkConnectors>
<networkConnector name="3_to_1" userName="myCommonUser" duplex="false"
uri="static:(ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617)"/>
<networkConnector name="3_to_2" userName="myCommonUser" duplex="false"
uri="static:(ssl://b-9876l5k4-32ji-109h-8gfe-7d65c4b132a1-2.mq.us-east-2.amazonaws.com:61617)"/>
</networkConnectors>
Broker4 的網路連接器:
<networkConnectors>
<networkConnector name="4_to_1" userName="myCommonUser" duplex="false"
uri="static:(ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617)"/>
<networkConnector name="4_to_2" userName="myCommonUser" duplex="false"
uri="static:(ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617)"/>
</networkConnectors>
Broker5 的網路連接器:
<networkConnectors>
<networkConnector name="5_to_1" userName="myCommonUser" duplex="false"
uri="static:(ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617)"/>
<networkConnector name="5_to_2" userName="myCommonUser" duplex="false"
uri="static:(ssl://b-9876l5k4-32ji-109h-8gfe-7d65c4b132a1-2.mq.us-east-2.amazonaws.com:61617)"/>
</networkConnectors>
跨區域
若要設定跨 AWS 區域的代理程式網路,請在這些區域中部署代理程式,並設定這些代理程式端點的網路連接器。
若要像這個範例一樣設定代理程式網路,您可以將 networkConnectors
項目新增到 Broker1 和 Broker4 組態,以參考這些代理程式的線路層級端點 。
Broker1 的網路連接器:
<networkConnectors>
<networkConnector name="1_to_2" userName="myCommonUser" duplex="true"
uri="static:(ssl://b-9876l5k4-32ji-109h-8gfe-7d65c4b132a1-2.mq.us-east-2.amazonaws.com:61617)"/>
<networkConnector name="1_to_3" userName="myCommonUser" duplex="true"
uri="static:(ssl://b-743c885d-2244-4c95-af67-a85017ff234e-3.mq.us-east-2.amazonaws.com:61617)"/>
<networkConnector name="1_to_4" userName="myCommonUser" duplex="true"
uri="static:(ssl://b-62a7fb31-d51c-466a-a873-905cd660b553-4.mq.us-east-2.amazonaws.com:61617)"/>
</networkConnectors>
Broker2 的網路連接器:
<networkConnectors>
<networkConnector name="2_to_3" userName="myCommonUser" duplex="true"
uri="static:(ssl://b-743c885d-2244-4c95-af67-a85017ff234e-3.mq.us-east-2.amazonaws.com:61617)"/>
</networkConnectors>
Broker4 的網路連接器:
<networkConnectors>
<networkConnector name="4_to_3" userName="myCommonUser" duplex="true"
uri="static:(ssl://b-743c885d-2244-4c95-af67-a85017ff234e-3.mq.us-east-2.amazonaws.com:61617)"/>
<networkConnector name="4_to_2" userName="myCommonUser" duplex="true"
uri="static:(ssl://b-9876l5k4-32ji-109h-8gfe-7d65c4b132a1-2.mq.us-east-2.amazonaws.com:61617)"/>
</networkConnectors>
搭配傳輸連接器的動態容錯移轉
除了設定 networkConnector
元素,您還可以將代理程式 transportConnector
選項設定成啟用動態容錯移轉,並在網路中新增或移除代理程式時重新平衡連線。
<transportConnectors>
<transportConnector name="openwire" updateClusterClients="true" rebalanceClusterClients="true" updateClusterClientsOnRemove="true"/>
</transportConnectors>
在此範例中,updateClusterClients
和 rebalanceClusterClients
都會設定為 true
。在這種情況下,用戶端將會獲得網路內代理程式清單,並會在新的代理程式加入時要求重新平衡。
可用選項:
-
updateClusterClients
:將有關代理程式網路拓撲變更的資訊傳遞給用戶端。 -
rebalanceClusterClients
:將在代理程式網路中新增代理程式時,造成用戶端重新平衡所有的代理程式。 -
updateClusterClientsOnRemove
:在代理程式離開代理程式網路時,搭配拓撲資訊更新用戶端。
當 updateClusterClients
設為 True 時,用戶端即可設定為連接至代理程式網路中的單一代理程式。
failover:(ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617)
當一個新的經紀人連接,它會收到網絡URIs中所有經紀人的列表。如果與代理程式的連線失敗,則連線會動態切換到已連線的其中一個代理程式。
如需關於容錯移轉的詳細資訊,請參閱 Active MQ 文件中的容錯移轉適用的代理程式選項