AWS上のPostgreSQL+pgpool-IIで高可用性 / 負荷分散システムを目指す

2014年11月8日（土）＠新潟オープンソースセミナー2014
SRA OSS, Inc. 日本支社
OSS技術グループ
正野裕大

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

1

自己紹介
●

●正野 裕大（マサノ ユウタ）
● SRA OSS, Inc. 日本支社 OSS技術グループ● 主にAmazon Web Services (AWS) 関連のR&D活動に従事
SRA OSS, Inc. 日本支社
● 1999年よりPostgreSQLサポートを中心にOSSビジネスを開始● PostgreSQLなどのOSSサポート● PostgreSQLをベースとしたPowerGresファミリの開発・販売●
トレーニング、導入・設計コンサルティング

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

2

本日お話する内容
Amazon Web Services (AWS) 上でpgpool-IIを使ってPostgreSQLのHA構成組みました
特に難しい話は出てこず、ベーシックな内容と導入事例のご紹介

1. HA構成とは
2. pgpool-IIとは
3. Amazon Web Servicesとは
4. AWS上でのpgpool-II+PostgreSQLの導入事例

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

3

本日お話する内容
Amazon Web Services (AWS) 上でpgpool-IIを使ってPostgreSQLのHA構成組みました
特に難しい話は出てこず、ベーシックな内容と導入事例のご紹介

1. HA構成とは
2. pgpool-IIとは
3. Amazon Web Servicesとは
4. AWS上でのpgpool-II+PostgreSQLの導入事例

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

4高可用性 (High Availability) とはサービスを停止しないで提供し続けられる能力のこと
サービス開始サーバを停止してバックアップ

障害発生

障害検知
対処開始

障害復旧完了の割合 = 稼働率
ミッションクリティカル領域では可能な限りサービスのダウンタイムを短くしたい●障害の発生確率を下げる●

構成要素の信頼性を上げるよりも冗長化●

メンテナンスの停止時間を短くする●

障害検知から復旧するまでの時間を短くする
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

5稼働率目標と実現方法
稼働率を高めたいならHA構成は必須
稼働率

年間停止時間実現方法

99%

3日15時間36分

99.9%

8時間46分

バックアップとリストア + 夜間待機

99.99%

52分34秒

HA構成 + 手動切り替え + 夜間待機

99.999%5分15秒

HA構成 + 自動切り替え９９．９９９９％32秒

バックアップとリストア

特殊なハードウェア

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

6

PostgreSQLのHA構成：稼働率 ~ 99%
予備機とバックアップ・リストアによる運用

リカバリ時にデータ損失の可能性あり
リストアの所要時間に合わせてベースバックアップの頻度は変える

稼働サーバを監視
障害を検知したら担当者に通知

監視サーバ

障害検知〜対応時間に合わせて担当者体制を作成する

DB稼働サーバ

予備機

PostgreSQL

PostgreSQLPITRを使った・ 定期的なベースバックアップの取得
・ 恒常的なWALのアーカイブ

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

7

PostgreSQLのHA構成：稼働率 ~ 99.999%
Streaming ReplicationとHAクラスタリングソフトウェアの組み合わせ●Pacemaker●

pgpool-II

DBクライアントアクセス

リソース管理仮想IP
DB稼働系サーバ

DB待機系サーバ

PostgreSQL

PostgreSQL

HAクラスタソフト

死活監視

HAクラスタソフト

PostgreSQLのStreaming Replication
でデータ同期

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

8

本日お話する内容
Amazon Web Services (AWS) 上でpgpool-IIを使ってPostgreSQLのHA構成組みました
特に難しい話は出てこず、ベーシックな内容と導入事例のご紹介

1. HA構成とは
2. pgpool-IIとは
3. Amazon Web Servicesとは
4. AWS上でのpgpool-II+PostgreSQLの導入事例

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

9

pgpool-IIとはPostgreSQL専用のクラスタ管理ツール
BSDライセンスのオープンソースソフトウェア● pgpool Global development Group が開発[pgpool Wiki]
http://www.pgpool.net/mediawiki/jp/index.php/メインページ

多彩な機能● コネクションプーリング● 参照負荷分散● オンメモリクエリキャッシュ● 自動フェイルオーバー● オンラインリカバリ● レプリケーション● watchdog
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

10

pgpool-IIの特徴
クライアントとPostgreSQLの間で動作して様々な機能を提供
Webサーバにおけるプロキシサーバのようなもの
クライアントとPostgreSQLを透過的に繋いでクエリを中継
既存のシステムになるべくそのまま導入できるように設計されているクライアントからはPostgreSQLに接続しているように見える

