Pgpool-II 最新情報

PostgreSQL 最新動向紹介セミナー
2017/9/14
SRA OSS, Inc. 日本支社
長田 悠吾

自己紹介
●

長田悠吾 （ナガタ ユウゴ）

–SRA OSS, Inc. 日本支社

–マーケティング部 PostgreSQL 技術グループ●PostgreSQL の技術サポート・コンサルティング●PostgreSQL 関連の技術調査・研究・開発●

Pgpool-II 開発者

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

2

本日の話題●Pgpool-II の概要– PostgreSQL 専用のサードパーティーソフトウェア– レプリケーション構成の自動フェイルオーバー、参照負荷分散、など●

現在の開発状況と今後の予定– 次期バージョン3.7について

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

3

Pgpool-II とは●●

アプリケーションとPostgreSQLの間に入って、クラスタリング機能を提供するツール
オープンソースソフトウェア（BSDライセンス）
PostgreSQL

年１回のメジャーバージョンアップ
– 現最新バージョンは 3.6.6––

次期バージョン 3.7 が今年秋リリースに向け開発中

クエリ

クエリ

Pgpool-II●

ストリーミングレプリケーションとの組み合わせで使用されることが多い
Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

4

PostgreSQLのストリーミングレプリケーション●

マスタからスレーブにトランザクションログ（WAL）を転送することによりデータの複製を実現

スタンバイは参照クエリを受け付けることができる （Hot Standby）

プライマリは更新・参照の両方のクエリを受け付ける
更新クエリ
参照クエリ

クライアント

参照クエリ

WAL転送
プライマリ

スタンバイ

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

5

ストリーミングレプリケーションの課題
負荷分散はどうすればよい？
更新クエリ、参照クエリの振り分けは？
アプリケーションを書き換えなきゃだめ？

クライアント

更新クエリ
参照クエリ

参照クエリ
参照クエリプライマリ

レプリケーション
プライマリがダウンしたら更新ができなくなる？！
サービスが停止してしまう！？

DBサーバに障害が発生したら？
手動で対応するの？

スタンバイ

スタンバイ

新しいスタンバイの追加は？

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

6

Pgpool-II による解決●●

アプリケーションからは１つのPostgreSQL のように見える

クライアント

クエリ振り分け
更新クエリ
参照クエリ

●

負荷分散

●

自動フェイルオーバ●

・・・

Pgpool-II
更新クエリ
参照クエリ

参照クエリ
参照
クエリ

プライマリ

レプリケーションスタンバイ

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

スタンバイ
7

参照負荷分散●

クエリの自動振り分け
更新クエリはプライマリサーバへ– 参照クエリはサーバ間で振り分け
–

更新・参照
プライマリ
参照

更新・参照

Pgpool-II

レプリケーション

振り分けの重みを指定可能
レプリケーション遅延が大きいサーバにはクエリを振り分けない参照

スタンバイ

スタンバイ

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

8きめ細かな負荷分散（3.4〜）●

アプリケーション名、DB名によって接続先が指定できる

重い検索

更新・参照

分析アプリケーション

プライマリ
参照

更新・参照

Webアプリケーション

レプリケーション

Pgpool-II

スタンバイ
重い検索

スタンバイ
（分析用）
Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

9自動フェイルオーバ●

DBサーバの障害を自動検出（ヘルスチェック機能）–ダウンしたPostgreSQLを切り離す→ 負荷分散の対象から外れる
更新・参照
プライマリ

レプリケーション

参照

更新・参照

Pgpool-II

スタンバイ
障害発生

3.6 からは、接続中のセッションの切断が最小限に抑えられるように
Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

10フェイルオーバ時の挙動（〜3.5）●

ノードがダウンした時、無条件に全てのセッションを切断–ケーブル切断時などのネットワーク障害を考慮し、全ての子プロセスが再起動されるクライアント

切断

切断

切断

切断

再起動
pgpool-II
子プロセス
再起動
pgpool-II
子プロセス
再起動
pgpool-II
子プロセス
再起動
pgpool-II
子プロセス
Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

