创建和配置 Amazon MQ 代理网络
代理网络由多个同时活动的单实例代理或主动/备用代理组成。您可以根据应用程序的需求(例如高可用性和可扩展性),采用各种拓扑(例如,集中器、中心辐射型、树形或网格)配置代理网络。例如,中心辐射型代理网络可以提高弹性,并在无法访问某个代理时保留消息。具有集中器拓扑的代理网络可以从接受传入消息的大量代理处收集消息,并将消息集中到更中心的代理,以更好地处理许多传入消息负载。在本教程中,您将了解如何使用源和接收器拓扑来创建一个具有两个代理的代理网络。
有关概念概述和详细配置信息,请参阅以下内容:
您可以使用 Amazon MQ 控制台创建 Amazon MQ 代理网络。因为您可以开始并行创建这两个代理,所以此过程大约需要 15 分钟。
先决条件
要创建代理网络,您必须具备以下条件:
-
两个或多个同时处于活动状态的代理(在本教程中命名为
MyBroker1
和MyBroker2
)。有关创建代理的更多信息,请参阅Creating and configuring a broker。 -
这两个代理必须位于相同的 VPC 或对等的 VPC 中。有关 VPC 的更多信息,请参阅《Amazon VPC 用户指南》中的什么是 Amazon VPC?和《Amazon VPC 对等连接指南》中的什么是 VPC 对等连接?。
-
对这两个代理具有相同用户名和密码的两个用户。有关创建用户的更多信息,请参见 创建和管理 ActiveMQ 代理用户。
注意 将 LDAP 身份验证与代理网络集成时,请确保该用户既作为 ActiveMQ 代理,也作为 LDAP 用户存在。
以下示例使用两个单实例代理。但是,您可以使用主动/备用代理或代理部署模式的组合来创建代理网络。
步骤 1:允许代理之间的流量
创建代理后,必须允许它们之间的流量。
-
在 Amazon MQ 控制台
上,在 MyBroker2 页面的 Details (详细信息) 部分中的 Security and network (安全与网络) 下,选择您的安全组名称或 。
此时将显示 EC2 Dashboard 的 Security Groups (安全组) 页面。
-
从安全组列表中,选择您的安全组。
-
在页面底部,选择 Inbound (入站),然后选择 Edit (编辑)。
-
在 Edit inbound rules (编辑入站规则) 对话框中,为 OpenWire 终端节点添加规则。
-
选择 Add Rule(添加规则)。
-
对于 Type (类型),选择 Custom TCP (自定义 TCP)。
-
对于 Port Range (端口范围),键入 OpenWire 端口 (
61617
)。 -
请执行下列操作之一:
-
如果您想要限制访问特定 IP 地址,对于 Source (源),请将 Custom (自定义) 选定,然后输入主机的 IP 地址
MyBroker1
,然后输入/32
。(这会将 IP 地址转换为有效的 CIDR 记录)。有关更多信息,请参阅弹性网络接口。提示 要检索
MyBroker1
的 IP 地址,请在 Amazon MQ 控制台上,选择代理的名称并导航到 Details (详细信息) 部分。 -
如果所有代理都是私有的,并且属于相同的 VPC,则对于 Source (源),请将 Custom (自定义) 选定,然后键入要编辑的安全组的 ID。
注意 对于公有代理,您必须使用 IP 地址限制访问。
-
-
选择 Save(保存)。
您的代理现在可以接受入站连接。
-
步骤 2:为您的代理配置网络连接器
在允许代理之间的流量后,必须为其中一个代理配置网络连接器。
-
编辑代理
MyBroker1
的配置修订。-
在 MyBroker1 页面上,选择 Edit (编辑)。
-
在 Edit MyBroker1 (编辑 MyBroker1) 页面上的 Configuration (配置) 部分中,选择 View (视图)。
将会显示配置所使用的代理引擎类型和版本(例如,Apache ActiveMQ 5.15.0)。
-
在 Configuration details 选项卡上,会显示配置修订号、描述和 XML 格式的代理配置。
-
选择 Edit configuration (编辑配置)。
-
在配置文件的底部,取消注释
<networkConnectors>
部分并包含以下信息:-
网络连接器的
name
。 -
两个代理共有的 ActiveMQ Web 控制台username。
-
启用
duplex
连接。 -
请执行下列操作之一:
-
如果要将代理连接到单实例代理,请对
MyBroker2
使用static:
前缀和 OpenWire 终端节点uri
。例如:<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> -
如果要将代理连接到主动/备用代理,请通过以下查询参数
?randomize=false&maxReconnectAttempts=0
对这两个代理使用static+failover
传输和 OpenWire 终端节点uri
。例如:<networkConnectors> <networkConnector name="
connector_1_to_2
" userName="myCommonUser
" duplex="true" uri="static:(failover:(ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617, ssl://b-9876l5k4-32ji-109h-8gfe-7d65c4b132a1-2.mq.us-east-2.amazonaws.com:61617
)?randomize=false&maxReconnectAttempts=0)"/> </networkConnectors>
注意 请勿包含 ActiveMQ 用户的密码。
-
-
-
选择 Save(保存)。
-
在 Save revision (保存修订) 对话框中,键入
Add network of brokers connector for MyBroker2
。 -
选择 Save (保存) 以保存配置的新修订。
-
-
编辑
MyBroker1
以将最新的配置修订设置为立即应用。-
在 MyBroker1 页面上,选择 Edit (编辑)。
-
在 Edit MyBroker1 (编辑 MyBroker1) 页面上的 Configuration (配置) 部分中,选择 Schedule Modifications (计划修改)。
-
在 Schedule broker modifications (计划代理修改) 部分中,选择 Immediately (立即) 应用修改。
-
选择 Apply(应用)。
MyBroker1
会重新启动,而且会应用您的配置修订。
将会创建代理网络。
-
后续步骤
配置代理网络后,可以通过生成和使用消息来测试它。
确保在端口 8162(适用于 ActiveMQ Web 控制台)和端口 61617(适用于 OpenWire 终端节点)上为代理 MyBroker1
启用从本地计算机的入站连接。
您可能还需要调整安全组设置,以允许创建者和使用者连接到代理网络。
-
在 Amazon MQ 控制台
上,导航到 Connections (连接) 部分,记下代理 MyBroker1
的 ActiveMQ Web 控制台终端节点。 -
导航到代理
MyBroker1
的 ActiveMQ Web 控制台。 -
要验证网桥是否已连接,请选择 Network (网络)。
在 Network Bridges(网桥)部分中,
MyBroker2
的名称和地址列在 Remote Broker(远程代理)和 Remote Address(远程地址)列中。 -
从任何可以访问代理
MyBroker2
的计算机上,创建一个使用者。例如:activemq consumer --brokerUrl "ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617" \ --user commonUser \ --password myPassword456 \ --destination queue://MyQueue
该使用者连接到
MyBroker2
的 OpenWire 终端节点,并开始从队列MyQueue
中使用消息。 -
从任何可以访问代理
MyBroker1
的计算机上,创建一个创建者并发送一些消息。例如:activemq producer --brokerUrl "ssl://b-9876l5k4-32ji-109h-8gfe-7d65c4b132a1-1.mq.us-east-2.amazonaws.com:61617" \ --user commonUser \ --password myPassword456 \ --destination queue://MyQueue \ --persistent true \ --messageSize 1000 \ --messageCount 10000
该创建者连接到
MyBroker1
的 OpenWire 终端节点,并开始向队列MyQueue
中生成持久消息。