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

7,694 views

Published on

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

No Downloads
Views
Total views
7,694
On SlideShare
0
From Embeds
0
Number of Embeds
427
Actions
Shares
0
Downloads
61
Comments
0
Likes
14
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

×