pgpool-II

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

Streaming Replication

PostgreSQLクライアント

11

pgpool-IIのコネクションプーリング
クライアントのDB接続オーバーヘッドを抑制する
pgpool-IIはpgpool-II〜PostgreSQL間のDB接続を保持
クライアントがpgpool-IIに接続時に上記の接続を再利用
直接PostgreSQLに接続するよりオーバヘッドが小さくなる

PostgreSQLクライアント

接続

pgpool-II
コネクションを再利用

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

Streaming Replication

接続
切断12

pgpool-IIの参照負荷分散
参照系クエリの振り分け先はクライアントのクエリを自動的に振り分けて負荷を低減
各DBサーバに対する重み付けで相対的に決められる

更新系クエリは稼動系PostgreSQLに
参照系クエリはいずれかのPostgreSQLに

1:

2:

2

更新が重いシステムでは稼動系PostgreSQLに検索を投げずに負荷軽減
PostgreSQLの数だけスケールアウト可能
検索

検索 / 更新

PostgreSQLクライアント

検索

pgpool-II
検索

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

Streaming Replication

更新

13

pgpool-IIの参照負荷分散
新バージョンのpgpool-II 3.4.0が昨日 (2014-11-07 Fri) リリースされました！

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

14

pgpool-IIの参照負荷分散
新バージョンのpgpool-II 3.4.0ではきめ細かい参照負荷分散が可能に
アプリケーション名、DB名によって接続先を指定できる分析用の重い参照系クエリを分析専用PostgreSQLに送信サービスに影響を与えなくする
重い検索

検索

分析アプリ

検索 / 更新

検索

Webアプリ
PostgreSQLクライアント

pgpool-II 3.4.0
重い検索

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

Streaming Replication

更新

15

pgpool-IIの自動フェイルオーバ
障害の発生したPostgreSQLを検知してHA構成から切り離し / 待機系昇格
稼動系ダウン：待機系PostgreSQLが自動的に稼動系に昇格
待機系ダウン：HA構成から切り離し

ヘルスチェックでPostgreSQLを監視
応答なし：切り離し / フェイルオーバ

待機系サーバが昇格する

pgpool-II

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

Streaming Replication

HA構成から切り離す16

pgpool-IIのオンラインリカバリ
稼働系PostgreSQLを利用してダウンした待機系PostgreSQLを作成ダウンした待機系を復旧させる
新しい待機系を作成する
稼動系PostgreSQLを停止させる必要はない

pgpool-II

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

Streaming Replication

参照性能のスケールアウトが簡単にできる

17

pgpool-IIのwatchdog
pgpool-II自体の可用性を高める機能
pgpool-IIが単一障害点
pgpool-IIがダウンしたらサービス停止

pgpool-II

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

Streaming Replication

PostgreSQLクライアント

18

pgpool-IIのwatchdog
pgpool-II自体の可用性を高める機能
pgpool-IIをActive/Standby構成にして単一障害点を回避
クライアントはActive pgpool-IIに仮想IPでアクセスする
pgpool-II （Standby)

仮想IP

PostgreSQLクライアント

Streaming Replication

相互監視 / 情報共有

pgpool-II(Active)
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

19

pgpool-IIのwatchdog
pgpool-II自体の可用性を高める機能
pgpool-IIをActive/Standby構成にして単一障害点を回避
クライアントはActive pgpool-IIに仮想IPでアクセスする
pgpool-II （Standby)

仮想IP

PostgreSQLクライアント

Streaming Replication

相互監視 / 情報共有

pgpool-II(Active)
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

20

本日お話する内容
Amazon Web Services (AWS) 上でpgpool-IIを使ってPostgreSQLのHA構成組みました
特に難しい話は出てこず、ベーシックな内容と導入事例のご紹介

1. HA構成とは
2. pgpool-IIとは
3. Amazon Web Servicesとは
4. AWS上でのpgpool-II+PostgreSQLの導入事例

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

21

クラウドコンピューティングサービスの形態
ネットワーク越しに仮想化されたリソースを提供提供するレイヤ別に3つに分類できる＠
メールサーバ

メールサービス

仮想サーバ
DBサーバ
物理サーバ

仮想サーバ

www
Webサーバブログサービス

IaaS
Infrastructure as aService

PaaS
Platform as a Service

SaaS
Software as a Service

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

22

