Назад | Перейти на главную страницу

пейсмейкер linux - предотвращение разделения мозга

с момента использования 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 секунд, когда сеть выходит из строя.