Вопросы по отказоустойчивости кластера ActiveMQ Artemis - PullRequest
0 голосов
/ 26 февраля 2020

У меня вопрос по поводу Apache кластеризация Artemis с группировкой сообщений. Это также сделано в Kubernetes.

Текущая настройка, которую я имею, состоит из 4 главных узлов и 1 подчиненного узла. Узел 0 выделен как LOCAL для обработки группировки сообщений, а узел 1 является выделенной резервной копией для узла 0. Узлы 2-4 являются удаленными главными узлами без резервных узлов.

Я заметил, что клиенты подключены к узлам 2- 4 не переключается на 3 других мастер-узла, доступных, когда подключенный узел Artemis выходит из строя, по существу не обнаруживая другие узлы. Даже после восстановления исходного узла клиент по-прежнему не может установить sh соединение. Я видел из отдельной статьи о переполнении стека, что отказоустойчивость от мастера к мастеру не поддерживается. Означает ли это, что для каждого главного узла мне нужно также создать подчиненный узел для обработки аварийного переключения? Будет ли это причиной двух экземпляров точки отказа вместо того, чтобы в кластере находилось много узлов?

В отдельном тесте basi c с использованием кластера из двух узлов с одним ведущим и одним ведомым я наблюдал что, когда я отключаю клиенты, к которым подключен главный узел, клиент не переключается на подчиненный узел. Есть идеи почему?

1 Ответ

2 голосов
/ 26 февраля 2020

Как вы отметили в своем вопросе, отработка отказа поддерживается только между оперативной и резервной копией. Следовательно, если вы хотите отработки отказа для клиентов, которые были подключены к узлам 2-4, то эти узлы будут нуждаться в резервных копиях. Более подробно это описано в документации ActiveMQ Artemis .

Стоит отметить, что кластеризация и группировка сообщений, хотя и технически возможны, представляют собой несколько странное соединение. Кластеризация - это способ улучшить общую пропускную способность сообщений с помощью горизонтального масштабирования. Однако группировка сообщений естественным образом сериализует потребление сообщений для каждой группы (для поддержания порядка сообщений), что затем уменьшает общую пропускную способность сообщения (возможно, в значительной степени в зависимости от варианта использования). Один узел ActiveMQ Artemis может обрабатывать миллионы сообщений в секунду. Возможно, вам не нужна повышенная пропускная способность кластера, поскольку вы группируете сообщения.

Я часто видел, как пользователи просто предполагают, что им нужен кластер для работы с ожидаемой нагрузкой без проведения какого-либо теста производительности. Это может привести к более высоким затратам на разработку, тестирование, администрирование и (особенно) аппаратное обеспечение, а в некоторых случаях это может привести к снижению производительности. Убедитесь, что вы тщательно протестировали архитектуру своего приложения и брокера, чтобы подтвердить предложенный дизайн.

...