クラウドコンピューティングサービスの形態
ネットワーク越しに仮想化されたリソースを提供提供するレイヤ別に3つに分類できる＠
メールサーバ

メールサービス

仮想サーバ
DBサーバ
物理サーバ

仮想サーバ

www
Webサーバブログサービス

IaaS
Infrastructure as aService

PaaS
Platform as a Service

SaaS
Software as a Service

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

23

Amazon Web Services (AWS)
オンプレミスの仮想化と比較したAWSのメリット
オンプレミス

AWS

初期コスト

必要不要

利用コスト

余剰リソースにも発生使った分だけインフラ調達

数週間〜数カ月

数分

スケールアップ・ダウン

時間とコストがかかる

すぐに対応可能[オンプレミスと AWS クラウドの違いとは？ | アマゾン ウェブ サービス（AWS 日本語）]
http://aws.amazon.com/jp/comparison-onpremise-aws/

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

24

Amazon Web Services (AWS)[AWS ベーシックトレーニング-トレーニング資料]
http://www.slideshare.net/AmazonWebServicesJapan/aws-basic-20120629
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

25

本日お話する内容
Amazon Web Services (AWS) 上でpgpool-IIを使ってPostgreSQLのHA構成組みました
特に難しい話は出てこず、ベーシックな内容と導入事例のご紹介

1. HA構成とは
2. pgpool-IIとは
3. Amazon Web Servicesとは
4. AWS上でのpgpool-II+PostgreSQLの導入事例

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

26

株式会社Gengo様
翻訳サービスのクラウドソーシング企業●

2009 年： 東京でスタートアップ●2010 年： 76 万ドルの資金調達に成功●

2013 年： 1200 万ドルの資金調達に成功
渋谷にオフィスを移転

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

27

サービス概要●

翻訳して欲しい人と翻訳できる人（11000 人以上が登録）をマッチング●

Web サイト上で ｏｒ API を使って翻訳[クオリティと生産性を両立するには | Gengo ゲンゴ]
http://gengo.com/ja/how-it-works/
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

28翻訳可能な言語（54 ペア）
FromToCopyright © 2014 SRA OSS, Inc. Japan All rights reserved.

29

Gengo様の構成 (Before)●

PostgreSQL 9.1 on Ubuntu 11.10 - 14.10●

Primary * 1 + Standby * 8 の Streaming Replication 構成●

DBサイズは80GBほど

Web Apps

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

Streaming Replication

LB

30

Gengo様の課題 1●「スパイク」なトランザクションで負荷が高まる
30000トランザクション/1日
API経由の大量の翻訳依頼などで急に負荷が高まる

Web Apps

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

Streaming Replication

LB31

Gengo様の課題 1●「スパイク」なトランザクションで負荷が高まる
30000トランザクション/1日
API経由の大量の翻訳依頼などで急に負荷が高まる

Web Apps

Streaming Replication

LB[2014年9月18日 第10回PostgreSQLエンタープライズ・コンソーシアムセミナー Gengo様スライドより]https://www.pgecons.org/2014/08/21/3157/
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

32

Gengo様の課題 2●

ある日稼動系PostgreSQLサーバの仮想イメージが壊れてしまう（原因不明）●

一時的にサービス停止に●

単一障害点の存在が浮き彫りに

Web Apps

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

Streaming Replication

LB

33

Gengo様の課題 2●

ある日稼動系PostgreSQLサーバの仮想イメージが壊れてしまう（原因不明）●

一時的にサービス停止に●

単一障害点の存在が浮き彫りに

Web Apps[2014年9月18日 第10回PostgreSQLエンタープライズ・コンソーシアムセミナー Gengo様スライドより]https://www.pgecons.org/2014/08/21/3157/
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

Streaming Replication

LB34

Gengo様の課題 3●

稼動系サーバがダウンしたら自動フェイルオーバしてほしい●

Web Apps 側の負荷分散以外に何かよい負荷分散方法はないか●

JSON型を使いたいのでPostgreSQLを9.3にアップグレードしたい

Web Apps

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

Streaming Replication

LB35

Gengo様の課題
多量のトランザクションを負荷分散
単一障害点を取り除く
自動フェイルオーバ
PostgreSQLを9.1 -> 9.3にアップグレード●

ダウンタイムは1時間でおねがいします

pgpool-IIの出番
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

36Gengo様の構成 (After)

LBWeb Apps

Streaming Replication

pgpool-II

pgpool-II(warm standby)
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

37

