Pgpool-IIの軌跡、Pgpool-IIが創り出す未来

2021/12/15
SRA OSS, Inc. 日本支社
石井 達夫

自己紹介
●石井達夫
SRA OSS, Inc.日本支社で経営者兼OSS開発者をしています●Pgpool-IIの開発者、PostgreSQLコミッタ●
趣味は音楽鑑賞、SF、下手な料理●

2

2019年PGCon開催地カナダにてCopyright(c) 2021 SRA OSS, Inc. Japan

Pgpool-IIの生い立ち

3

Copyright(c) 2021 SRA OSS, Inc. Japan

Pgpool-IIの誕生
2003年PostgreSQL用のコネクションプーリングソフトとして公開●
フェイルオーバー機能も同時に実装●
バックアップ用のPostgreSQLサーバの指定も可能●
現在のRawモードに相当する●

4

Copyright(c) 2021 SRA OSS, Inc. Japan

その後のPgpool-IIの進化
2004年、現在の「ネィティブレプリケーションモード」に相当する機能を実装●
2006年、SQLパーサ搭載、PostgreSQLサーバ台数制
限を緩和●
2010年、ストリーミングレプリケーションへの対応●
2012年、Watchdogの実装●
2017年、AWS Aurora対応●

5Copyright(c) 2021 SRA OSS, Inc. Japan

その後のPgpool-IIの進化
2018年、SCRAM認証、証明書認証対応●
2019年、文レベルの負荷分散●
2020年、LDAP認証、ログ収集プロセス●
2021年、Pgpool-II 4.3リリース●●

詳細はこの後のセッションで！

6Copyright(c) 2021 SRA OSS, Inc. Japan

Pgpool-IIの機能早わかり

7

Copyright(c) 2021 SRA OSS, Inc. Japan

Pgpool-IIはユーザの課題の解決を目指す

X
複数の
PostgreSQL
を目的によって使い分けたい8

Copyright(c) 2021 SRA OSS, Inc. Japan

1台しかいない
PostgreSQL
がダウンしたらシステム全体が止まってしまう！
1台のPostgreSQL
では処理をさばききれないPgpool-IIのコンセプト●

データベースが複数PostgreSQLから構成されていることをなるべくアプリケーションが意識しないで済むようにする

9Copyright(c) 2021 SRA OSS, Inc. Japan

Pgpool-IIの機能の全体像
アプリケーション修正の最小化
負荷分散

可用性
向上

クエリの自動振り分け

コネクションプーリング

自動フェイルオーバ

Pgpool-II

Watchdog

クエリキャッシュ

検索性能向上性能向上

10

単一障害点排除Copyright(c) 2021 SRA OSS, Inc. Japanクエリの自動振り分け
プライマリ

スタンバイ

11

Copyright(c) 2021 SRA OSS, Inc. Japan

ストリーミング
レプリケーションモード
更新クエリをプライマリにのみ投げる

検索クエリの負荷分散●

負荷分散の重み付けが設定可能
backend_weight0 = 0.5●
backend_weight1 = 0.5
●

プライマリ

更新クエリ

参照クエリは同じ確率でそれぞれのサーバに送信
12

Copyright(c) 2021 SRA OSS, Inc. Japan

スタンバイ

その他のクエリ振り分けの設定●

クエリの振り分けをセッション単位ではなく、SQL文単位で決定●●

データベース名によってクエリの振り分け先を決定●●

database_redirect_preference_list

アプリケーション名によってクエリの振り分け先を決定●●

statement_level_load_balance

database_redirect_preference_list

トランザクション内のクエリの振り分けの挙動を制御●

disable_load_balance_on_write
13

Copyright(c) 2021 SRA OSS, Inc. Japan自動フェイルオーバ(1)●PostgreSQLサーバがダウンしたらそのサーバを切り離し、残りのサーバで処理を継続
定期的にヘルスチェックプロセスがPostgreSQLサーバと通信ができるかどうかを確認●
通信ができなければ自動的にそのサーバを切り離す●

X14

自動フェイルオーバ

Copyright(c) 2021 SRA OSS, Inc. JapanX

自動フェイルオーバ(2)●プライマリサーバがダウンした時は、スタンバイサーバを自動昇格して新しいプライマリサーバで処理を続行する●

昇格処理を行うカスタムスクリプトを指定できる

X

X
自動フェイルオーバ

15

Copyright(c) 2021 SRA OSS, Inc. Japan単一障害点排除●

