Сеть брокеров ActiveMQ, использующих Multicast внутри Kubernetes - PullRequest
0 голосов
/ 14 июля 2020

Я развернул модуль брокеров ActiveMQ с объектом statefulset. Конфигурация activeMQ следующая:

<networkConnectors>
  <networkConnector uri="multicast://default" dynamicOnly="true" networkTTL="3" duplex="true" prefetchSize="1" decreaseNetworkConsumerPriority="false" />
</networkConnectors>
<transportConnectors>
  <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
  <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600&amp;wireFormat.allowNonSaslConnections=true" discoveryUri="multicast://default"/>
</transportConnectors>

Для тестирования всего 2 пода, activemq-0 и activemq-1. Анализ пакетов с помощью Wireshark показывает, что обнаружение многоадресной рассылки работает. Но брокеры не пересылают сообщения между ними. Вот журнал для activemq-0:

    2020-07-14 09:17:32,943 | INFO  | Establishing network connection from vm://localhost to amqp://activemq-1.activemqsvc.default.svc.cluster.local:5672 | org.apache.activemq.network.DiscoveryNetworkConnector | Notifier-MulticastDiscoveryAgent-listener:DiscoveryNetworkConnector:NC:BrokerService[localhost]
2020-07-14 09:18:02,463 | WARN  | Transport Connection to: tcp://172.17.0.7:37174 failed: org.apache.activemq.transport.InactivityIOException: Channel was inactive for too (>30000) long: tcp://172.17.0.7:37174 | org.apache.activemq.broker.TransportConnection.Transport | AmqpInactivityMonitor Async Task: java.util.concurrent.ThreadPoolExecutor$Worker@54f96489[State = -1, empty queue]

1 Ответ

0 голосов
/ 15 июля 2020
• 1000 Другой метод - использовать:
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet

, как предлагается в в этом SO-ответе .

...