プライマリ
ダウン

スタンバイ

スタンバイ

11

フェイルオーバ時の挙動（3.6〜）●

セッションの切断を最小限に抑える–

ダウンしたノードを負荷分散先に使用している子プロセスのみ
再起動 （※ その他にも条件あり）

クライアント
pgpool-II
子プロセス

切断

pgpool-II
子プロセス
再起動
pgpool-II
子プロセス

プライマリ
ダウン

スタンバイ

pgpool-II
子プロセス
Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

スタンバイ

12

自動フェイルオーバ●

プライマリサーバに障害が発生した場合–そのままでは更新ができなくなる

障害発生

更新・参照
プライマリレプリケーション

参照

更新・参照

Pgpool-II

参照

スタンバイ

スタンバイ
Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

13自動フェイルオーバ●

プライマリサーバに障害が発生した場合そのままでは更新ができなくなる– 負荷分散からの切り離し– スタンバイをプライマリに自動昇格
–

障害発生

更新・参照

更新・参照

Pgpool-II

フェイルオーバ時に実行する具体的な処理はユーザ定義のスクリプトで記述

参照

プライマリ

レプリケーションスタンバイ

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

14

オンラインリカバリ●ダウンしたスタンバイをプライマリに同期させる●

同期中も更新が可能

同期中

更新・参照

更新・参照

Pgpool-II

参照

プライマリ

レプリケーションスタンバイ
Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

15

オンラインリカバリ●ダウンしたスタンバイをプライマリに同期させる●

同期中も更新可能●同期完了後、自動的に負荷分散
参照対象となるスタンバイ
更新・参照更新・参照

レプリケーション
Pgpool-II

オンラインリカバリ時の具体的な処理はユーザ定義のスクリプトで記述

参照

プライマリ

スタンバイ

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

16

オンラインリカバリ●

新しいスタンバイサーバの追加–

Pgpool-II に新しいサーバの情報を読み込ませてから、オンラインリカバリ– 同期完了後、負荷分散対象に参照

同期中

スタンバイ
更新・参照

更新・参照

レプリケーション
Pgpool-II

参照

プライマリ

スタンバイ
Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

17

オンラインリカバリ●

スタンバイの増設も容易–

参照

検索性能のスケールアウト
参照
スタンバイ
更新・参照

更新・参照

レプリケーション
Pgpool-II

参照

プライマリ

スタンバイ
Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

18

Pgpool-II の単一障害点回避●

もし、Pgpool-II に障害が発生したら？！
–

単一障害点 (Single Point of Failure) ？
参照
プライマリ

障害発生

レプリケーション

更新・参照

更新・参照

Pgpool-II

参照

スタンバイ

スタンバイ
Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

19

Watchdog●

Pgpool-II 組み込みのHA機能–

Pgpool-II を Active/Standby 構成にする–

仮想IPでPgpool-IIにアクセス
Pgpool-II(Active)
更新・参照

更新・参照

プライマリ

レプリケーション

仮想IP
参照
相互監視
参照

Pgpool-II(Standby)

スタンバイ

スタンバイ

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

20

Watchdog●

Active Pgpool-II に障害発生すると・・・–

Standby Pgpool-II が Active に昇格–

仮想IPでの付け替えが行われるPgpool-II(Down)

更新・参照

更新・参照

プライマリ

レプリケーション

参照
相互監視

仮想IP

Pgpool-II(Active)

スタンバイ
参照

スタンバイ

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

21

インメモリクエリキャッシュ●

SELECTクエリの結果をメモリ内にキャッシュする機能
同じクエリが来たときに再利用する– DBへのアクセスが減り、応答速度が向上–

クエリ

Pgpool-II
クエリ

結果

結果

キャッシュの保存/検索

PostgreSQL
memcached

メモリ

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

22

Pgpool-II 機能まとめ●

クラスタ管理機能
参照負荷分散– クエリの自動振り分け– 自動フェイルオーバ– オンラインリカバリ–●

