Pgpool-II徹底入門～クラウド時代の クラウド時代の 時代の の Pgpool-II の活用およびおよび新バージョン バージョン 4.2 のご紹介～紹介～クラウド時代の 2020/11/13 JPUG Conference
SRA OSS, Inc. 日本支社
石井 達夫
彭博

本日のアジェンダ●

第1部●

Pgpool-IIとは–●

Pgpool-IIの機能–●

盛り沢山の機能をわかりやすくご紹介り沢山の機能をわかりやすくご紹介沢山の機能をわかりやすくご紹介の機能をわかり沢山の機能をわかりやすくご紹介やすくご紹介～紹介

第2部●

Pgpool-IIのユースケース–

●

●

コンセプト

Aurora、Kubernetes での活用およびPgpool-II 4.2の新バージョン 機能

Q/A2

Copyright(c) 2020 SRA OSS, Inc. Japan

自己紹介
●

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

2018年PGConf.EU開催地ポルトガルにてポルトガルにて

3

Copyright(c) 2020 SRA OSS, Inc. Japan

そもそもな料理ぜクラスタは必要なの？クラスタは必要なの？な料理の？

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

4

Copyright(c) 2020 SRA OSS, Inc. Japan

1台しかいないしかいない
PostgreSQLがダウンしたらダウンしたらしたらシステム全体が全体ががダウンしたら止まってしまう！まってしまう！

1台しかいないの
PostgreSQL
では処理を処理ををさばききれないPgpool-IIのコンセプト
ユーザから見て、なるべく複数から見て、なるべく複数見て、なるべく複数て、な料理るべく複数PostgreSQLによるクラスタを使っていることを意識させたくないっていることを意識させたくないさせたくな料理い✔
シングルPostgreSQL用およびのアプリケーションがな料理る
べく変更なしにな料理しに複数PostgreSQLによるクラスタを使っていることを意識させたくないう環境に移行できるようにしたい環境に移行できるようにしたいに移行できるようにしたいできるよう環境に移行できるようにしたいにしたい✔

5

Copyright(c) 2020 SRA OSS, Inc. Japan

Pgpool-IIの機能
アプリの自動振り分けケーションしたら修正の最小化の最小化
負荷分けたい散
クエリの自動振り分けの自動振り分けり分け分けたいけ

コネクションしたらプーリの自動振り分けンしたらグ

可用性向上

自動フェイルオーバ

Pgpool-II

Watchdog

クエリの自動振り分けキャッシュ

性能向上

検索性能向上6Copyright(c) 2020 SRA OSS, Inc. Japan

Pgpool-IIの構造
ヘルス
チェック

VI
P

プロトコル
処理をSQLパーサ

コネクションしたら管理をクエリの自動振り分け
キャッシュ

クエリの自動振り分け
振り分けり分け分けたいけ
エンしたらジンしたらプロトコル
処理をWatchdog
相互監視7

Copyright(c) 2020 SRA OSS, Inc. Japan

死活監視Pgpool-IIの機能：
クエリの振り分けり沢山の機能をわかりやすくご紹介分けけ
プライマリの自動振り分け

スタンしたらバイ

本日主にに取り上げるのはり分け上げるのは処理をこちら
ストリの自動振り分けーミンしたらグ
レプリの自動振り分けケーションしたらモード
更新クエリをクエリの自動振り分けをプライマリの自動振り分けにのみ投げるげる

メインしたらレプリの自動振り分けカ8

Copyright(c) 2020 SRA OSS, Inc. Japan

ネィティブ
レプリの自動振り分けケーションしたらモード
更新クエリをクエリの自動振り分けを両方に投げるに投げるげるPgpool-IIの機能：クエリの振り分けり沢山の機能をわかりやすくご紹介分けけ●

たぶんPgpool-IIを使っていることを意識させたくないいたい最大の理由がクエリの振り分けの理由がクエリの振り分けがクエリの振り分けり沢山の機能をわかりやすくご紹介分けけ●スタンバイに投げてはいけないクエリをプライマリにのみ投げるに投げてはいけないクエリをプライマリにのみ投げるげてはいけな料理いクエリをプライに投げてはいけないクエリをプライマリにのみ投げるマリにのみ投げる投げてはいけないクエリをプライマリにのみ投げるげる
更なしに新バージョン クエリ– 強いロックいロック– シリアライに投げてはいけないクエリをプライマリにのみ投げるザから見て、なるべく複数ブルトランザから見て、なるべく複数クション– その他–

