PostgreSQL でスケールアウト構成
を構築しよう

db tech show tech 2013
2013/11/15
SRA OSS, Inc. 日本支社
技術開発部 長田 悠吾
自己紹介
●

長田 悠吾(ながた ゆうご)

●

所属
●

●

SRA OSS, Inc. 日本支社 技術開発部

業務
●

PostgreSQL 関連の技術調査

●

pgpool-II の開発
・・・など

●

SRA OSS...
本日の内容
●

PostgreSQL のスケールアウト構成
「サーバを複数台使って高い性能を得る」
PostgreSQL 標準のレプリケーション機能

+
pgpool-II による負荷分散 & 高可用化

 

実績もあり、構成しやすい組み...
アジェンダ
●
●

●

データベースのスケールアウト構成
PostgreSQL におけるレプリケーション
pgpool-II
●
●

●
●
●
●

負荷分散
高可用化

PostgreSQL と pgpool-II によるシステム構成...
データベースの
スケールアウト構成

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

5
データベースのスケールアウト構成
●

複数のデータベースサーバに処理を分散させる

・・・

サーバの数を
増やすと性能が
スケールする

データの複製/分散
処理/サービス
の分散

Copyright © 2013 SRA OSS, In...
データベースのスケールアウト構成
●

複数のデータベースサーバに処理を分散させる
PostgreSQL

PostgreSQL

PostgreSQL

・・・

サーバの数を
増やすと性能が
スケールする

