Я очень новичок в конфигурации сети Linux
Я настроил linux pacemaker + corosync + stonith через ssh + drbd + nginx для 3 узлов.
статус ПК:
3 nodes configured
7 resources configured
Online: [ main-node second-node third-node ]
Full list of resources:
ClusterIP (ocf::heartbeat:IPaddr2): Started main-node
WebSite (ocf::heartbeat:nginx): Started main-node
Master/Slave Set: WebDataClone [WebData]
Masters: [ main-node ]
Slaves: [ second-node third-node ]
WebFS (ocf::heartbeat:Filesystem): Started main-node
ssh-fencing (stonith:ssh): Started third-node
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
Я тестирую стоунит на этих машинах, просто отключая кабель от сети. Он работает нормально, и Stonith убивает отключенную машину, когда она снова включается. Все остальные машины заботятся о кластере.
Проблема возникает, когда я отключаю компьютер, который предпочитает предоставлять ресурс WebSite. Тогда статус ПК на других подключенных машинах выглядит так:
3 nodes configured
7 resources configured
Node main-node: UNCLEAN (offline)
Online: [ second-node third-node ]
Full list of resources:
ClusterIP (ocf::heartbeat:IPaddr2): Started main-node (UNCLEAN)
WebSite (ocf::heartbeat:nginx): Started main-node (UNCLEAN)
Master/Slave Set: WebDataClone [WebData]
WebData (ocf::linbit:drbd): Master main-node (UNCLEAN)
Slaves: [ second-node third-node ]
WebFS (ocf::heartbeat:Filesystem): Started main-node (UNCLEAN)
ssh-fencing (stonith:ssh): Started third-node
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
И сайт не работает. Это почему? Разве другие узлы не должны предоставлять ресурсы?
SSH STONITH не является настоящим ограждением, и его не следует использовать в производственной среде, если вы не согласны с тем, что он может привести к определенным типам сбоев, как вы видите в своем тестировании.
Когда вы отсоединяете сетевой кабель узла, кластер будет пытаться STONITH узел, который исчез из кластера / сети. Агент SSH STONITH использует ту же сеть, которую вы отключили, чтобы попытаться отключить питание отсутствующего узла. Он не сможет этого сделать, пока сеть не будет восстановлена (снова подключена). Поскольку кластер не будет предпринимать никаких действий (переключение при отказе), пока агент STONITH не отключит питание отсутствующего узла, у вас останутся службы UNCLEAN (зависшие).
У вас будет такая же проблема, если вы отключите питание основного узла, поскольку вы не можете подключиться по SSH к системе, когда она не имеет питания.
Короче говоря, это ожидаемое поведение при использовании SSH STONITH, и для восстановления после тестируемого сценария требуются соответствующие устройства ограждения.