#high-availability #failover #activemq-artemis #jgroups
#высокая доступность #отказоустойчивость #activemq-artemis #jgroups
Вопрос:
В документации Artemis ActiveMQ указано, что если для политики HA репликации настроена высокая доступность, то можно указать группу действующих серверов, к которым может подключаться резервный сервер. Это делается путем настройки group-name
в главном и подчиненном элементах broker.xml
. Резервный сервер будет подключаться только к действующему серверу, который использует то же имя группы узлов.
Но в общем хранилище нет такой концепции group-name
. Я в замешательстве. Если мне нужно добиться высокой доступности с помощью общего хранилища в JGroups, то как это можно сделать.
Опять же, когда я попытался сделать это с помощью политики HA репликации, обеспечивающей group-name
формирование кластера и отработку отказа, но я получил предупреждение о том, что:
2020-10-02 16:35:21,517 WARN [org.apache.activemq.artemis.core.client] AMQ212034: There are more than one servers on the network broadcasting the same node id. You will see this message exactly once (per node) if a node is restarted, in which case it can be safely ignored. But if it is logged continuously it means you really do have more than one node on the same network active concurrently with the same node id. This could occur if you have a backup node active at the same time as its live node. nodeID=220da24b-049c-11eb-8da6-0050569b585d
2020-10-02 16:35:21,517 WARN [org.apache.activemq.artemis.core.client] AMQ212034: There are more than one servers on the network broadcasting the same node id. You will see this message exactly once (per node) if a node is restarted, in which case it can be safely ignored. But if it is logged continuously it means you really do have more than one node on the same network active concurrently with the same node id. This could occur if you have a backup node active at the same time as its live node. nodeID=220da24b-049c-11eb-8da6-0050569b585d
2020-10-02 16:35:25,350 WARN [org.apache.activemq.artemis.core.server] AMQ224078: The size of duplicate cache detection (<id_cache-size/>) appears to be too large 20,000. It should be no greater than the number of messages that can be squeezed into confirmation window buffer (<confirmation-window-size/>) 32,000.
Ответ №1:
Как указывает название «общее хранилище», оперативный и резервный брокер становятся логической парой, которая может поддерживать высокую доступность и отказоустойчивость, поскольку они используют одно и то же хранилище данных. Поскольку они используют одно и то же хранилище данных, нет необходимости в какой group-name
-либо конфигурации. Такой вариант был бы запутанным, избыточным и, в конечном счете, бесполезным.
Конфигурация JGroups (и в cluster-connection
более общем смысле) существует потому, что двум брокерам необходимо обмениваться информацией друг с другом о своих соответствующих сетевых местоположениях, чтобы живой брокер мог информировать клиентов о том, как подключиться к резервной копии в случае сбоя.
Что касается WARN
сообщения о дублирующихся идентификаторах узлов в сети … вы можете получить это предупреждающее сообщение один, возможно, два раза во время отработки отказа или сбоя, но если вы видите его чаще, чем это, значит, что-то не так. Если вы используете общее хранилище, это указывает на проблему с блокировками в общей файловой системе. Если вы используете репликацию, то это указывает на потенциальную неправильную конфигурацию или, возможно, разделение мозга.
Комментарии:
1. Спасибо за устранение путаницы. Но есть ли какая-либо конфигурация для удаления этого предупреждения WARN AMQ212034: в сети более одного сервера, передающего один и тот же идентификатор узла. Вы увидите это сообщение ровно один раз (для каждого узла), если узел перезапущен, и в этом случае его можно безопасно игнорировать. Но если он регистрируется непрерывно, это означает, что у вас действительно есть более одного активного узла в одной сети одновременно с одним и тем же идентификатором узла. Это может произойти, если у вас есть резервный узел, активный одновременно с его активным узлом. NodeID=26b125af-06d0-11eb-aa07-0050569b585d
2. Получаете ли вы это сообщение при использовании общего хранилища или репликации? Если вы получите его с помощью репликации, разве это не имеет значения, поскольку вы будете использовать shared-store?
3. В обоих случаях с общим хранилищем и репликацией я получаю это предупреждение. Так нормально ли получать такие предупреждения?
4. Я обновил свой ответ, чтобы учесть ваши комментарии. Если мой ответ правильный, пожалуйста, отметьте его как таковой, чтобы помочь другим пользователям, у которых может возникнуть такой же вопрос в будущем. Если это неверно, пожалуйста, поясните, чего не хватает. Спасибо!