Pgpool-IIがダウンすると、PostgreSQLにアクセスできなくなってしまう（単一障害点、SPOF: Single point of failure)X
16

Copyright(c) 2021 SRA OSS, Inc. Japan単一障害点排除
複数のPgpool-IIを用意してお互いに監視し、リーダーがダウンしたときには待機系のPgpool-IIを昇格して運用を継続する（リーダーがVIPを保持)●
Pgpool-IIへのアクセスはVIP経由にして、クライアント側では同一IPでアクセスし続けられるようにする
●VIP

17

X

Copyright(c) 2021 SRA OSS, Inc. Japan

Split brainの回避
VI
P

X

複数のPgpool-IIが自分をリーダーだと思ってしまう状態(split brain)を多数決で回避（クォーラム）

18

O O

Copyright(c) 2021 SRA OSS, Inc. JapanX

ネットワークの分割状態
発生！

Oコネクションプーリング
一度接続したDBへのコネクションを取っておき、条件が合えば再利用する●
DBへの接続時間を節約 DB=db1,●

user=user1がコネクションキャッシュにあるので再利用！
DB=db1,user=user1
DB=db1, user=user1
DB=db2, user=user2
DB=db3, user=user3
19

Copyright(c) 2021 SRA OSS, Inc. Japanクエリキャッシュ
●検索結果を共有メモリ（またはmemcached)に保存し、同じクエリ文字列が送られてきたら2回目以降はキャッシュから結果を返す●

SQLパーサを経由せず、DBアクセスも発生しないので超高速キャッシュはテーブルに変更があったらクリアされる●
更新の多いシステムには向かない(キャッシュヒット率70%以上での利用を推奨)●

共有メモリ
20memcached

Copyright(c) 2021 SRA OSS, Inc. Japanクラウド対応●

Kubernetes、AWS Aurora、RDSなどへの対応の強化
クラウドとの機能分担●
クラウド監視ツールへのデータ提供●

クエリの自動振り分け

コネクションプーリング

k8s
Aurora, RDSでは不要
自動フェイルオーバ

Pgpool-II
クエリキャッシュ
21

Copyright(c) 2021 SRA OSS, Inc. Japan

Watchdog

k8sでは不要KubernetesでのPgpool-II利用例

22

Copyright(c) 2021 SRA OSS, Inc. Japanクラウド用Pgpool-IIモジュール●

Pgpool-II on Kubernetes●●

https://github.com/pgpool/pgpool2_on_k8s

Pgpool-II exporter●

https://github.com/pgpool/pgpool2_exporter

23

Copyright(c) 2021 SRA OSS, Inc. Japan

Pgpool-IIの今後

24

Copyright(c) 2021 SRA OSS, Inc. Japan

リリースポリシー●

メジャーリリースを年に1回●●マイナーリリースを少なくとも年に4回●●

必要に応じて追加マイナーリリースを行うこともあり5メジャーバージョンの保守を維持●●

新しい機能の追加、機能変更

今なら4.3, 4.2, 4.1, 4.0, 3.7が保守対象対応するPostgreSQL●

7.4以降であれば使えるはず（一部の機能はサポートされません）
25

Copyright(c) 2021 SRA OSS, Inc. Japan次期メジャーバージョンで計画中の機能●

超大量同時接続への対応●●

新しい認証方式への対応●●

動的なプロセス起動
GSSAPI対応

より使いやすく●レプリケーション遅延の単位をバイトから時間へ

26

Copyright(c) 2021 SRA OSS, Inc. Japan将来の計画27

Copyright(c) 2021 SRA OSS, Inc. Japan

より使いやすく管理ツール(PCPコマンド)の見直し●
より豊富な統計情報の提供●

28

Copyright(c) 2021 SRA OSS, Inc. Japan

テストの充実
クラスタ管理は複雑な仕組み●
不具合が発生したときの影響が大きい●
テストを支援する仕組みを作り込んでいく●●

障害を人工的に発生させる仕組みなど

29

Copyright(c) 2021 SRA OSS, Inc. Japan

皆さんの声をおよせください
Pgpool-IIはたくさんのユーザの皆様からの声で成長してきました●
新しいアイデアや、「こんなことで困っている」など、のご意見をお待ちしています●
https://www.pgpool.net●

30

Copyright(c) 2021 SRA OSS, Inc. Japan

31

Copyright(c) 2021 SRA OSS, Inc. Japan