Gengo様の構成 (After)
!
KO!
KO!
OK

多量のトランザクションを負荷分散
単一障害点を取り除く
自動フェイルオーバ

LB
Web Apps

Streaming Replication

pgpool-II

pgpool-II(warm standby)
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

38

Gengo様の構成 (After)

pgpool-II

LB
Web Apps

Streaming Replication

warm standby ?
pgpool-II(warm standby)
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

39

AWS のハマりどころ

AWSでは仮想IPが使えません

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

40

AWS的対策“SELECT 1”でモニタリング

LBWeb Apps

Streaming Replication

pgpool-II

pgpool-II(warm standby)
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

41

AWS的対策“SELECT 1”でモニタリング
AWSのRoute53(DNSサーバ）を使ってアドレス変更

LB
Web AppsAWS

AWSのAPIを実行して名前解決の向きを変える

Streaming Replication

pgpool-II

pgpool-II

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

42

AWS的対策!
KO!
KO!
OK

“SELECT 1”でモニタリング
AWSのRoute53(DNSサーバ）を使ってアドレス変更
多量のトランザクションを負荷分散
単一障害点を取り除く
自動フェイルオーバOK!
pgpool-IIもLB
Web AppsAWS

AWSのAPIを実行して名前解決の向きを変える

Streaming Replication

pgpool-II

pgpool-II

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

43

導入作業について 〜ダウンタイムは1時間でおねがいします〜
サービス稼働中に影響のない作業は済ませておく

pgpool-IIのセットアップ
PostgreSQL 9.3のインストール

LB
Web Apps

Streaming Replication

pgpool-II

pgpool-II(warm standby)
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

44

導入作業について 〜ダウンタイムは1時間でおねがいします〜
サービス停止データベースクラスタのアップデート

pg_upgrade コマンドをハードリンクモードで実行(*)
pgpool-II(*)万が一の切り戻しを考慮して現行のDBは先にバックアップを取っておく

LB
Web Appspgpool-II(warm standby)
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

45

導入作業について 〜ダウンタイムは1時間でおねがいします〜
サービス停止データベースクラスタのアップデート
待機系PostgreSQLの作成

オンラインリカバリで済ます

LBWeb Apps

Streaming Replication

pgpool-II

pgpool-II(warm standby)
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

46

導入作業について 〜ダウンタイムは1時間でおねがいします〜
1時間以内で作業フィニッシュ！

ただし作業は全てスクリプトで自動化
待機系は少なくとも1つ起動してればOKとする

LB
Web Apps

Streaming Replication

pgpool-II

pgpool-II(warm standby)
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

47

導入作業について 〜ダウンタイムは1時間でおねがいします〜
1時間以内で作業フィニッシュ！

ただし作業は全てスクリプトで自動化
待機系は少なくとも1つ起動してればOKとする

LB
Web Apps

Streaming Replication

pgpool-II

pgpool-II[2014年9月18日 第10回PostgreSQLエンタープライズ・コンソーシアムセミナー Gengo様スライドより](warm standby)
https://www.pgecons.org/2014/08/21/3157/
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

48

Gengo様その後
Xenの脆弱性対策に伴う強制インスタンス再起動メンテナンスに巻き込まれる

待機系1台を除きPostgreSQLサーバが再起動
pgpool-IIの自動フェイルオーバでメンテナンスなしで乗り切った

LB
Web Apps

Streaming Replication

pgpool-II

pgpool-II(warm standby)
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

49

その他のTIPS
pgpool-IIのヘルスチェックがタイムアウトしてまう

仮想環境特有のネットワークがプツプツ切れる問題
pgpool-IIはヘルスチェック時にselect()コールを投げている
ソースコードにパッチを当ててタイムアウト値を延長した（将来的にはユーザが指定できるようになる予定）

商用クラスタリングソフトウェアはAWSの仮想IP問題にどう対応している？

NATインスタンスと仮想ネットワークインタフェースとルーティングルールをAWS APIで操作してなんとか仮想IP的な方法を実現
試みにpgpool-IIでも同様の手法を実験してみたら一応動作したが、あまり現実的ではない
Copyright © 2014 SRA OSS, Inc. Japan All rights reserved.

50

まとめ
PostgreSQLの高可用性+負荷分散 on AWS
pgpool-IIで構築できました
ただし

AWSでは仮想IPが使えないので代替手段が必要
死活監視のタイムアウト値は長めにAWSのメンテナンス再起動は不可避なので対策は考えておく

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

51

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

52