Я пытаюсь использовать ресурсы Pacemaker для HA Postgres-XL с использованием некоторых пользовательских агентов ресурсов (как написано Bitnine https://github.com/bitnine-oss).
Мой процесс заключается в:
1. Создайте примитивный ресурс «data1», который включает функции запуска / остановки / продвижения / понижения.
2. Создайте основной / подчиненный ресурс, который управляет экземплярами примитива.
Здесь я хочу запустить мастер на узле t2 и ведомый на узле t4.
Я пытаюсь управлять местоположением ресурса Master / Slave, используя оценку местоположения, как показано ниже.
@ubuntu:~$ sudo pcs -f data1.xml create resource data1 ocf:bitnine:postgres-xl-data datadir=/var/lib/postgresql/DATA/pgxl/nodes/data1 port=15432 nodename=data1
@ubuntu:~$ sudo pcs -f data1.xml resource master data1-ha data1 master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 target-role="Started" notify="True"
@ubuntu:~$ sudo pcs constraint location data1-ha prefers t2=1000 t4=10
Однако я получаю ошибку ниже. Поскольку мой агент не очень нагляден, я использовал эксперименты, чтобы обнаружить, что он пытается запустить оба узла как Мастер, а не как Мастер / Ведомый.
@ubuntu:~$ sudo pcs status
[sudo] password for michaelscott:
Cluster name: xl-cluster
WARNINGS:
No stonith devices and stonith-enabled is not false
Stack: corosync
Current DC: t4 (version 1.1.18-2b07d5c5a9) - partition with quorum
Last updated: Thu Mar 28 18:19:32 2019
Last change: Thu Mar 28 17:48:48 2019 by root via crm_resource on t1
5 nodes configured
2 resources configured
Online: [ t1 t2 t3 t4 t5 ]
Full list of resources:
Master/Slave Set: data1-ha [data1]
data1 (ocf::bitnine:postgres-xl-data): FAILED Master t4
Masters: [ t2 ]
Stopped: [ t1 t3 t5 ]
Failed Actions:
* data1_monitor_11000 on t4 'master' (8): call=22610, status=complete, exitreason='',
last-rc-change='Thu Mar 28 18:19:32 2019', queued=0ms, exec=107ms
Daemon Status:
corosync: active/disabled
pacemaker: active/disabled
pcsd: active/enabled
Если я изменю 'master-max = 2', я получу следующее:
@ubuntu:~$ sudo pcs status
[sudo] password for michaelscott:
Cluster name: xl-cluster
WARNINGS:
No stonith devices and stonith-enabled is not false
Stack: corosync
Current DC: t4 (version 1.1.18-2b07d5c5a9) - partition with quorum
Last updated: Thu Mar 28 18:19:32 2019
Last change: Thu Mar 28 17:48:48 2019 by root via crm_resource on t1
5 nodes configured
2 resources configured
Online: [ t1 t2 t3 t4 t5 ]
Full list of resources:
Master/Slave Set: data1-ha [data1]
data1 (ocf::bitnine:postgres-xl-data):
Masters: [ t2 t4 ]
Daemon Status:
corosync: active/disabled
pacemaker: active/disabled
pcsd: active/enabled
У меня вопрос: как заставить принудительно запускать мастер-экземпляр на t2 и ведомый на t4? Я потратил пару дней, читая документацию / примеры местоположения / колокейшн в Pacemaker (на что у меня есть предчувствие), но пока не смог заставить что-либо работать.
Спасибо
РЕДАКТИРОВАТЬ:
Сегодня также предприняли попытку ограничить местоположение, чтобы перенести мастер на t2, добавив ограничения в CIB, как показано ниже. Та же ошибка.
<constraints>
<rsc_location id="location-data1-ha-t1--INFINITY" node="t1" rsc="data1-ha" score="-INFINITY"/>
<rsc_location id="location-data1-ha-t3--INFINITY" node="t3" rsc="data1-ha" score="-INFINITY"/>
<rsc_location id="location-data1-ha-t5--INFINITY" node="t5" rsc="data1-ha" score="-INFINITY"/>
<rsc_location id="location-data1-ha" rsc="data1-ha">
<rule id="location-data1-ha-rule" role="master" score="INFINITY">
<expression attribute="#uname" id="location-data1-ha-rule-expr" operation="eq" value="t2"/>
</rule>
</rsc_location>
<rsc_location id="location-data1-ha-1" rsc="data1-ha">
<rule id="location-data1-ha-1-rule" role="slave" score="INFINITY">
<expression attribute="#uname" id="location-data1-ha-1-rule-expr" operation="eq" value="t4"/>
</rule>
</rsc_location>
</constraints>