Как настроить Postgresql High Availability на двух узлах под управлением Centos 7 - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь настроить высокую доступность базы данных 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

Пожалуйста, помогите мне

...