それ以外のクエリはスタンバイに投げる以外のクエリはスタンバイに投げるのクエリはスタンバイに投げてはいけないクエリをプライマリにのみ投げるに投げてはいけないクエリをプライマリにのみ投げるげる●
クエリ振り分けり沢山の機能をわかりやすくご紹介分けけのメリット●

シングルPostgreSQL用およびのアプリケーションをストリーミングレプリケーション環境に移行できるようにしたいにそのまま移行できるようにしたいできる– スタンバイに投げてはいけないクエリをプライマリにのみ投げるのリソースを有効活用およびできる– プライに投げてはいけないクエリをプライマリにのみ投げるマリサーバの負担を軽減するを軽減するする–

9

Copyright(c) 2020 SRA OSS, Inc. Japanクエリの振り分けり沢山の機能をわかりやすくご紹介分けけの設定●

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

更新クエリをクエリの自動振り分け

参照クエリはクエリの自動振り分けは処理を同じ確率でじ確率で確率ででそれぞれのサーバに送信
10

Copyright(c) 2020 SRA OSS, Inc. Japan

プライマリの自動振り分け

スタンしたらバイクエリの振り分けり沢山の機能をわかりやすくご紹介分けけの設定●

プライに投げてはいけないクエリをプライマリにのみ投げるマリサーバを更なしに新バージョン 処理に専念させ、負荷を下させ、負荷を下げる設定の例
backend_weight0 = 0.0●
backend_weight1 = 1.0●

更新クエリをクエリの自動振り分け

参照クエリはクエリの自動振り分けは処理をスタンしたらバイにのみ送信
11

Copyright(c) 2020 SRA OSS, Inc. Japan

プライマリの自動振り分け

スタンしたらバイ

その他のクエリ振り分けり沢山の機能をわかりやすくご紹介分けけの設定●

statement_level_load_balance●●

database_redirect_preference_list●●

データベース名によってクエリの振り分け先を決定によってクエリの振り分けり沢山の機能をわかりやすくご紹介分けけ先を決定を決定

database_redirect_preference_list●●

クエリの振り分けり沢山の機能をわかりやすくご紹介分けけをセッション単位ではなく、ではな料理く、SQL文単位ではなく、で決定アプリケーション名によってクエリの振り分け先を決定によってクエリの振り分けり沢山の機能をわかりやすくご紹介分けけ先を決定を決定

disable_load_balance_on_write●

明示的なトランザクション内のクエリの振り分けの挙動を制御な料理トランザから見て、なるべく複数クション内のクエリの振り分けの挙動を制御のクエリの振り分けり沢山の機能をわかりやすくご紹介分けけの挙動を制御を制御

12

Copyright(c) 2020 SRA OSS, Inc. Japan

Pgpool-IIの機能：自動を制御フェイに投げてはいけないクエリをプライマリにのみ投げるルオーバ
PostgreSQLサーバがダウンしたら見て、なるべく複数そのサーバを切り離し、り沢山の機能をわかりやすくご紹介離し、し、残りのサーバで処理を継続り沢山の機能をわかりやすくご紹介のサーバで処理を継続●
定期的なトランザクション内のクエリの振り分けの挙動を制御にヘルスチェックプロセスがPostgreSQLサーバと通信ができるかどうかを確認ができるかどう環境に移行できるようにしたいかを確認●通信ができるかどうかを確認ができな料理けれ以外のクエリはスタンバイに投げるば自動的にそのサーバを切り離す自動を制御的なトランザクション内のクエリの振り分けの挙動を制御にそのサーバを切り離し、り沢山の機能をわかりやすくご紹介離し、す●X
13

自動フェイルオーバ

Copyright(c) 2020 SRA OSS, Inc. JapanX

Pgpool-IIの機能：自動を制御フェイに投げてはいけないクエリをプライマリにのみ投げるルオーバ●

プライに投げてはいけないクエリをプライマリにのみ投げるマリサーバがダウンした時は、スタンバイに投げてはいけないクエリをプライマリにのみ投げるサーバを自動を制御昇格して新しいプライマリサーバで処理をして新バージョン しいプライに投げてはいけないクエリをプライマリにのみ投げるマリサーバで処理を続行できるようにしたいする●

昇格して新しいプライマリサーバで処理を処理を行できるようにしたいう環境に移行できるようにしたいスクリプトを指定できるXX
自動フェイルオーバ

