Rede de agentes Amazon MQ - Amazon MQ

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Rede de agentes Amazon MQ

O Amazon MQ é compatível com o recurso da rede de agentes do ActiveMQ.

A rede de agentes é composta por vários agentes ativos simultaneamente, agentes de instância única ou agentes ativos/em espera. É possível configurar redes de agentes em uma variedade de topologias (por exemplo, concentrator, hub-and-spokes, tree, ou mesh), dependendo das necessidades da sua aplicação, como alta disponibilidade e escalabilidade. Por exemplo, uma rede hub-and-spokes (hub-e-raios) de agentes pode aumentar a resiliência, preservando mensagens se um agente não estiver acessível. Uma rede de agentes com uma topologia de concentrador pode coletar mensagens de um número maior de agentes que aceitam mensagens recebidas, e concentrá-las em agentes mais centrais, para lidar melhor com a carga de muitas mensagens recebidas.

Para obter um tutorial e informações detalhadas de configuração, consulte o seguinte:

Veja a seguir os benefícios de usar uma rede de agentes:

  • A criação de uma rede de agentes permite aumentar a taxa de transferência agregada e contagem máxima da conexão de produtor e consumidor, adicionando instâncias de agente.

  • Você pode garantir melhor disponibilidade, permitindo que os produtores e os consumidores estejam cientes de várias instâncias de agente ativas. Isso permite que eles se reconectem a uma nova instância se aquela a qual estiverem conectados no momento se tornar indisponível.

  • Como os produtores e os consumidores podem se reconectar a outro nó na rede de agentes imediatamente, e como não há necessidade de esperar que uma instância de agente em espera seja promovida, a reconexão do cliente dentro de uma rede de agentes é mais rápida do que para um agente ativo/em espera de alta disponibilidade.

Como funciona uma rede de agentes?

O Amazon MQ é compatível com o recurso de rede de agentes do ActiveMQ de diversas maneiras. Primeiro, você pode editar os parâmetros dentro de cada configuração do agente para criar uma rede de agentes, da mesma forma que faria com o ActiveMQ nativo. Em segundo lugar, o Amazon MQ tem os esquemas de exemplo que usam AWS CloudFormation para automatizar a criação de uma rede de agentes. Você pode implantar esses exemplos de esquemas diretamente no console do Amazon MQ, ou você pode editar os respectivos modelos AWS CloudFormation para criar suas próprias topologias e configurações.

Uma rede de agentes é estabelecida por meio da conexão de um agente com outro usando os conectores de rede. Depois de conectados, esses agentes fornecem o encaminhamento de mensagem. Por exemplo, se Broker1 estabelece um conector de rede com Broker2, as mensagens no Broker1 são encaminhadas para o Broker2 se houver um consumidor nesse agente para a fila ou tópico. Se o conector de rede for configurado como duplex, as mensagens também serão encaminhadas do Broker2 para o Broker1. Os conectores de rede são configurados na configuração do agente. Consulte Configuração. Por exemplo, aqui está um exemplo de entrada do networkConnector em uma configuração de agente:

<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>

Uma rede de agentes garante que as mensagens passem de uma instância de agente para outra, encaminhe mensagens apenas para instâncias de agente que têm consumidores correspondentes. Para o benefício de instâncias de agente adjacentes dentro da rede, o ActiveMQ envia mensagens para tópicos de aviso sobre como os produtores e consumidores se conectam e se desconectam da rede. Quando uma instância de agente recebe informações sobre um consumidor que consome de um destino específico, a instância de agente começa a encaminhar mensagens. Para obter mais informações, consulte Tópicos de aviso na documentação do ActiveMQ.

Como uma rede de agentes lida com as credenciais?

Para o agente A se conectar ao agente B em uma rede, o agente A deve usar credenciais válidas, como qualquer outro produtor ou consumidor. Em vez de fornecer uma senha em uma configuração do <networkConnector> do agente A, você deve primeiro criar um usuário no agente A com os mesmos valores como outro usuário no agente B (esses são usuários separados e exclusivos que compartilham os mesmos valores de nome de usuário e senha). Quando você especifica o atributo userName na configuração do <networkConnector>, o Amazon MQ adicionará a senha automaticamente no tempo de execução.

Importante

Não especifique o atributo password para o <networkConnector>. Não recomendamos armazenar senhas em texto simples nos arquivos de configuração do agente, porque isso torna as senhas visíveis no console do Amazon MQ. Para obter mais informações, consulte Configure Network Connectors for Your Broker.

Os agentes devem estar na mesma VPC ou em VPCs emparelhadas. Para obter mais informações, consulte Pré-requisitos no tutorial Creating and Configuring a Network of Brokers.

Esquemas de exemplo

Para começar a usar uma rede de agentes, o Amazon MQ fornece esquemas de exemplo. Esses esquemas de exemplo criam uma implantação de rede de agentes e todos os recursos relacionados usando AWS CloudFormation. Os dois esquemas de exemplo disponíveis são:

  1. Rede de malha de agentes de instância única

  2. Rede de malha de agentes ativos/em espera

Implantações de exemplo

Na página Criar agentes, selecione um dos esquemas de exemplo e escolha Próximo. Assim que os recursos forem criados, revise os agentes gerados e suas configurações no console do Amazon MQ.

Ao criar agentes e configurar elementos networkConnector diferentes nas configurações de agente, você pode criar uma rede de agentes em muitas topologias diferentes. Para obter mais informações sobre como configurar uma rede de agentes, consulte Redes de agentes na documentação do ActiveMQ.

Topologias das redes de agentes

