Я пытаюсь настроить высокую доступность базы данных Postgresql для одновременного запуска на двух узлах, где в случае сбоя главного узла происходит автоматическое переключение при сбое на подчиненный узел и становится новым мастером, где могут выполняться операции чтения и записи.
Я использую Pacemaker с Corosync, Postgresql 9,6
Это для двух серверов, на которых работает Postgresql, на обоих, работающих под Centos7. Один сервер / узел в качестве главного (mfsdbtest2; ip-10.22.28.202), а другой в качестве подчиненного (mfsdbtest1; ip-10.22.28.200). Во время предыдущего теста я вручную назначил подчиненное устройство ведущему (используя повышение pg_ctl) во время тестирования отработки отказа, и мне не удалось вернуться к главному устройству (mfsdbtest2: с правами на чтение / запись) и подчиненному устройству (mfsdbtest1: имеющее чтение- только привилегии).
Я настроил следующие ресурсы;
1.) Ресурс v_ip, на котором размещен плавающий / виртуальный IP-адрес в 10.22.28.201.
2.) Ресурс WebServer, который запускает базовую HTML-страницу, которая показывает текущий активный узел
-Два указанных выше ресурса работают нормально даже после аварийного переключения.
3.) Главный / подчиненный набор: msPostgresql [pgsql]
-Показывает два узла, настроенные как ведущий / ведомый в ресурсах cib (pgsql_cfg)
4.) Ресурсная группа: мастер-группа
-Группа, содержащая vip-master и vip-rep
NB. Теперь вся настройка PostgreSQL HA - это то, что не работает.
Репликация между двумя базами данных работает хорошо.
Для моей настройки я перешел по ссылке ниже:
https://wiki.clusterlabs.org/wiki/PgSQL_Replicated_Cluster
Ниже приведены конфигурации для ресурсов pgsql, настроенных для кластера:
1. Nodes: 10.22.28.202 - Master Node: mfsdbtest2
10.22.28.200 - Slave Node: mfsdbtest1
2. IP Configs: 10.22.28.201 - Floating IP (v_ip)
10.22.28.203 - Replication IP
10.22.28.205 - Floating IP (Assigned to Slave Node)
pcs cluster cib pgsql_cfg
pcs -f pgsql_cfg property set no-quorum-policy="ignore"
pcs -f pgsql_cfg property set stonith-enabled="false"
pcs -f pgsql_cfg resource defaults resource-stickiness="INFINITY"
pcs -f pgsql_cfg resource defaults migration-threshold="1"
-----The vip-master resource controls the pgsql-vip IP address. It is started on the node hosting the PostgreSQL master resource-----
pcs -f pgsql_cfg resource create vip-master IPaddr2 ip="10.22.28.201" nic="ens192" cidr_netmask="24" op start timeout="60s" interval="0s" on-fail="restart" op monitor timeout="60s" interval="10s" on-fail="restart" op stop timeout="60s" interval="0s" on-fail="block"
-----The vip-rep resource controls the pgsql-vip IP address. It is started on the node hosting the PostgreSQL master resource-----
pcs -f pgsql_cfg resource create vip-rep IPaddr2 ip="10.22.28.203" nic="ens192" cidr_netmask="24" meta migration-threshold="0" op start timeout="60s" interval="0s" on-fail="stop" op monitor timeout="60s" interval="10s" on-fail="restart" op stop timeout="60s" interval="0s" on-fail="ignore"
pcs -f pgsql_cfg resource create pgsql ocf:heartbeat:pgsql pgctl="/usr/pgsql-9.6/bin/pg_ctl" psql="/usr/pgsql-9.6/bin/psql" pgdata="/var/lib/pgsql/9.6/data" rep_mode="sync" node_list="mfsdbtest1
mfsdbtest2" restore_command="cp /archive/db_archive/\%f \%p" master_ip="10.22.28.203" primary_conninfo_opt="keepalives_idle=60 keepalives_interval=5 keepalives_count=5" restart_on_promote='true' op start timeout="60s" interval="0s" on-fail="restart" op monitor timeout="60s" interval="10s" on-fail="restart" op monitor timeout="60s" interval="9s" on-fail="restart" role="Master" op promote timeout="60s" interval="0s" on-fail="restart" op demote timeout="60s" interval="0s" on-fail="stop" op stop timeout="60s" interval="0s" on-fail="block" op notify timeout="60s" interval="0s"
pcs -f pgsql_cfg resource master msPostgresql pgsql master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
pcs -f pgsql_cfg resource group add master-group vip-master vip-rep
pcs -f pgsql_cfg constraint colocation add master-group with Master msPostgresql INFINITY
pcs -f pgsql_cfg constraint order promote msPostgresql then start master-group symmetrical=false score=INFINITY
pcs -f pgsql_cfg constraint order demote msPostgresql then stop master-group symmetrical=false score=0
pcs cluster cib-push pgsql_cfg
Ниже приведен мой результат, когда я запускаю шт. Статус:
Cluster name: mycluster
WARNINGS:
Corosync and pacemaker node names do not match (IPs used in setup?)
Stack: corosync
Current DC: mfsdbtest2 (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition with
Last updated: Thu Jul 11 09:38:29 2019
Last change: Thu Jul 11 09:25:28 2019 by root via cibadmin on mfsdbtest1
2 nodes configured
6 resources configured
Online: [ mfsdbtest1 mfsdbtest2 ]
Full list of resources:
v_ip (ocf::heartbeat:IPaddr2): Started mfsdbtest1
WebServer (ocf::heartbeat:apache): Started mfsdbtest1
Master/Slave Set: msPostgresql [pgsql]
Masters: [ mfsdbtest2 ]
Slaves: [ mfsdbtest1 ]
Resource Group: master-group
vip-master (ocf::heartbeat:IPaddr2): Stopped
vip-rep (ocf::heartbeat:IPaddr2): Stopped
Failed Actions:
* vip-master_start_0 on mfsdbtest2 'not configured' (6): call=31, status=comp
last-rc-change='Thu Jul 11 09:33:18 2019', queued=1ms, exec=113ms
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
Пожалуйста, помогите мне