с момента использования CentOS 7 мы перешли с обычной настройки сердцебиения на кардиостимулятор.
В основном у нас есть IP-ресурсы, которые активны на одном узле и переключаются на второй узел, если происходит аварийное переключение. Также выполняем несколько скриптов на случай отказа. Ничего особенного.
Чтобы ресурсы всегда запускались на основном узле, я использую
pcs constraint location Cluster_IP prefers server1=master-server
Я также использую
pcs resource defaults resource-stickiness=INFINITY
для предотвращения возврата ресурсов после отработки отказа.
Это отлично работает для меня, если мастер выходит из строя (например, сбой оборудования).
Поскольку для меня не проблема, если переключение займет некоторое время, я хотел бы реализовать некоторую задержку в случае короткого разделения мозга.
Прежде чем что-либо делать, ведомое устройство должно подождать ~ 2 минуты, прежде чем оно возьмет на себя управление, в случае, если ведущее устройство снова станет доступным в течение этих ~ 2 минут.
Мне было интересно, как лучше всего это сделать?
Вы можете изменить интервал мониторинга ресурса с помощью op monitor interval=Ns
где N
- количество секунд, а затем установите migration-threshold
на ресурсе 2
. Имейте в виду настройку 120s
вы можете увидеть общую задержку в 120–240 с в зависимости от того, когда происходит первоначальный сбой в интервале мониторинга.
Есть и другие предостережения, поскольку счетчик отказов применяется к migration-threshold
не сбрасывается в случае успеха. Для этого вам также необходимо установить failure-timeout
или вмешаться вручную.
С участием op monitor interval=120s
, migration-threshold=2
, failure-timeout=121s
и ваш resource-stickiness
настройте, вам нужно будет протестировать, чтобы убедиться, что он обеспечивает ожидаемую функциональность и поведение счетчиков сбоев при восстановлении исходного мастера. Это может потребовать ручного вмешательства, но я не уверен на 100% в этом
Я никогда не устанавливал таймаут токена в Corosync на значение, превышающее 10 секунд, но вы можете попробовать увеличить / установить token
ценность в вашем corosync.conf
к 120000
(120 секунд в миллисекундах). token
следует определить в totem{}
раздел вашего corosync.conf
; man corosync.conf
для более подробной информации.
Это должно помешать Corosync объявлять узел мертвым на 120 секунд, когда сеть выходит из строя.