У меня кластер на основе кардиостимулятора и коросинхронизации. Узлы кластера расположены в нескольких дата-центрах. А между некоторыми узлами задержка пинга составляет до 450 мс. Иногда эти задержки приводят к разделению мозгов.
Я нашел max_network_delay
вариант для corosync.
В документации говорится:
[Механизм HeartBeating] Эта константа указывает в миллисекундах приблизительную задержку, которая требуется вашей сети для передачи одного пакета с одной машины на другую. Это значение должно быть установлено системными инженерами, и, пожалуйста, не меняйте его, если не уверены, так как это влияет на механизм обнаружения сбоев с использованием тактового сигнала. (по умолчанию: 50 мс)
Также есть предупреждение:
Не рекомендуется изменять это значение без указаний сообщества corosync.
Но я не нашел никакой информации об использовании этой опции.
Может кто-нибудь помочь мне? Стоит ли мне использовать эту опцию или, может быть, есть другие варианты, которые могут мне помочь?
Стоит ли мне использовать эту опцию или, может быть, есть другие варианты, которые могут мне помочь?
Поскольку вопрос помечен как Pacemaker, я предполагаю, что вы используете Corosync для связи с Pacemaker. Если это так, я бы предложил использовать плагин для будки для Pacemaker. Основная цель кабины - управление отказоустойчивым сервисом в географически отделенном кластере кардиостимуляторов. https://github.com/ClusterLabs/booth
Это было бы существенным изменением дизайна, поскольку у вас больше не будет одного кластера, а будет кластер для каждого отдельного местоположения. Кластеры с одним узлом будут работать, но не рекомендуется (вы не можете доверять узлу ограждать себя).
Я получил ответ по почте от сообщества corosync / pacemaker:
А между некоторыми узлами задержка пинга составляет до 450 мс. Иногда эти задержки приводят к разделению мозгов.
Ага, это довольно много. Увеличьте время ожидания токена примерно так:
totem {
...
token: 5000
...
}
поможет
Я нашел параметр max_network_delay для corosync.
Эта опция ничего не делает, пока heartbeat_failures_allowed установлен. Я не знаю, включена ли она у вас, но я бы рекомендовал не включать ее.
С уважением, Хонза