データベースの複製
(レプリケー...
pgpool-II とは?
●

アプリケーションと PostgreSQL の間に介在し、クラスタリング
機能を提供するミドルウェア

●

オープンソースソフトウェア(BSDライセンス)

●

多彩な機能
●
●
●

●
●
●

コネク...
PostgreSQL における
レプリケーション機能

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

9
PostgreSQL のレプリケーション機能
●

ストリーミングレプリケーション(PostgreSQL 9.0 ~)
●

●

マスタからスレーブにトランザクションログ(WAL)を転送することにより
データの複製を実現
転送とリカバリの遅延...
PostgreSQL のレプリケーション機能
●

1つのマスタから複数のスレーブに複製可能
●

スレーブからさらに別のスレーブへのレプリケーションが可能
–

●

カスケードレプリケーション(PostgreSQL 9.2 ~)

スレーブ...
(参考)pgpool-II によるレプリケーション
●

ネイティブレプリケーションモード
●

PostgreSQL のストリーミングレプリケーション機能を用いない
pgpool-II 自身が持つレプリケーション機能
PostgreSQL
更...
pgpool-II による
負荷分散 & 高可用化

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

13
負荷分散
PostgreSQL はクエリ振り分け機能
を提供してくれない!

更新/参照

更新/参照
pgpool-II
クライアント
●

マスタ

参照
スレーブ
参照

クエリの自動振り分け
●

更新クエリはマスターサーバへ送信

●...
自動フェイルオーバ
PostgreSQL は自動フェイルオーバ
機能を提供してくれない!

障害検出
更新/参照

更新/参照
pgpool-II
クライアント

PostgreSQL ストリーミング
レプリケーション
マスタ

参照
スレーブ...
自動フェイルオーバ
PostgreSQL

PostgreSQL は自動フェイルオーバ
機能を提供してくれない!

ダウン
更新/参照
pgpool-II

更新/参照

クライアント

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

マスタ
参照
スレー...
オンラインリカバリ
PostgreSQL

このノードを復帰させる

ダウン
更新/参照
pgpool-II
クライアント

サービスの運用は止めない

更新/参照

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

マスタ
参照
スレーブ
・
・
・

●...
オンラインリカバリ
参照
更新/参照
pgpool-II
クライアント

サービスの運用は止まらない

PostgreSQL ストリーミング
レプリケーション
スレーブ
リカバリ

更新/参照
マスタ
参照
スレーブ
・
・
・

●

システ...
新しいスレーブの追加
参照
更新/参照
pgpool-II

スレーブ

更新/参照
マスタ

クライアント

参照

サーバの情報を登録

参照

このノードを追加
●

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

スレーブ

...
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(単一障害
点) を回避...
マルチマスタ的構成
●

APサーバと pgpool-II を1台のサーバに同居させた構成
●

●

●

pgpoo-II が冗長化されている
APサーバ/pgpool-II のペアを増やすことで、APサーバの性能を
スケールアウト可能
P...
スケールアウト性能

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

23
スケールアウト性能
●

●

参照性能は本当にスケールアウトするか?
pgpool-II(3.2.1) & PostgreSQL(9.2.1)で、ノード数を増やすと
全体の処理能力が向上するかを確認
●

1~4台の PostgreSQL で...
スケールアウト性能(結果)
※PostgreSQL エンタープライズ・コンソーシアム
 性能ワーキングループ(WG1) 2012 年度成果物より引用

全ノードのtps合計

tps: トランザクション/秒

1ノード毎のtps

ノード数

...
デモ

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

26
デモの内容
●

運用中のシステムに新しいスレーブを追加
●
●

ベンチマーク処理を中断せずに新しいノードが追加可能
負荷分散により、自動的に新しいスレーブに参照クエリが振
り分けられるようになる

参照
更新/参照
pgpool-II

P...
まとめ

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

28
まとめ
●

PostgreSQL 標準のレプリケーション機能
●

●

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

pgpool-II
●
●

クエリの自動振り分け

●

自動フェイルオーバ

●

オンラインリカバリ

●

●

負荷分散

...
参考URL
●

PostgreSQL ドキュメント
●

●

http://www.postgresql.jp/document/9.3/html/

pgpool-II オフィシャルサイト
●

http://www.pgpool.net...
ご清聴ありがとうございました。

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

31
Upcoming SlideShare
Loading in...5
×

[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata

3,751

Published on

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,751
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
50
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata

  1. 1. PostgreSQL でスケールアウト構成 を構築しよう db tech show tech 2013 2013/11/15 SRA OSS, Inc. 日本支社 技術開発部 長田 悠吾
  2. 2. 自己紹介 ● 長田 悠吾(ながた ゆうご) ● 所属 ● ● SRA OSS, Inc. 日本支社 技術開発部 業務 ● PostgreSQL 関連の技術調査 ● pgpool-II の開発 ・・・など ● SRA OSS, Inc. 日本支社 ● PostgreSQL を中心としたOSSのサポート/コンサルティング ● OSS 関連プロダクトの販売 ● 技術者トレーニングサービス Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 2
  3. 3. 本日の内容 ● PostgreSQL のスケールアウト構成 「サーバを複数台使って高い性能を得る」 PostgreSQL 標準のレプリケーション機能 + pgpool-II による負荷分散 & 高可用化   実績もあり、構成しやすい組み合わせ その手法についてご紹介いたします! Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 3
  4. 4. アジェンダ ● ● ● データベースのスケールアウト構成 PostgreSQL におけるレプリケーション pgpool-II ● ● ● ● ● ● 負荷分散 高可用化 PostgreSQL と pgpool-II によるシステム構成 スケールアウト性能 デモ まとめ Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 4
  5. 5. データベースの スケールアウト構成 Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 5
  6. 6. データベースのスケールアウト構成 ● 複数のデータベースサーバに処理を分散させる ・・・ サーバの数を 増やすと性能が スケールする データの複製/分散 処理/サービス の分散 Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 6
  7. 7. データベースのスケールアウト構成 ● 複数のデータベースサーバに処理を分散させる PostgreSQL PostgreSQL PostgreSQL ・・・ サーバの数を 増やすと性能が スケールする データベースの複製 (レプリケーション) 参照クエリの 負荷分散 pgpool-II 今回は PostgreSQL のレプリケーション機能 と pgpool-II の負荷分散機能 による  「参照性能のスケールアウト」 の話 Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 7
  8. 8. pgpool-II とは? ● アプリケーションと PostgreSQL の間に介在し、クラスタリング 機能を提供するミドルウェア ● オープンソースソフトウェア(BSDライセンス) ● 多彩な機能 ● ● ● ● ● ● コネクションプーリング 参照負荷分散 オンメモリクエリキャッシュ 自動フェールオーバー オンラインリカバリ レプリケーション PostgreSQL クライアント Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. pgpool-II PostgreSQL 8
  9. 9. PostgreSQL における レプリケーション機能 Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 9
  10. 10. PostgreSQL のレプリケーション機能 ● ストリーミングレプリケーション(PostgreSQL 9.0 ~) ● ● マスタからスレーブにトランザクションログ(WAL)を転送することにより データの複製を実現 転送とリカバリの遅延のため、マスタとスレーブが常に同じ内容とは限 らない スレーブは参照クエリを受け付ける ことができる (Hot Standby) マスタへは更新・参照 の両方とも可能 クライアント 更新クエリ 参照クエリ 参照クエリ リカバリし続ける WAL転送 マスタ WAL 書き込み Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. スレーブ WAL 書き込み 10
  11. 11. PostgreSQL のレプリケーション機能 ● 1つのマスタから複数のスレーブに複製可能 ● スレーブからさらに別のスレーブへのレプリケーションが可能 – ● カスケードレプリケーション(PostgreSQL 9.2 ~) スレーブは参照クエリを受け付けることができる – これを利用して参照性能のスケールアウト! 参照 スレーブ クライアント スレーブ スレーブ スレーブ 更新/参照 マスタ 複製 複製 スレーブ Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. スレーブ 11
  12. 12. (参考)pgpool-II によるレプリケーション ● ネイティブレプリケーションモード ● PostgreSQL のストリーミングレプリケーション機能を用いない pgpool-II 自身が持つレプリケーション機能 PostgreSQL 更新クエリ 更新クエリ pgpool-II クライアント ● 更新クエリを全てのサーバに送信する – – ● 更新の遅延はない(同期レプリケーション) 更新性能が 50% に落ちる 更新の遅延が問題になる場合以外は、ストリーミングレプリケーションを用 いるのがおすすめ Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 12
  13. 13. pgpool-II による 負荷分散 & 高可用化 Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 13
  14. 14. 負荷分散 PostgreSQL はクエリ振り分け機能 を提供してくれない! 更新/参照 更新/参照 pgpool-II クライアント ● マスタ 参照 スレーブ 参照 クエリの自動振り分け ● 更新クエリはマスターサーバへ送信 ● ● PostgreSQL ストリーミング レプリケーション 参照クエリはサーバ間に振り分ける 負荷分散 スレーブ ・ ・ ・ ● ● ● 参照クエリを配分する負荷の重み付けが可能 スレーブサーバを増やすことにより参照性能をスケールアウトすることが可能 レプリケーション遅延の監視 ● 遅延が閾値を越えたら負荷分散の対象から外すことが可能 Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 14
  15. 15. 自動フェイルオーバ PostgreSQL は自動フェイルオーバ 機能を提供してくれない! 障害検出 更新/参照 更新/参照 pgpool-II クライアント PostgreSQL ストリーミング レプリケーション マスタ 参照 スレーブ 参照 スレーブ ● pgpool-II は PostgreSQL を定期的に監視 ● ダウンしたノードは自動的に切り離される ● ・ ・ ・ ノードがダウンした場合の後処理はシェルスクリプトで記述する – マスタがダウンした場合には、1つのスレーブをマスターに昇格させ、 他のスレーブの「複製元」を新しいマスタに変更する・・・など Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 15
  16. 16. 自動フェイルオーバ PostgreSQL PostgreSQL は自動フェイルオーバ 機能を提供してくれない! ダウン 更新/参照 pgpool-II 更新/参照 クライアント ストリーミング レプリケーション マスタ 参照 スレーブ ● pgpool-II は PostgreSQL を定期的に監視 ● ダウンしたノードは自動的に切り離される ● ・ ・ ・ ノードがダウンした場合の後処理はシェルスクリプトで記述する – マスタがダウンした場合には、1つのスレーブをマスターに昇格させ、 他のスレーブの「複製元」を新しいマスタに変更する・・・など Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 16
  17. 17. オンラインリカバリ PostgreSQL このノードを復帰させる ダウン 更新/参照 pgpool-II クライアント サービスの運用は止めない 更新/参照 ストリーミング レプリケーション マスタ 参照 スレーブ ・ ・ ・ ● システムの運用を止めずにノードを復帰させる機能 ● マスタのベースバックアップを取得し、これを元にリカバリを行う Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 17
  18. 18. オンラインリカバリ 参照 更新/参照 pgpool-II クライアント サービスの運用は止まらない PostgreSQL ストリーミング レプリケーション スレーブ リカバリ 更新/参照 マスタ 参照 スレーブ ・ ・ ・ ● システムの運用を止めずにノードを復帰させる機能 ● マスタのベースバックアップを取得し、これを元にリカバリを行う Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 18
  19. 19. 新しいスレーブの追加 参照 更新/参照 pgpool-II スレーブ 更新/参照 マスタ クライアント 参照 サーバの情報を登録 参照 このノードを追加 ● PostgreSQL ストリーミング レプリケーション スレーブ リカバリ スレーブ 同じ方法で新しいスレーブサーバの追加が可能 ● pgpool-II に追加するサーバの情報(ホスト名、ポート番号など)を登録 ● その後に、オンラインリカバリを行う → 参照性能のスケールアウトが容易に! Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 19
  20. 20. PostgreSQL と pgpool-II システム構成 Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 20
  21. 21. 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
  22. 22. マルチマスタ的構成 ● 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
  23. 23. スケールアウト性能 Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 23
  24. 24. スケールアウト性能 ● ● 参照性能は本当にスケールアウトするか? 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
  25. 25. スケールアウト性能(結果) ※PostgreSQL エンタープライズ・コンソーシアム  性能ワーキングループ(WG1) 2012 年度成果物より引用 全ノードのtps合計 tps: トランザクション/秒 1ノード毎のtps ノード数 ノード数が増えるほど、合計の tps が増える (スケールメリットあり) Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 25
  26. 26. デモ Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 26
  27. 27. デモの内容 ● 運用中のシステムに新しいスレーブを追加 ● ● ベンチマーク処理を中断せずに新しいノードが追加可能 負荷分散により、自動的に新しいスレーブに参照クエリが振 り分けられるようになる 参照 更新/参照 pgpool-II PostgreSQL ストリーミング レプリケーション スレーブ 更新/参照 マスタ クライアント 参照 サーバの情報を登録 このノードを追加 Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 参照 スレーブ リカバリ スレーブ 27
  28. 28. まとめ Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 28
  29. 29. まとめ ● PostgreSQL 標準のレプリケーション機能 ● ● ストリーミングレプリケーション pgpool-II ● ● クエリの自動振り分け ● 自動フェイルオーバ ● オンラインリカバリ ● ● 負荷分散 新規ノードの追加 これらの組み合わせによる、PostgreSQL 参照性能スケールアウト 構成の紹介 ● 参照性能のスケールアウト ● 新規ノード追加のデモ Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 29
  30. 30. 参考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
  31. 31. ご清聴ありがとうございました。 Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 31
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×