その他の付加機能–

Watchdog （= Pgpool-II 自体の高可用化）–

インメモリキャッシュ

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

23

次期バージョン Pgpool-II 3.7
●

現在開発中
–

●

今年の秋頃にリリース予定

主な新機能
–

ロジカルレプリケーションモード

– ヘルスチェックの改善– watchdogの改善– PostgreSQL 10パーサ対応– Amazon Aurora 対応

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

24ロジカルレプリケーションモードの追加●

PostgreSQL 10 のロジカルレプリケーションに対応–●

テーブル単位の論理レプリケーション

基本的には、ストリーミングレプリケーションモードと同じ
更新クエリはマスターのみに送り、参照クエリは負荷分散– マスターノードは設定で明示的に指定–●–

ALWAYS_MASTER フラグを使用する

レプリケーション遅延のチェックを行わないなどの違いもある

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

25

ヘルスチェックの改善●

従来のヘルスチェック– 全てのPostgreSQL ノードを順番にチェック– パラメータはノード毎には設定できず、全ノードで共通●

新しいヘルスチェック– ノード毎にパラメータの設定が可能に●

タイムアウト時間やチェック間隔時間など– 並列にヘルスチェックを実行●

複数ノードに同時に障害が発生した時にお互いに影響を受けない

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

26

Watchdog の改善●Quorum aware failover–PostgreSQLの障害検出時に、watchdog クラスタ内で協議–過半数の Pgpool-II 間で合意が取れた場合にのみ、そのノードのフェイルオーバを行う→ 誤検知の低減
watchdog1

正常要求数が過半数に達していないので、フェイルオーバは行われない

watchdog2

watchdog3

正常
異常→ フェイルオーバ要求
PostgreSQL

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

27

PostgreSQL 10 SQLパーサの移植●

Pgpool-IIはSQL文を正確に解析するためにSQLパーサを持っている–●

ＳＱＬパーサは、最新のPostgreSQLから移植

新しい構文をサポート–

UPDATE tbl SET (a,b) = ROW (2, 1) WHERE c = 10;–INSERT INTO tbl OVERRIDING SYSTEM VALUE VALUES (10,20) ;–宣言型パーティショニング●––CREATE TABLE … PARTITION BY …

ロジカルレプリケーション●

CREATE PUBLICATION●CREATE SUBSCRIPTIONなど
Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

28

Amazon Aurora 対応●

Amazon Aurora with PostgreSQL Compatibility– AWSが提供する高性能PostgreSQLクラウドサービス

独自のストレージ管理を行い、更新性能が高い●
複数のリードレプリカ●自動フェイルオーバ●●

Pgpool-IIとの併用– クエリの自動振り分け●

更新はマスターノードに、参照はリードレプリカに– コネクションプーリングや、クエリキャッシュ機能も利用可能– 設定サンプルをドキュメントに同梱

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

29

まとめ
●

Pgpool-II の基本機能
参照負荷分散– クエリの自動振り分け– 自動フェイルオーバ– ・・・–●

開発中の新機能–ロジカルレプリケーション、Amazon Aurora、PostgreSQL 10 対応–

ヘルスチェック改善、Watchdog 改善

PostgreSQLを取り巻く新しい変化への適応と信頼性・運用性のさらなる向上
Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

30

参考URL●●●

Pgpool-II オフィシャルサイト
–http://www.pgpool.net/–

http://www.pgpool.net/jp/

SRA OSS, Inc. 日本支社–

セミナー資料、事例情報、技術情報–

http://www.sraoss.co.jp/

PGECons（PostgreSQL エンタープライズコンソーシアム）–

Pgpool-IIの検証資料など–

http://www.pgecons.org/

Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

31

オープンソースとともにURL： http://www.sraoss.co.jp/
E-mail： sales@sraoss.co.jp
Tel： 03-5979-2701
Copyright © 2017 SRA OSS, Inc. Japan All rights reserved.

32