[pgpool-general-jp: 1705] Re: watchdogの自動仮想IP切替がうまく動作しない

Bo Peng pengbo @ sraoss.co.jp
2022年 5月 16日 (月) 15:57:47 JST


彭です。

> 3台構成を2台構成に変更し、動作変わるのか検証しました。
> 結果的にはおなじ症状でした。
> 
> ・pg−とpg-b
> ・下記ログそのままですが、pg-a での作業です(最後だけpg-bあり)。
> ・pg-aがLEADERでprimary、手動でPostgreSQLを止める
> ・フェイルオーバーしてpg-bがprimaryに
> ・LEADERはpg-aのまま
> 
> 
> [root @ pg-a ~]# psql -h 192.168.0.100 -p 9999 -U pgpool postgres -c "show pool_nodes"
>  node_id |   hostname   | port | status | pg_status | lb_weight |  role   | pg_role | select_cnt | load_balance_node | replication_delay | replication_state | replication_sync_state | last_status_change
> ---------+--------------+------+--------+-----------+-----------+---------+---------+------------+-------------------+-------------------+-------------------+------------------------+---------------------
>  0       | 192.168.0.92 | 5432 | up     | up        | 0.500000  | primary | primary | 0          | true              | 0                 |                   |                        | 2022-05-14 14:45:44
>  1       | 192.168.0.93 | 5432 | up     | up        | 0.500000  | standby | standby | 0          | false             | 0                 | streaming         | async                  | 2022-05-14 14:45:44
> (2 行)
> 
> [root @ pg-a ~]# pcp_watchdog_info -p 9898 -h 192.168.0.100 -U pgpool
> Password:
> 2 2 YES 192.168.0.92:9999 Linux pg-a 192.168.0.92
> 
> 192.168.0.92:9999 Linux pg-a 192.168.0.92 9999 9000 4 LEADER 0 MEMBER
> 192.168.0.93:9999 Linux pg-b 192.168.0.93 9999 9000 7 STANDBY 0 MEMBER
> 
> [root @ pg-a ~]# ip a
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
>     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
>     inet 127.0.0.1/8 scope host lo
>        valid_lft forever preferred_lft forever
>     inet6 ::1/128 scope host
>        valid_lft forever preferred_lft forever
> 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
>     link/ether 00:15:5d:00:06:00 brd ff:ff:ff:ff:ff:ff
>     inet 192.168.0.92/24 brd 192.168.0.255 scope global noprefixroute eth0
>        valid_lft forever preferred_lft forever
>     inet 192.168.0.100/24 scope global secondary eth0:0
>        valid_lft forever preferred_lft forever
> 3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
>     link/ether 52:54:00:d2:53:49 brd ff:ff:ff:ff:ff:ff
>     inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
>        valid_lft forever preferred_lft forever
> 
> [root @ pg-a ~]# su - postgres
> [postgres @ pg-a ~]$ /usr/pgsql-14/bin/pg_ctl -D /var/lib/pgsql/14/data -m immediate stop
> サーバー停止処理の完了を待っています....完了
> サーバーは停止しました
> [postgres @ pg-a ~]$ exit
> ログアウト
> 
> [root @ pg-a ~]# psql -h 192.168.0.100 -p 9999 -U pgpool postgres -c "show pool_nodes"
>  node_id |   hostname   | port | status | pg_status | lb_weight |  role   | pg_role | select_cnt | load_balance_node | replication_delay | replication_state | replication_sync_state | last_status_change
> ---------+--------------+------+--------+-----------+-----------+---------+---------+------------+-------------------+-------------------+-------------------+------------------------+---------------------
>  0       | 192.168.0.92 | 5432 | down   | down      | 0.500000  | standby | unknown | 0          | false             | 0                 |                   |                        | 2022-05-14 14:52:06
>  1       | 192.168.0.93 | 5432 | up     | up        | 0.500000  | primary | primary | 0          | true              | 0                 |                   |                        | 2022-05-14 14:52:06
> (2 行)

