「PostgreSQLでスケールアウト構成を構築しよう」db tech show tech 2013講演資料公開

「PostgreSQLでスケールアウト構成を構築しよう」db tech show tech 2013講演資料公開

OSS×クラウド最新TOPICS 2013年12月13日 21:24

「PostgreSQLでスケールアウト構成を構築しよう」db tech show tech 2013講演資料公開

[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

OSSNEWSに広告を掲載しませんか?

最新TOPICS

【講演資料を公開】12/11【システム運用の効率化と、Zabbixによるクラウド・コンテナや、IoTの監視 ~そしてZabbix最新バージョン4.4の解説と、Zabbix5.0への道】(01月10日 09:15)

2019/12/11(水)13:30~電気ビル共創館3F カンファレンスCにて 【システム運用の効率化と、Zabbixによるクラウド・コンテナや、IoTの監視 ~そしてZabbix最新バージョン4.4の解説と、Zabbix5.0への道~】 と題したセミナーが開催されました。 当日は、寒空のなか掲題にご興味をお持ちの58名もの方々にご来場頂くことができました。ありがとうございます。 ...

関連オープンソース

  • PostgreSQLサイド(PostgreSQL)@SRAOSS
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter