Каковы основные различия между этими двумя свойствами?
Разница между ними заключается в том, что последние могут возникать по разным причинам, таким как перезапуск узла, сбой сети и т. Д. Ониоба имеют разные точки запуска.ha-promote-on failure
запускается, когда узел выходит из строя, теряет соединение или удаляется из кластера. ha-promote-on-shutdown
запускается, когда узел корректно отключается.
Когда они применяются?
При сбое в работе главного узла очереди RabbitMQ предоставляет опцию для продвижения узла, содержащего очередь, в качестве главного узла очереди.Способ выполнения этого продвижения настраивается с использованием аргументов ha-promote-on failure
или ha-promote-on-shutdown
.
always
: если для аргумента установлено значение always
, любой изузлы, содержащие очередь, будут выбраны в качестве мастера.С этой опцией существует вероятность того, что очереди могут быть не синхронизированы, и вы можете потерять сообщения.
when-synced
: Когда аргумент установлен на when-synced
, узел являетсякоторый будет синхронен с главным узлом очереди.Здесь вы можете быть уверены, что выбранный узел будет содержать сообщения так же, как и главный узел.Но у этого есть обратная сторона.Если ни одна из очередей не синхронизирована с ведущим, ни один узел не будет выбран.
По умолчанию для ha-promote-on-shutdown
установлено значение when-synced
, а для ha-promote-on-failure
установлено значение * 1034.*.
И как мне настроить его для достижения согласованности по доступности (теорема CAP)?
Для согласованности используйте when-synced
;Для доступности используйте always
Ссылка - https://www.rabbitmq.com/ha.html#promoting-unsynchronised-mirrors