3

环境 :

我在 Cent OS 7.5 上使用 Pacemaker (pacemaker-1.1.19-8.el7_6.1.x86_64) 和 corosync(corosync-2.4.3-2.el7_5.1.x86_64)。Postgresql 版本是 9.3.21 我有两个节点集群,节点名称为:failover1 和 failover2。我有 Postgresql9 的克隆资源。以下是相同的 CIB

pcs resource create Postgresql9 ocf:heartbeat:pgsql \
        pgctl="/usr/pgsql-9.3/bin/pg_ctl" psql="/usr/pgsql-9.3/bin/psql" pgdata="/var/lib/pgsql/9.3/data/" start_opt="-p 5432" rep_mode="async" node_list="failover1 failover2" restore_command="" primary_conninfo_opt="keepalives_idle=60 keepalives_interval=5 keepalives_count=5" master_ip="10.10.17.165" restart_on_promote="true" \
        op monitor interval="20s" role="Slave" timeout="100s" \
        op monitor interval="10s" role="Master" timeout="100s" \
        op start interval="0" timeout="250s" \
        op promote interval="0" timeout="70s" \
        op stop interval="0" timeout="70s" \
        op demote interval="0" timeout="200s" \
        op notify interval="0" timeout="200s" \
        meta failure-timeout="2000s" \
        meta migration-threshold="3"
pcs resource master mspostgres Postgresql9 master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true" migration-threshold="3" target-role="Started"
pcs constraint location mspostgres prefers failover1=90
pcs constraint location mspostgres prefers failover2=80
pcs constraint colocation add DBClusterIP with Master mspostgres score=INFINITY
pcs constraint order stop DBClusterIP  then demote mspostgres  kind=Optional symmetrical=false

pcs property set cluster-recheck-interval=5min
pcs property set stonith-enabled=false
pcs property set no-quorum-policy=ignore
pcs resource defaults migration-threshold=3
pcs property set placement-strategy=balanced
pcs property set stop-all-resources=false
pcs resource defaults failure-timeout=2000
pcs resource defaults resource-stickiness=100
pcs resource op defaults on-fail=restart

问题: 我能够在 failover1 上以 master 身份运行此资源,在 failover2 上以 slave 身份运行此资源。当使用 pcs resource ban 命令在故障转移 2 上移动主机时,我得到了想要的结果。当我重新启动机器failover1时,Failover2成为资源Postgresql9的主人,但是当Failover1机器启动时,这个资源成为两台机器上的奴隶,没有一个被提升。

预期场景: 理想情况下,启动 Failover1 不应影响已运行的资源 Postgresql9 Master。

如果节点重新联机,请帮助我了解集群的行为。

4

1 回答 1

1

事实证明 Postgres 服务是从 systemctl 启用的,因此当服务器启动时 systemctl 启动 Postgres 服务,因此_monitor()资源代理返回$OCF_RUNNING_MASTER并更改Postgres-data-status其他节点上的状态。

于 2019-03-06T08:57:50.027 回答