PacemakerとCorosyncを使用してフェイルオーバーを自動化します。マスタノードが再起動したときにスタンバイノードがマスタノードとして機能する動作を発見しました。これは良い現象です。ノードがオンラインに戻り、サービスが開始されるとマスターロールが再インポートされます。理想的にはスタンバイモードで起動する必要があります。不足している設定がありますか?
PCリソースの基本O / p:リソース固定性:INFINITY移行しきい値:0
粘着性は無限に設定されています。提案してください。
構成の詳細を追加します。
[root@Node1 ハートビート]# pcs config show –l クラスタ名:Cluster1 Corosync ノード: ノード 1 ノード 2 ペースメーカーノード: ノード 1 ノード 2 リソース: マスター: msPostgresql メタ属性: master-node-max=1clone-max=2notify=truemaster-max=1clone-node-max=1 リソース: pgsql (class=ocf プロバイダ=heartbeattype=pgsql) 属性: master_ip=10.70.10.1 node_list="Node1 Node2" pgctl=/usr/pgsql-9.6/bin/pg_ctl pgdata=/var/lib/pgsql/9.6/data/ Primary_conninfo_opt="keepalives_idle=60 "psql=/usr/pgsql-9.6/bin/psql rep_mode=asynchronous restart_on_promote=true Restore_command="cp /var/lib/pgsql/9.6/data/archivedir/%f %p" メタ属性:failuretimeout=60 処置: ダウングレード間隔=0s on-fail=stopタイムアウト=60s(pgsql-demote-interval-0s) メソッド間隔=0秒タイムアウト=5秒(pgsql-methods-interval-0s) 監視間隔=4秒 on-fail=再起動タイムアウト=60秒(pgsql-monitor-interval-4s) 監視間隔=3秒 on-fail=再起動ロール=マスタータイムアウト=60秒(pgsql-monitor-interval-3s) 通知間隔=0秒タイムアウト=60秒(pgsql-notify-interval-0s) アップグレード間隔=0秒失敗時=再起動タイムアウト=60秒(pgsql-promote-interval-0s) 起動間隔=0秒 on-fail=再起動タイムアウト=60秒(pgsql-start-interval-0s) stop-interval=0s on-fail=block timeout=60s (pgsql-stop-interval-0s) カテゴリー:マスターカテゴリー リソース: vip-master (クラス=ocfプロバイダ=ハートビートタイプ=IPaddr2) 属性: cidr_netmask=24 ip=10.70.10.2 アクション: 監視間隔=10秒 on-fail=再起動タイムアウト=60秒(vip-master-monitor-interval-10s) 開始間隔=0秒 on-fail=再起動タイムアウト=60秒(vip-master-start-interval-0s) 停止間隔=0秒 - 失敗時=ブロックタイムアウト=60秒(vip-master-stop-interval-0s) リソース:vip-rep(クラス= ocfプロバイダ=ハートビートタイプ= IPaddr2) 属性: cidr_netmask=24 ip=10.70.10.1 メタ属性:移行しきい値= 0 アクション: 監視間隔=10秒 on-fail=再起動タイムアウト=60秒(vip-rep-monitor-interval-10s) 開始間隔=0秒 on-fail=停止タイムアウト=60秒(vip-rep-start-interval-0s) stop-interval=0s on-fail=タイムアウト無視=60s(vip-rep-stop-interval-0s) ストーニス機器: フェンシングレベル: 位置制限: 注文制限: msPostgresqlをブーストした後、マスターグループを起動します(スコア:INFINITY)(非対称) msPostgresqlをダウングレードした後、マスターグループを停止します(スコア:0)(非対称) ホスティング制限: msPostgresqlを含むマスターグループ(スコア:INFINITY)(rsc-role:開始)(with-rsc-role:Master) チケット制限: アラーム: 未定義の警告 リソースのデフォルト: 資源の固着性: INFINITY 移行しきい値:0 動作デフォルト: デフォルト値が設定されていません。 クラスター属性: クラスタインフラストラクチャ:corosync クラスタ名:Cluster1 クラスタ再確認間隔:60 DCバージョン:1.1.19-8.el7-c3c624ea3d ウォッチドッグあり: false 仲裁方針なし:無視 起動失敗は致命的です:false stonithを有効にする:false ノード属性: ノード 1: pgsql-data-status=STREAMING|ASYNC ノード2:pgsql-data-status =最新 定足数: オプション:
ありがとうございます!
ベストアンサー1
起動時に起動するようにPostgresqlを設定しました。つまり、マスターノードが再起動すると、すでにPostgresqlを実行していたクラスタに再参加し、クラスタにはPostgresqlマスターインスタンスを1つだけ実行する必要があるため、クラスタはサービスの回復(Postgresqlで停止/開始)を実行する必要があります。クラスタはすべての場所でPostgresqlを停止し、Postgresqlマスターの単一インスタンスを起動および起動できるノード(あなたの元のマスターノード)を選択します。
postgresql
この問題を解決するには、起動時にPacemaker / Corosyncを無効にして有効になっていることを確認してください。
# systemctl disable postgresql-9.6
# systemctl enable pacemaker corosync