В настоящее время я изучаю corosync для создания двухузлового кластера. Итак, у меня он работает нормально, и он делает то, что я хочу делать, а именно:
Но этого не происходит:
Это сделано для предотвращения состояния, при котором node10 просто умирает (и, таким образом, не получает IP-адрес Failover Wan 11node), что приводит к ситуации, когда ни один из узлов не имеет IP-адреса аварийного переключения 10node, потому что 10node не работает 11node "вернул" свой резервный Wan IP.
Вот текущая конфигурация, над которой я работаю.
node 10sch \
attributes standby="off"
node 11sch \
attributes standby="off"
primitive LanCluster100 ocf:heartbeat:IPaddr2 \
params ip="172.25.0.100" cidr_netmask="32" nic="eth3" \
op monitor interval="10s" \
meta is-managed="true" target-role="Started"
primitive LanCluster101 ocf:heartbeat:IPaddr2 \
params ip="172.25.0.101" cidr_netmask="32" nic="eth3" \
op monitor interval="10s" \
meta is-managed="true" target-role="Started"
primitive Ping100 ocf:pacemaker:ping \
params host_list="192.0.2.1" multiplier="500" dampen="15s" \
op monitor interval="5s" \
meta target-role="Started"
primitive Ping101 ocf:pacemaker:ping \
params host_list="192.0.2.1" multiplier="500" dampen="15s" \
op monitor interval="5s" \
meta target-role="Started"
primitive WanCluster100 ocf:heartbeat:IPaddr2 \
params ip="192.0.2.100" cidr_netmask="32" nic="eth2" \
op monitor interval="10s" \
meta target-role="Started"
primitive WanCluster101 ocf:heartbeat:IPaddr2 \
params ip="192.0.2.101" cidr_netmask="32" nic="eth2" \
op monitor interval="10s" \
meta target-role="Started"
primitive Website0 ocf:heartbeat:apache \
params configfile="/etc/apache2/apache2.conf" options="-DSSL" \
operations $id="Website-one" \
op start interval="0" timeout="40" \
op stop interval="0" timeout="60" \
op monitor interval="10" timeout="120" start-delay="0" statusurl="http://127.0.0.1/server-status/" \
meta target-role="Started"
primitive Website1 ocf:heartbeat:apache \
params configfile="/etc/apache2/apache2.conf.1" options="-DSSL" \
operations $id="Website-two" \
op start interval="0" timeout="40" \
op stop interval="0" timeout="60" \
op monitor interval="10" timeout="120" start-delay="0" statusurl="http://127.0.0.1/server-status/" \
meta target-role="Started"
group All100 WanCluster100 LanCluster100
group All101 WanCluster101 LanCluster101
location AlwaysPing100WithNode10 Ping100 \
rule $id="AlWaysPing100WithNode10-rule" inf: #uname eq 10sch
location AlwaysPing101WithNode11 Ping101 \
rule $id="AlWaysPing101WithNode11-rule" inf: #uname eq 11sch
location NeverLan100WithNode11 LanCluster100 \
rule $id="RAND1083308" -inf: #uname eq 11sch
location NeverPing100WithNode11 Ping100 \
rule $id="NeverPing100WithNode11-rule" -inf: #uname eq 11sch
location NeverPing101WithNode10 Ping101 \
rule $id="NeverPing101WithNode10-rule" -inf: #uname eq 10sch
location Website0NeedsConnectivity Website0 \
rule $id="Website0NeedsConnectivity-rule" -inf: not_defined pingd or pingd lte 0
location Website1NeedsConnectivity Website1 \
rule $id="Website1NeedsConnectivity-rule" -inf: not_defined pingd or pingd lte 0
colocation Never -inf: LanCluster101 LanCluster100
colocation Never2 -inf: WanCluster100 LanCluster101
colocation NeverBothWebsitesTogether -inf: Website0 Website1
property $id="cib-bootstrap-options" \
dc-version="1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
no-quorum-policy="ignore" \
stonith-enabled="false" \
last-lrm-refresh="1408954702" \
maintenance-mode="false"
rsc_defaults $id="rsc-options" \
resource-stickiness="100" \
migration-threshold="3"
У меня также есть менее важный вопрос по этой строке:
colocation NeverBothLans -inf: LanCluster101 LanCluster100
Как мне сказать, что это словосочетание применимо только к «11node».
Если я правильно понимаю, что вам нужно, вы можете сделать это, установив ограничения местоположения:
pcs constraint location WanCluster101 prefers 11sch=10
pcs constraint location WanCluster101 prefers 10sch=5
В прошлом я установил ограничение для обоих IP-адресов в обоих направлениях. Таким образом, когда один узел выходит из строя, другой берет оба IP-адреса, независимо от того, какой из них выходит из строя, у другого будут оба IP-адреса. Это привело к добавлению ограничений с приоритетами в обратном порядке для каждого IP-адреса (один имеет более высокий приоритет на первом узле и более низкий на втором, а другой имеет более высокий приоритет на втором узле и более низкий на первом).
1: перед тестированием подключения к кластеру вам необходимо настроить устройство stonith, stonith очень важен в кластере для разрешения ситуации с разделением мозга 2: для менее важного вопроса вы можете попробовать использовать ограничения местоположения
начать можно примерно так:
location mycol dummy1 \
rule $id="myrule" -inf: defined dummy2 and #uname eq suse02