More Related Content
PDF
Linux-HA Japanプロジェクトのこれまでとこれから PDF
PDF
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化 PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料) PDF
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料) PDF
試して覚えるPacemaker入門 『リソース設定編』 PDF
What's hot
PDF
第4回Linux-HA勉強会資料 Pacemakerの紹介 PDF
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer... PDF
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料) PPTX
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ... PPTX
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料) PDF
PDF
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料) PDF
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料) PPTX
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発... PDF
PDF
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料) PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F... PDF
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み) PDF
PPTX
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス... PPTX
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料) PDF
PDF
PDF
PPTX
OVN 設定サンプル | OVN config example 2015/12/27 Similar to HAクラスタで PostgreSQLレプリケーション構成の 高可用化
PDF
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料) PPTX
祝!PostgreSQLレプリケーション10周年!徹底紹介!! PDF
アーキテクチャから理解するPostgreSQLのレプリケーション PDF
PDF
PostgreSQLレプリケーション(pgcon17j_t4) PDF
論理レプリケーション用スロットのフェールオーバ機能 (第48回 PostgreSQLアンカンファレンス 発表資料) PDF
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata PDF
PDF
ゆるふわLinux-HA 〜PostgreSQL編〜 PDF
PDF
JPUGしくみ+アプリケーション勉強会(第25回) PDF
[db tech showcase Tokyo 2015] B17:PostgreSQLで動的にスケールアウト可能な負荷分散DBクラスタを作ろう! by ... PDF
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS... PDF
PostgreSQL on Amazon EC2の可能性 PDF
20171106 ntt-tx-postgre sql-10 PDF
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13 PDF
PostgreSQL9.1でつくる高可用性にまつわるエトセトラ PDF
Postgre sql update_20170310 PDF
Hackers Champloo 2016 postgresql-9.6 PDF
Chugoku db 17th-postgresql-9.6 Recently uploaded
PDF
基礎から学ぶ PostgreSQL の性能監視 (PostgreSQL Conference Japan 2025 発表資料) PDF
PCCC25(設立25年記念PCクラスタシンポジウム):東京大学情報基盤センター テーマ1/2/3「Society5.0の実現を目指す『計算・データ・学習... PDF
安価な ロジック・アナライザを アナライズ(?),Analyze report of some cheap logic analyzers PDF
第25回FA設備技術勉強会_自宅で勉強するROS・フィジカルAIアイテム.pdf PDF
visionOS TC「新しいマイホームで過ごすApple Vision Proとの新生活」 PPTX
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
- 1.
- 2.
レプリケーション対応機能開発経緯
~ 2009年
■ PG-REXというプロジェクトが存在
PG• PostgreSQL 8.3 + 独自パッチ
独自パッチ
パッチで同期レプリケーションを実装
• HeartbeatでHAクラスタ化
Heartbeat
2010年
■ PostgreSQL9.0 + Pacemaker
PostgreSQL9.0 Pacemakerで開発
• 同期レプリケーション実現の独自パッチと、HAクラスタ化用独自パッチあり
同期レプリケーション実現の独自パッチと、HAクラスタ化用独自パッチあり
レプリケーション実現
パッチと
クラスタ化用独自
→ 制御スクリプト(pgsql RA)をコミュニティへ投稿するもリジェクト
2011年
■ PostgreSQL9.1 + Pacemakerで開発 (社外からも応援あり)
PostgreSQL9.1
• RAほぼ作り直し → コミュニティ絶賛!(tremendous job !!)
2012年
■ 4月13日 コミュニティのリポジトリにマージ!
■ 5月16日 resource-agents 3.9.3 としてリリース
Pacemakerのコンポーネント名
Copyright(c)2012 NTT, Inc. All Rights Reserved.
2
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
運用1: フェイルオーバ後の復旧
⑥
vip-master
vip-master
pgsql RA
pgsqlRA
pgsql RA
Pacemaker
Pacemaker
サーバ#1
サーバ#1
サーバ#1
古
vip-rep
vip-rep
故
故
③ フラグ・クリア
ロック削除
② データ同期
⑤ 同期
レプリケーション
PostgreSQL
PostgreSQL
(Slave)
(Master)
PostgreSQL
④ (Slave)
PostgreSQL
vip-rep
(Master)
pgsql RA
pgsql RA
pgsql RA
pgsql RA
pgsql RA
pgsql RA
Pacemaker
Pacemaker
Pacemaker
Pacemaker
サーバ#2
サーバ#2
サーバ#2
サーバ#1
サーバ#2
新
① 故障の復旧
② #1のデータを#2と同期
→ TimelineIDがそろう
③ #1のロックファイル削除と
Pacemaker上の故障フラグを
クリア
Copyright(c)2012 NTT, Inc. All Rights Reserved.
vip-slave
vip-slave
vip-slave
vip-slave
vip-slave
vip-slave
PostgreSQL
①故障復旧
故障
故障
(Master)
vip-master
(手動)
④ #1のPostgreSQLをSlaveで起動
⑤ レプリケーション開始
→ 非同期で接続→同期設定に切替
⑥ #2の仮想IP(vip-slave)を#1に付け替え
12
- 13.
- 14.
- 15.
- 16.
高可用化まとめ
3大機能
■ Masterのフェイルオーバ
■ レプリケーションの同期・非同期の切替
■データの状態管理
運用時の注意
■ TimelineIDがずれているとレプリケーションできないため注意
• 難しくてよくわからない場合は、
『Slave 起動前に Master データのコピーが必要』 と覚えておけばOK
※ 単純にTimelineID を合わせるためには、WALアーカイブのみをコピーすれば可能だが、
フェイルオーバするとサーバ間のデータの整合性が崩れる可能性があり、これを避けるためにも
全データのコピーを推奨
Copyright(c)2012 NTT, Inc. All Rights Reserved.
16
- 17.
- 18.
- 19.
Pacemaker状態表示例 (crm_mon –Af実行時)
Online: [ pm01 pm02 ]
vipvip-slave (ocf::heartbeat:IPaddr2):
masterResource Group: master-group
vipvip-master (ocf::heartbeat:IPaddr2):
vipvip-rep
(ocf::heartbeat:IPaddr2):
Master/Slave Set: msPostgresql
Masters: [ pm01 ]
Slaves: [ pm02 ]
Clone Set: clnPingd
Started: [ pm01 pm02 ]
Node Attributes:
* Node pm01:
+ default_ping_set
master+ master-pgsql:0
pgsql-data+ pgsql-data-status
pgsql+ pgsql-status
pgsql-master+ pgsql-master-baseline
+ pm02-eth1
pm02pm02+ pm02-eth2
* Node pm02:
+ default_ping_set
master+ master-pgsql:1
pgsql-data+ pgsql-data-status
pgsql+ pgsql-status
pm01+ pm01-eth1
pm01+ pm01-eth2
Migration summary:
* Node pm01:
* NTT, Inc. All
Copyright(c)2012Node pm02: Rights Reserved.
Started pm02
Started pm01
Started pm01
仮想IPの
状態
PostgreSQLの
の
Master/Slaveの状態
の状態
:
:
:
:
:
:
:
100
1000
LATEST
PRI
00000000150000B0
up
up
:
:
:
:
:
:
100
100
STREAMING|SYNC
HS:sync
up
up
pm01ノードの
ノードのPostgreSQLと
と
ノードの
データの状態
promote直前の
直前のxlogの位置
の位置
直前の
pm02ノードの
ノードのPostgreSQLと
ノードの
と
データの状態
19
- 20.
Pacemaker状態表示 省略後(今回のデモ用表示)
vip-slave
(ocf::heartbeat:IPaddr2): Startedpm02
Resource Group: master-group
vip-master (ocf::heartbeat:IPaddr2):
Started pm01
vip-rep
(ocf::heartbeat:IPaddr2):
Started pm01
Master/Slave Set: msPostgresql
Masters: [ pm01 ]
Slaves: [ pm02 ]
--------------------------------------------------------* Node pm01:
+ pgsql-data-status
: LATEST
+ pgsql-status
: PRI
* Node pm02:
+ pgsql-data-status
: STREAMING|SYNC
+ pgsql-status
: HS:sync
--------------------------------------------------------* Node pm01:
* Node pm02:
Copyright(c)2012 NTT, Inc. All Rights Reserved.
仮想IPの
状態
PostgreSQLの
の
Master/Slaveの状態
の状態
pm01ノードの
ノードのPostgreSQLと
ノードの
と
データの状態
pm02ノードの
ノードのPostgreSQLと
ノードの
と
データの状態
故障状態が表示される
20
- 21.
【デモ】 Slaveの故障
pm02のPostgreSQLのプロセスをkill
# killall-9 postgres
vip-slaveの移動
vip-slave
vip-master
vip-slave
Started pm02
↓
Started pm01
故障
PostgreSQL
(Master)
非同期
設定に切替
(表示上わからない)
Pacemaker
PM01
vip-rep
PostgreSQL
(停止)
故障
検知
Pacemaker
PM02
データ状態の
記録
STREAMING|SYNC
↓
DISCONNECTED
Copyright(c)2012 NTT, Inc. All Rights Reserved.
21
- 22.
【デモ】 Slaveの復旧
pm02のフェイルカウントクリア
#
crm resourcecleanup msPostgresql pm02
vip-slaveの移動
vip-slave
vip-slave
vip-master
PostgreSQL
(Master)
同期
設定に切替
vip-rep
Pacemaker
PostgreSQL
(Slave)
Pacemaker
PM01
PM02
Started pm01
↓
Started pm02
データ状態の
記録
DISCONNECTED
↓
STREAMING|SYNC
Slave起動
Copyright(c)2012 NTT, Inc. All Rights Reserved.
HS:sync
22
- 23.
【デモ】 Masterの故障
pm01のPostgreSQLのプロセスをkill
# killall-9 postgres
故障
検知
vip-masterの移動
vip-master
vip-master
vip-slave
故障
vip-repの移動
Started pm01
↓
Started pm02
データ状態の
記録
LATEST
↓
DISCONNECTED
Copyright(c)2012 NTT, Inc. All Rights Reserved.
PostgreSQL
(停止)
Pacemaker
PM01
vip-rep
vip-rep
PostgreSQL
(Master)
Started pm01
↓
Started pm02
Masterに昇格
Pacemaker
PM02
23
- 24.
PostgreSQL制御スクリプト (pgsql RA)の最近の動き
resource-agent 3.9.4 (11/23リリース) での変更内容
■ Pacemaker 1.1.x の仕様変更に追従
• Pacemaker 1.0.x との互換は保持
■ recovery.confの、archive_cleanup_commandや
recovery_end_commandを設定可能に
■ promote時にPostgreSQLをpromoteするのではなく、
recovery.confを削除して再起動させることでMaster化可能に
• Timeline ID のインクリメント防止可能に
– ただしexperimental 機能
■ その他細かなバグ修正
Copyright(c)2012 NTT, Inc. All Rights Reserved.
24
- 25.
- 26.
参考
ソースコード (GitHub上のRA直リンク)
■ URL: https://github.com/ClusterLabs/resource-agents/blob/master/heartbeat/pgsql
ドキュメントおよび設定例 (GitHubのWiki)
■ https://github.com/t-matsuo/resource-agents/wiki/
Pacemakerダウンロード・インストール
■ http://linux-ha.sourceforge.jp/
PG-REX(PostgreSQL + Pacemaker)利用マニュアル
■ http://sourceforge.jp/projects/pg-rex/releases/55691
Copyright(c)2012 NTT, Inc. All Rights Reserved.
26
- 27.