Ao implantar agentes e, em seguida, configurar entradas do networkConnector em suas configurações, você pode criar uma rede de agentes usando diferentes topologias de rede. Um conector de rede fornece o encaminhamento de mensagem sob demanda entre os agentes conectados. As conexões podem ser configuradas como duplex, nas quais as mensagens são encaminhadas de duas maneiras entre os agentes, ou não duplex, nas quais o encaminhamento apenas se propaga de um agente para o outro. Por exemplo, se uma conexão duplex entre o Broker1 e o Broker2, as mensagens serão encaminhadas de um para o outro se houver um consumidor.

Conector duplex

Com um conector de rede duplex, as mensagens são encaminhadas de cada agente para o outro. Elas são encaminhadas sob demanda: se houver um consumidor no Broker2 para uma mensagem no Broker1, a mensagem será encaminhada. Da mesma forma, se houver um consumidor no Broker1 para uma mensagem no Broker2, a mensagem será encaminhada.

Para conexões não duplex, as mensagens são encaminhadas apenas de um agente para o outro. Neste exemplo, se houver um consumidor no Broker2 para uma mensagem no Broker1, a mensagem será encaminhada. Mas as mensagens não serão encaminhadas do Broker2 para o Broker1.

Conector unidirecional

Usando os dois conectores de rede duplex e não duplex, é possível criar uma rede de agentes em qualquer número de topologias de rede.

nota

Em cada um dos exemplos de topologia de rede, os elementos do networkConnector fazem referência ao endpoint dos agentes aos quais eles se conectam. Substitua as entradas de endpoint do agente nos atributos uri com os endpoints dos seus agentes. Consulte Listing brokers and viewing broker details.

Topologia de malha

Uma topologia de malha fornece vários agentes que estão conectados uns aos outros. Esse exemplo simples se conecta a três agentes de instância única, mas você pode configurar mais agentes como uma malha.

Topologia de malha

Essa topologia e uma que inclui uma malha de pares de agentes ativos/em espera, podem ser criadas usando esquemas de exemplo no console do Amazon MQ. Você pode criar essas implantações de esquemas de exemplo para ver uma rede de agentes funcionando e analisar como elas são configuradas.

Você pode configurar uma rede de malha de três agentes semelhante a essa adicionando um conector de rede ao Broker1 que faz conexões duplex com o Broker2 e o Broker3 e uma única conexão duplex entre o Broker2 e o Broker3.

Conectores de rede para o 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>

Conectores de rede para o 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>

Ao adicionar os conectores acima às configurações do Broker1 e do Broker2, você pode criar uma malha entre esses três agentes que encaminha a mensagem entre todos os agentes sob demanda. Para obter mais informações, consulte Amazon MQ Broker Configuration Parameters.

Topologia hub e spoke

Em uma topologia hub e spoke, as mensagens são preservadas se houver uma interrupção para qualquer agente em um raio. As mensagens são encaminhadas e apenas o Broker1 central é essencial para a operação da rede.

Topologia hub e spoke

Para configurar a rede hub e spoke de agentes neste exemplo, você pode adicionar um networkConnector para cada um dos agentes nos raios da configuração do Broker1.

<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>

Topologia Concentrator

Nessa topologia de exemplo, os três agentes na parte inferior podem lidar com um grande número de conexões, e essas mensagens são concentradas para o Broker1 e o Broker2. Cada um dos outros agentes tem uma conexão não duplex com os agentes centrais. Para escalar a capacidade dessa topologia, você pode adicionar outros agentes para receberem mensagens e as concentrarem no Broker1 e no Broker2.

Topologia Concentrator

Para configurar essa topologia, cada um dos agentes na parte inferior conteria um conector de rede para cada um dos agentes para os quais estão concentrando as mensagens.

Conectores de rede para o 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>

Conectores de rede para o 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>

Conectores de rede para o 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>

Dentro da região

Para configurar uma rede de agentes que abrange as regiões do AWS, implante os agentes nessas regiões e configure os conectores de rede para os endpoints desses agentes.

Topologia de malha inter-regiões

Para configurar uma rede de agentes, como nesse exemplo, você pode adicionar entradas do networkConnectors para as configurações do Broker1 e do Broker4 que fazem referência a endpoints de nível de conexão desses agentes.

Conectores de rede para o 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>

Conector de rede para o 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>

Conectores de rede para o 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>

Failover dinâmico com conectores de transporte

Além de configurar elementos networkConnector, você pode configurar as opções transportConnector do agente para habilitar o failover dinâmico e para rebalancear as conexões quando os agentes são adicionados ou removidos da rede.

<transportConnectors> <transportConnector name="openwire" updateClusterClients="true" rebalanceClusterClients="true" updateClusterClientsOnRemove="true"/> </transportConnectors>

Nesse exemplo, tanto updateClusterClients como rebalanceClusterClients estão definidos como true. Nesse caso, os clientes receberão uma lista de agentes da rede e solicitarão que eles façam um rebalanceamento se um novo agente ingressar.

Opções disponíveis:

  • updateClusterClients: transmite informações aos clientes sobre alterações na rede de topologia do agente.

  • rebalanceClusterClients: faz com que os clientes realizem um rebalanceamento em todos os agentes quando um agente novo é adicionado a uma rede de agentes.

  • updateClusterClientsOnRemove: atualiza os clientes com informações sobre topologia quando um agente sai de uma rede de agentes.

Quando updateClusterClients é definido como true (verdadeiro), os clientes podem ser configurados para se conectarem a um único agente em uma rede de agentes.

failover:(ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617)

Quando um novo agente é conectado, ele receberá uma lista de URIs de todos os agentes na rede. Se a conexão com o agente falhar, ela poderá trocar de maneira dinâmica para um dos agentes fornecidos no momento da conexão.

Para obter mais informações sobre failover, consulte Opções do lado do agente para failover na documentação do ActiveMQ.