14

Copyright(c) 2020 SRA OSS, Inc. Japan

Pgpool-IIの機能: watchdog●

Pgpool-IIがダウンすると、PostgreSQLにアクセスできな料理くな料理ってしまう環境に移行できるようにしたい（単一障害点、単一障害点、SPOF: Single
point of failure)X
15

Copyright(c) 2020 SRA OSS, Inc. Japan

Pgpool-IIの機能: watchdog
複数のPgpool-IIを用および意してお互いに監視し、相手がダウンしたときいに監視し、相手がダウンしたときし、相手な料理がダウンしたときには待機系ののPgpool-IIを昇格して新しいプライマリサーバで処理をして運用およびを継続する●
Pgpool-IIへのアクセスはVIP経由がクエリの振り分けにして、クライに投げてはいけないクエリをプライマリにのみ投げるアント側では同一では同一IPでアクセスし続けら見て、なるべく複数れ以外のクエリはスタンバイに投げるるよう環境に移行できるようにしたいにする
●VI
P

16

X

Copyright(c) 2020 SRA OSS, Inc. Japan

Pgpool-IIの機能: watchdog
Pgpool-IIがお互いに監視し、相手がダウンしたときいに相手な料理がダウンしていると思ってしまう問題ってしまう環境に移行できるようにしたい問題(Split brain problem)の解決●
Pgpool-IIを奇数台用および意することによって、多数決でどれ以外のクエリはスタンバイに投げるが本当ににダウンしているのかを正しく判断できるしく判断できるできる
●

VI
PX

XX

O O
17

Copyright(c) 2020 SRA OSS, Inc. JapanO

Pgpool-IIの機能：
コネクションプーリング
PostgreSQLに限らず、ら見て、なるべく複数ず、DBへの接続が時間がかかるがかかる●
そこで一度接続したDBへのコネクションを取っておき、っておき、条件が合えば再利用するが合えば再利用するえば自動的にそのサーバを切り離す再利用およびする●●

DB名によってクエリの振り分け先を決定、ユーザから見て、なるべく複数名によってクエリの振り分け先を決定が同じであること

DB=db1,user=user1

DB=db1,user=user1
がダウンしたらコネクションしたらキャッシュにあるので再利用！

DB=db1, user=user1
DB=db2, user=user2
DB=db3, user=user3
コネクションしたらキャッシュ18

Copyright(c) 2020 SRA OSS, Inc. Japan

Pgpool-IIの機能：クエリキャッシュ●

検索結果を共有メモリ（またはを共有メモリ（単一障害点、またはmemcached)に保存し、同じクエリ文字し、同じクエリ文字列が送られてきたらが送られてきたらら見て、なるべく複数れ以外のクエリはスタンバイに投げるてきたら見て、なるべく複数2回目以降はキャッシュから結果を返すはキャッシュから見て、なるべく複数結果を共有メモリ（またはを返すす●

SQLパーサを経由がクエリの振り分けせず、DBアクセスも発生しないので超高速しな料理いので超高速キャッシュはテーブルに変更なしにがあったら見て、なるべく複数クリアされ以外のクエリはスタンバイに投げるる●
更なしに新バージョン の多いシステムには向かないには向かないかな料理い(キャッシュヒット率70%以上での利用での利用およびを推奨)●

共有メモリの自動振り分け
19

memcached

Copyright(c) 2020 SRA OSS, Inc. Japanクエリキャッシュヒット率の確認
show pool_cache;-[ RECORD 1 ]---------------+--------num_cache_hits| 891703
num_selects| 99995
cache_hit_ratio| 0.90num_hash_entries| 131072
used_hash_entries| 99992
num_cache_entries| 99992
used_cache_enrties_size| 12482600
free_cache_entries_size| 54626264
fragment_cache_entries_size | 020

Copyright(c) 2020 SRA OSS, Inc. Japan

ここまでのまとめ
Pgpool-IIのコンセプト、構造、基本機能をご紹介～紹介しました●
他にも豊富な機能が盛な料理機能が盛り沢山の機能をわかりやすくご紹介
り沢山の機能をわかりやすくご紹介沢山の機能をわかりやすくご紹介な料理ので、是非ママニュアルやブログ記事をご紹介～覧くださいください●
では第2部にバトンタッチします。彭さんよろしく彭さんよろしくお願いしますいします●

21Copyright(c) 2020 SRA OSS, Inc. Japan