OSS×クラウド最新TOPICS 2013年12月13日 21:24
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
Presentation Transcript
PostgreSQL でスケールアウト構成
を構築しよう
db tech show tech 2013
2013/11/15
SRA OSS, Inc. 日本支社
技術開発部 長田 悠吾
自己紹介
●
長田 悠吾(ながた ゆうご)
●
所属
●
●
SRA OSS, Inc. 日本支社 技術開発部
業務
●
PostgreSQL 関連の技術調査
●
pgpool-II の開発
・・・など
●
SRA OSS, Inc. 日本支社
●
PostgreSQL を中心としたOSSのサポート/コンサルティング
●
OSS 関連プロダクトの販売
●
技術者トレーニングサービス
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
2
本日の内容
●
PostgreSQL のスケールアウト構成
「サーバを複数台使って高い性能を得る」
PostgreSQL 標準のレプリケーション機能
+
pgpool-II による負荷分散 & 高可用化
実績もあり、構成しやすい組み合わせ
その手法についてご紹介いたします!
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
3
アジェンダ
●
●
●
データベースのスケールアウト構成
PostgreSQL におけるレプリケーション
pgpool-II
●
●
●
●
●
●
負荷分散
高可用化
PostgreSQL と pgpool-II によるシステム構成
スケールアウト性能
デモ
まとめ
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
4
データベースの
スケールアウト構成
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
5
データベースのスケールアウト構成
●
複数のデータベースサーバに処理を分散させる
・・・
サーバの数を
増やすと性能が
スケールする
データの複製/分散
処理/サービス
の分散
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
6
データベースのスケールアウト構成
●
複数のデータベースサーバに処理を分散させる
PostgreSQL
PostgreSQL
PostgreSQL
・・・
サーバの数を
増やすと性能が
スケールする
データベースの複製
(レプリケーション)
参照クエリの
負荷分散
pgpool-II
今回は
PostgreSQL のレプリケーション機能 と
pgpool-II の負荷分散機能 による
「参照性能のスケールアウト」 の話
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
7
pgpool-II とは?
●
アプリケーションと PostgreSQL の間に介在し、クラスタリング
機能を提供するミドルウェア
●
オープンソースソフトウェア(BSDライセンス)
●
多彩な機能
●
●
●
●
●
●
コネクションプーリング
参照負荷分散
オンメモリクエリキャッシュ
自動フェールオーバー
オンラインリカバリ
レプリケーション
PostgreSQL
クライアント
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
pgpool-II
PostgreSQL
8
PostgreSQL における
レプリケーション機能
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
9
PostgreSQL のレプリケーション機能
●
ストリーミングレプリケーション(PostgreSQL 9.0 ~)
●
●
マスタからスレーブにトランザクションログ(WAL)を転送することにより
データの複製を実現
転送とリカバリの遅延のため、マスタとスレーブが常に同じ内容とは限
らない
スレーブは参照クエリを受け付ける
ことができる (Hot Standby)
マスタへは更新・参照
の両方とも可能
クライアント
更新クエリ
参照クエリ
参照クエリ
リカバリし続ける
WAL転送
マスタ
WAL 書き込み
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
スレーブ
WAL 書き込み
10
PostgreSQL のレプリケーション機能
●
1つのマスタから複数のスレーブに複製可能
●
スレーブからさらに別のスレーブへのレプリケーションが可能
–
●
カスケードレプリケーション(PostgreSQL 9.2 ~)
スレーブは参照クエリを受け付けることができる
–
これを利用して参照性能のスケールアウト!
参照
スレーブ
クライアント
スレーブ
スレーブ
スレーブ
更新/参照
マスタ
複製
複製
スレーブ
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
スレーブ
11
(参考)pgpool-II によるレプリケーション
●
ネイティブレプリケーションモード
●
PostgreSQL のストリーミングレプリケーション機能を用いない
pgpool-II 自身が持つレプリケーション機能
PostgreSQL
更新クエリ
更新クエリ
pgpool-II
クライアント
●
更新クエリを全てのサーバに送信する
–
–
●
更新の遅延はない(同期レプリケーション)
更新性能が 50% に落ちる
更新の遅延が問題になる場合以外は、ストリーミングレプリケーションを用
いるのがおすすめ
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
12
pgpool-II による
負荷分散 & 高可用化
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
13
負荷分散
PostgreSQL はクエリ振り分け機能
を提供してくれない!
更新/参照
更新/参照
pgpool-II
クライアント
●
マスタ
参照
スレーブ
参照
クエリの自動振り分け
●
更新クエリはマスターサーバへ送信
●
●
PostgreSQL ストリーミング
レプリケーション
参照クエリはサーバ間に振り分ける
負荷分散
スレーブ
・
・
・
●
●
●
参照クエリを配分する負荷の重み付けが可能
スレーブサーバを増やすことにより参照性能をスケールアウトすることが可能
レプリケーション遅延の監視
●
遅延が閾値を越えたら負荷分散の対象から外すことが可能
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
14
自動フェイルオーバ
PostgreSQL は自動フェイルオーバ
機能を提供してくれない!
障害検出
更新/参照
更新/参照
pgpool-II
クライアント
PostgreSQL ストリーミング
レプリケーション
マスタ
参照
スレーブ
参照
スレーブ
●
pgpool-II は PostgreSQL を定期的に監視
●
ダウンしたノードは自動的に切り離される
●
・
・
・
ノードがダウンした場合の後処理はシェルスクリプトで記述する
–
マスタがダウンした場合には、1つのスレーブをマスターに昇格させ、
他のスレーブの「複製元」を新しいマスタに変更する・・・など
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
15
自動フェイルオーバ
PostgreSQL
PostgreSQL は自動フェイルオーバ
機能を提供してくれない!
ダウン
更新/参照
pgpool-II
更新/参照
クライアント
ストリーミング
レプリケーション
マスタ
参照
スレーブ
●
pgpool-II は PostgreSQL を定期的に監視
●
ダウンしたノードは自動的に切り離される
●
・
・
・
ノードがダウンした場合の後処理はシェルスクリプトで記述する
–
マスタがダウンした場合には、1つのスレーブをマスターに昇格させ、
他のスレーブの「複製元」を新しいマスタに変更する・・・など
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
16
オンラインリカバリ
PostgreSQL
このノードを復帰させる
ダウン
更新/参照
pgpool-II
クライアント
サービスの運用は止めない
更新/参照
ストリーミング
レプリケーション
マスタ
参照
スレーブ
・
・
・
●
システムの運用を止めずにノードを復帰させる機能
●
マスタのベースバックアップを取得し、これを元にリカバリを行う
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
17
オンラインリカバリ
参照
更新/参照
pgpool-II
クライアント
サービスの運用は止まらない
PostgreSQL ストリーミング
レプリケーション
スレーブ
リカバリ
更新/参照
マスタ
参照
スレーブ
・
・
・
●
システムの運用を止めずにノードを復帰させる機能
●
マスタのベースバックアップを取得し、これを元にリカバリを行う
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
18
新しいスレーブの追加
参照
更新/参照
pgpool-II
スレーブ
更新/参照
マスタ
クライアント
参照
サーバの情報を登録
参照
このノードを追加
●
PostgreSQL ストリーミング
レプリケーション
スレーブ
リカバリ
スレーブ
同じ方法で新しいスレーブサーバの追加が可能
●
pgpool-II に追加するサーバの情報(ホスト名、ポート番号など)を登録
●
その後に、オンラインリカバリを行う
→ 参照性能のスケールアウトが容易に!
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
19
PostgreSQL と pgpool-II
システム構成
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
20
pgpool-II の active/standby 構成
●
Watchdog
●
●
pgpool-II 組み込みの高可用性機能
pgpool-II を Active/Standby 構成にすることで SPoF(単一障害
点) を回避
–
クライアントは Active pgpool-II に仮想IP(VIP)でアクセスする
–
Active pgpool-II がダウンしたら、standby pgpoo-II が VIP を引き継
ぐ
Active
(VIP を保持)
PostgreSQL ストリーミング
レプリケーション
マスタ
pgpool-II
相互監視
スレーブ
クライアント
pgpool-II
Standby
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
スレーブ
・
・
・
21
マルチマスタ的構成
●
APサーバと pgpool-II を1台のサーバに同居させた構成
●
●
●
pgpoo-II が冗長化されている
APサーバ/pgpool-II のペアを増やすことで、APサーバの性能を
スケールアウト可能
PostgreSQL を増やすことでDB参照性能をスケールアウト可能
PostgreSQL
AP
サーバ
AP
サーバ
pgpool-II
AP
サーバ
負荷分散装置
pgpool-II
pgpool-II
マスタ
スレーブ
クライアント
Copyright © 2013 SRA OSS, Inc. Japan All rights
・
・
・
reserved.
スレーブ
・
・
・
22
スケールアウト性能
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
23
スケールアウト性能
●
●
参照性能は本当にスケールアウトするか?
pgpool-II(3.2.1) & PostgreSQL(9.2.1)で、ノード数を増やすと
全体の処理能力が向上するかを確認
●
1~4台の PostgreSQL で検証
●
マルチマスタ的構成と似た構成
●
APサーバに相当する位置に、ベンチマークツール(pgbench)が
配置されている。
※PostgreSQL エンタープライズ・コンソーシアム
性能ワーキングループ(WG1) 2012 年度成果物より引用
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
24
スケールアウト性能(結果)
※PostgreSQL エンタープライズ・コンソーシアム
性能ワーキングループ(WG1) 2012 年度成果物より引用
全ノードのtps合計
tps: トランザクション/秒
1ノード毎のtps
ノード数
ノード数が増えるほど、合計の tps が増える (スケールメリットあり)
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
25
デモ
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
26
デモの内容
●
運用中のシステムに新しいスレーブを追加
●
●
ベンチマーク処理を中断せずに新しいノードが追加可能
負荷分散により、自動的に新しいスレーブに参照クエリが振
り分けられるようになる
参照
更新/参照
pgpool-II
PostgreSQL ストリーミング
レプリケーション
スレーブ
更新/参照
マスタ
クライアント
参照
サーバの情報を登録
このノードを追加
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
参照
スレーブ
リカバリ
スレーブ
27
まとめ
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
28
まとめ
●
PostgreSQL 標準のレプリケーション機能
●
●
ストリーミングレプリケーション
pgpool-II
●
●
クエリの自動振り分け
●
自動フェイルオーバ
●
オンラインリカバリ
●
●
負荷分散
新規ノードの追加
これらの組み合わせによる、PostgreSQL 参照性能スケールアウト
構成の紹介
●
参照性能のスケールアウト
●
新規ノード追加のデモ
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
29
参考URL
●
PostgreSQL ドキュメント
●
●
http://www.postgresql.jp/document/9.3/html/
pgpool-II オフィシャルサイト
●
http://www.pgpool.net/
PostgreSQL エンタープライズコンソーシアム
●
略称:PGECons
●
2012 年度実施報告書に PostgreSQL のスケールアウト検証の結果あり
●
http://www.pgecons.org/
Let's Postgres
●
PostgreSQL 情報のポータルサイト
●
pgpool-II 関連の記事あり
●
http://lets.postgresql.jp/
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
30
ご清聴ありがとうございました。
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
31
2019/12/11(水)13:30~電気ビル共創館3F カンファレンスCにて 【システム運用の効率化と、Zabbixによるクラウド・コンテナや、IoTの監視 ~そしてZabbix最新バージョン4.4の解説と、Zabbix5.0への道~】 と題したセミナーが開催されました。 当日は、寒空のなか掲題にご興味をお持ちの58名もの方々にご来場頂くことができました。ありがとうございます。 ...
OSS×Cloud ACCESS RANKING