フェイルオーバー後に、Pgpool-II 経由で PostgreSQL に接続できているため、
Pgpool-II の問題ではなく、Zabbix 側の設定の問題だと思われます。

Zabbix にて設定している DB のポートは 9999 になっているかご確認お願いします。

・/etc/zabbix/zabbix_server.conf

  DBPort

・/etc/zabbix/web/zabbix.conf.php

  $DB['PORT']

以上、よろしくお願いします。

> [root @ pg-a ~]# ip a
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
>     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
>     inet 127.0.0.1/8 scope host lo
>        valid_lft forever preferred_lft forever
>     inet6 ::1/128 scope host
>        valid_lft forever preferred_lft forever
> 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
>     link/ether 00:15:5d:00:06:00 brd ff:ff:ff:ff:ff:ff
>     inet 192.168.0.92/24 brd 192.168.0.255 scope global noprefixroute eth0
>        valid_lft forever preferred_lft forever
>     inet 192.168.0.100/24 scope global secondary eth0:0
>        valid_lft forever preferred_lft forever
> 3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
>     link/ether 52:54:00:d2:53:49 brd ff:ff:ff:ff:ff:ff
>     inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
>        valid_lft forever preferred_lft forever
> 
> ★ZabbixのWebが見れなくなる
> 
> [root @ pg-a ~]# systemctl stop pgpool.service
> [root @ pg-a ~]# systemctl start pgpool.service
> [root @ pg-a ~]# pcp_watchdog_info -p 9898 -h 192.168.0.100 -U pgpool
> Password:
> 2 2 YES 192.168.0.93:9999 Linux pg-b 192.168.0.93
> 
> 192.168.0.93:9999 Linux pg-b 192.168.0.93 9999 9000 4 LEADER 0 MEMBER
> 192.168.0.92:9999 Linux pg-a 192.168.0.92 9999 9000 7 STANDBY 0 MEMBER
> 
> ★pg-aのpgpoolをstop、startすることでLEADERがpg-bになり
> 
> [root @ pg-b ~]# ip a
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
>     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
>     inet 127.0.0.1/8 scope host lo
>        valid_lft forever preferred_lft forever
>     inet6 ::1/128 scope host
>        valid_lft forever preferred_lft forever
> 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
>     link/ether 00:15:5d:00:06:01 brd ff:ff:ff:ff:ff:ff
>     inet 192.168.0.93/24 brd 192.168.0.255 scope global noprefixroute eth0
>        valid_lft forever preferred_lft forever
>     inet 192.168.0.100/24 scope global secondary eth0:0
>        valid_lft forever preferred_lft forever
> 3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
>     link/ether 52:54:00:38:93:11 brd ff:ff:ff:ff:ff:ff
>     inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
>        valid_lft forever preferred_lft forever
> 
> ★pg-bのeth0:0にVIPが移動することでZabbixのWebが見れます
> 
> 挙動見ているとフェイルオーバーしてPostgreSQL PrimaryになったマシンのPgpool-IIが
> LEADERに変更になりVIPがそのNICに付け変わらない限りダメなのではという最初の質問に
> なってしまいます。
> 
> 
> 
> 
> 
> 
> ________________________________
> 差出人: pgpool-general-jp <pgpool-general-jp-bounces @ sraoss.jp> が yas see_ <yassee_ @ hotmail.com> の代理で送信
> 送信日時: 2022年5月12日 18:31
> 宛先: pgpool-general-jp @ sraoss.jp <pgpool-general-jp @ sraoss.jp>
> 件名: [pgpool-general-jp: 1703] Re: watchdogの自動仮想IP切替がうまく動作しない
> 
> /etc/zabbix/zabbix_server.conf
> 
>  DBHost=192.168.0.100
> 
> 
> /etc/zabbix/web/zabbix.conf.php
> 
>  $DB['SERVER']  = '192.168.0.100';
> 
> です
> ________________________________
> 差出人: pgpool-general-jp <pgpool-general-jp-bounces @ sraoss.jp> が yas see_ <yassee_ @ hotmail.com> の代理で送信
> 送信日時: 2022年5月12日 18:19
> 宛先: Bo Peng <pengbo @ sraoss.co.jp>; pgpool-general-jp @ sraoss.jp <pgpool-general-jp @ sraoss.jp>
> 件名: [pgpool-general-jp: 1702] Re: watchdogの自動仮想IP切替がうまく動作しない
> 
> 彭さん
> 
> >- psql で 192.168.0.100 に接続できますが、Zabbix Webインターフェースから接続できないのでしょうか。
> 
>   Pgpool-II(リーダー) とPostgreSQL Primary がイコールの場合は VIPの 192.168.0.100 で Zabbxi Web OKです。
>   Pgpool-II(リーダー) とPostgreSQL Primary がイコールでない場合は VIPの 192.168.0.100 で Zabbxi Web NGです。
> 
> >- 上記 show pool_nodes の結果は、フェイルオーバー後、192.168.0.100 に対して実行した結果でしょうか。
> 
>  [root @ pg-b ~]の端末のままでヒストリから実行した結果ですので、同じ端末となります。
> 
> >- Zabbix Web で設定したDBのホストは 192.168.0.100 でしょうか。
>  > (バージョンによってファイルが異なるかもしれませんが、zabbix.conf.php の $DB['SERVER'] に指定した値)
> 
>  zabbix server 6.0.4になります。
> 
> 
> 
> 
> ________________________________
> From: Bo Peng <pengbo @ sraoss.co.jp>
> Sent: Thursday, May 12, 2022 1:20:47 PM
> To: pgpool-general-jp @ sraoss.jp <pgpool-general-jp @ sraoss.jp>
> Cc: yas see_ <yassee_ @ hotmail.com>
> Subject: Re: [pgpool-general-jp: 1700] Re: watchdogの自動仮想IP切替がうまく動作しない
> 
> 彭です。
> 
> > 彭さん、フォローありがとうございます。
> >
> > >Pgpool 複数台構成の場合、クライアントが VIP 経由で Pgpool-II(リーダー)に接続します。
> > >そのため、VIP は PostgreSQL ではなく、Pgpool-IIのリーダーノードに紐づくものとなります。
> > >Pgpool-II リーダーノードが切り替わる際に、VIP の切り替えが自動的に行われます。
> >
> > こちらで発生している状況は以下となります。この動きは正しいのでしょうか。
> > ただしこの状況では自動フェイルオーバー後は VIP(192.168.0.100)ではDBに接続できず
> > zabbxiのWebでは Error connection to database となります。
> >
> >
> > [root @ pg-b ~]# psql -h 192.168.0.100 -p 9999 -U pgpool postgres -c "show pool_nodes"
> >
> >  node_id |   hostname   | port | status | pg_status | lb_weight |  role   | pg_role | select_cnt | load_balance_node | replication_delay | replication_state | replication_sync_state | last_status_change
> > ---------+--------------+------+--------+-----------+-----------+---------+---------+------------+-------------------+-------------------+-------------------+------------------------+---------------------
> >  0       | 192.168.0.92 | 5432 | up     | up        | 0.333333  | standby | standby | 0          | false             | 0                 | streaming         | async                  | 2022-05-11 22:06:51
> >  1       | 192.168.0.93 | 5432 | up     | up        | 0.333333  | primary | primary | 0          | true              | 0                 |                   |                        | 2022-05-11 22:02:44
> >  2       | 192.168.0.94 | 5432 | up     | up        | 0.333333  | standby | standby | 0          | false             | 0                 | streaming         | async                  | 2022-05-11 22:02:44
> > (3 行)
> >
> > [root @ pg-b ~]# pcp_watchdog_info -h 192.168.0.100 -p 9898 -U pgpool
> > Password:
> > 3 3 YES 192.168.0.93:9999 Linux pg-b 192.168.0.93
> >
> > 192.168.0.93:9999 Linux pg-b 192.168.0.93 9999 9000 4 LEADER 0 MEMBER
> > 192.168.0.92:9999 Linux pg-a 192.168.0.92 9999 9000 7 STANDBY 0 MEMBER
> > 192.168.0.94:9999 Linux pg-c 192.168.0.94 9999 9000 7 STANDBY 0 MEMBER
> >
> >  ・上記の状態で VIP から接続OKな状態。pg-bの eth0が 192.168.0.93、eth0:0が 192.168.0.100 です
> >  ・primary (192.168.0.93)のPostgreSQLを手動停止
> >  ・自動フェイルオーバーになり、以下の状態です。
> >
> >  # su - postgres
> >   $ /usr/pgsql-14/bin/pg_ctl -D /var/lib/pgsql/14/data -m immediate stop
> >  node_id |   hostname   | port | status | pg_status | lb_weight |  role   | pg_role | select_cnt | load_balance_node | replication_delay | replication_state | replication_sync_state | last_status_change
> > ---------+--------------+------+--------+-----------+-----------+---------+---------+------------+-------------------+-------------------+-------------------+------------------------+---------------------
> >  0       | 192.168.0.92 | 5432 | up     | up        | 0.333333  | primary | primary | 0          | true              | 0                 |                   |                        | 2022-05-11 22:22:00
> >  1       | 192.168.0.93 | 5432 | down   | down      | 0.333333  | standby | unknown | 0          | false             | 0                 |                   |                        | 2022-05-11 22:22:00
> >  2       | 192.168.0.94 | 5432 | up     | up        | 0.333333  | standby | standby | 0          | false             | 0                 | streaming         | async                  | 2022-05-11 22:22:56
> > (3 行)
> >
> > [root @ pg-b ~]# pcp_watchdog_info -h 192.168.0.100 -p 9898 -U pgpool
> > Password:
> > 3 3 YES 192.168.0.93:9999 Linux pg-b 192.168.0.93
> >
> > 192.168.0.93:9999 Linux pg-b 192.168.0.93 9999 9000 4 LEADER 0 MEMBER
> > 192.168.0.92:9999 Linux pg-a 192.168.0.92 9999 9000 7 STANDBY 0 MEMBER
> > 192.168.0.94:9999 Linux pg-c 192.168.0.94 9999 9000 7 STANDBY 0 MEMBER
> >
> >  ・primary は 192.168.0.92 になった
> >  ・LEADERは 192.168.0.93のまま。pg-bの eth0が 192.168.0.93、eth0:0が 192.168.0.100のまま
> >
> >  ⇒この状態 でzabbxiのWebでは Error connection to database。
> >
> >
> > 何が正しい動作なのか理解不足なのですが、上記状態で 192.168.0.100 へのアクセスで
> > 192.168.0.92 のDBへ接続する動きになるはずが、こちらの環境ではなってないということになりますか。
> 
> 以下について確認させていただきます。
> 
> - psql で 192.168.0.100 に接続できますが、Zabbix Webインターフェースから接続できないのでしょうか。
> - 上記 show pool_nodes の結果は、フェイルオーバー後、192.168.0.100 に対して実行した結果でしょうか。
> - Zabbix Web で設定したDBのホストは 192.168.0.100 でしょうか。
>   (バージョンによってファイルが異なるかもしれませんが、zabbix.conf.php の $DB['SERVER'] に指定した値)
> 
> --
> Bo Peng <pengbo @ sraoss.co.jp>
> SRA OSS, Inc. Japan
> https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.sraoss.co.jp%2F&data=05%7C01%7C%7Cd4b8edfe0b8e42ca91c808da33cecbbe%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637879260528763671%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=j5Mx0g6TRwfuNg4RudAjhyaHBZK2AbsxbBQBp3zVqoQ%3D&reserved=0<https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.sraoss.co.jp%2F&data=05%7C01%7C%7C6044bb4dced54dfbe81408da33fa3aa9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637879447076332189%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=pGJbSM4N9d7jCDsBqjTlEJOnYRRJJv3tqWSyENRvuL8%3D&reserved=0>


-- 
Bo Peng <pengbo @ sraoss.co.jp>
SRA OSS, Inc. Japan
http://www.sraoss.co.jp/


pgpool-general-jp メーリングリストの案内