Submit Search
Upload
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
•
23 likes
•
12,468 views
T
Takatoshi Matsuo
Follow
http://linux-ha.sourceforge.jp/wp/archives/3589
Read less
Read more
Report
Share
Report
Share
1 of 43
Recommended
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
kazuhcurry
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれから
ksk_ha
HA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティス
EnterpriseDB
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
kazuhcurry
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
NTT DATA Technology & Innovation
Recommended
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
kazuhcurry
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれから
ksk_ha
HA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティス
EnterpriseDB
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
kazuhcurry
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
NTT DATA Technology & Innovation
Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
Samir Hammoudi
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介
ksk_ha
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
Uptime Technologies LLC (JP)
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
Kosuke Kida
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
歩 柴田
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
NTT DATA Technology & Innovation
PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介
PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介
Masao Fujii
初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談
Makoto Haruyama
More Related Content
What's hot
Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
Samir Hammoudi
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介
ksk_ha
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
Uptime Technologies LLC (JP)
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
Kosuke Kida
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
歩 柴田
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
NTT DATA Technology & Innovation
What's hot
(20)
Vacuum徹底解説
Vacuum徹底解説
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
DockerとPodmanの比較
DockerとPodmanの比較
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Similar to Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介
PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介
Masao Fujii
初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談
Makoto Haruyama
Art of MySQL Replication.
Art of MySQL Replication.
Mikiya Okuno
MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012
Mikiya Okuno
JPUGしくみ+アプリケーション勉強会(第25回)
JPUGしくみ+アプリケーション勉強会(第25回)
Yoshinori Nakanishi
Dsas周りのお話
Dsas周りのお話
KLab株式会社
#02-01 ZFS によるストレージ仮想化 (2012-04-20)
#02-01 ZFS によるストレージ仮想化 (2012-04-20)
SolarisJPNight
PostgreSQL V9 レプリケーション解説
PostgreSQL V9 レプリケーション解説
Masao Fujii
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
infinite_loop
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
Amazon Web Services Japan
Solaris 11 に見る、次世代ファイルシステムZFS
Solaris 11 に見る、次世代ファイルシステムZFS
SolarisJP
続マスタN対スレーブ1レプリケーションの作り方
続マスタN対スレーブ1レプリケーションの作り方
do_aki
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
Takatoshi Matsuo
Empressレプリケーション説明資料
Empressレプリケーション説明資料
ITDORAKU
Empressレプリケーション説明資料 2
Empressレプリケーション説明資料 2
ITDORAKU
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
Tomohiro Ohtake
Cassandraのバックアップと運用を考える
Cassandraのバックアップと運用を考える
Kazutaka Tomita
PHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったこと
Kentaro Matsui
awsを学ぶ上で必要となる前提知識(DB)
awsを学ぶ上で必要となる前提知識(DB)
聡 大久保
やさしいMatzの作り方
やさしいMatzの作り方
宏治 高尾
Similar to Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
(20)
PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介
PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介
初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談
Art of MySQL Replication.
Art of MySQL Replication.
MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012
JPUGしくみ+アプリケーション勉強会(第25回)
JPUGしくみ+アプリケーション勉強会(第25回)
Dsas周りのお話
Dsas周りのお話
#02-01 ZFS によるストレージ仮想化 (2012-04-20)
#02-01 ZFS によるストレージ仮想化 (2012-04-20)
PostgreSQL V9 レプリケーション解説
PostgreSQL V9 レプリケーション解説
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
Solaris 11 に見る、次世代ファイルシステムZFS
Solaris 11 に見る、次世代ファイルシステムZFS
続マスタN対スレーブ1レプリケーションの作り方
続マスタN対スレーブ1レプリケーションの作り方
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
Empressレプリケーション説明資料
Empressレプリケーション説明資料
Empressレプリケーション説明資料 2
Empressレプリケーション説明資料 2
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
Cassandraのバックアップと運用を考える
Cassandraのバックアップと運用を考える
PHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったこと
awsを学ぶ上で必要となる前提知識(DB)
awsを学ぶ上で必要となる前提知識(DB)
やさしいMatzの作り方
やさしいMatzの作り方
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
1.
Pacemaker+PostgreSQLレプリケーションで 共有ディスクレス高信頼クラスタの構築 OSC 2013 Tokyo/Spring
松尾 隆利
2.
まずはPostgreSQLの ストリーミングレプリケーションの
簡単な紹介 Copyright(c)2013 NTT, Inc. All Rights Reserved. 2
3.
PostgreSQLのレプリケーションとは? 複数のサーバにデータベースを自動的に複製する機能
■ PostgreSQL 9.0 : 非同期レプリケーション機能 9.1 : 同期レプリケーション機能 9.2 : カスケードレプリケーション機能 書き込み Master 非同期 Slave Slave カスケード レプリケーション レプリケーション 応答 Slave カスケード Slave 同期 レプリケーション レプリケーション Copyright(c)2013 NTT, Inc. All Rights Reserved. 3
4.
非同期レプリケーション (PostgreSQL 9.0~)
名前の通り、Masterへ書き込み発生時、 レプリケーションは非同期で実行 故障発生時、データ欠損の可能性あり 複数のSlaveを接続可能 書き込み Master 非同期 Slave レプリケーション Copyright(c)2013 NTT, Inc. All Rights Reserved. 4
5.
同期レプリケーション (PostgreSQL 9.1~)
Master故障時のデータ欠損なし 同期で動作できるSlaveは一つのみ ■ 複数のSlaveを同期設定で接続した場合、1ノードだけ同期で動作 Slave故障時、MasterはSlaveが復旧するまで待つ → トランザクション停止! ? 書き込み Master 応答待ち! 応答 Slave 同期 レプリケーション Copyright(c)2013 NTT, Inc. All Rights Reserved. 5
6.
カスケードレプリケーション (PostgreSQL 9.2~)
SlaveからSlaveへレプリケーション ■ MasterのCPUやネットワーク負荷の削減が可能 カスケードレプリケーションの動作は全て非同期 書き込み Master Slave カスケード Slave レプリケーション Slave カスケード Slave レプリケーション Copyright(c)2013 NTT, Inc. All Rights Reserved. 6
7.
Slaveの特徴 参照系のSQLを処理可能 SlaveからMasterに接続し、切断時は自動で再接続を試みる
レプリケーションの接続先は動的に変更できない ■ 変更にはSlaveのPostgreSQLの再起動が必要 同期・非同期の設定はSlave側では制御できない ■ Master側のpostgresql.confの "synchronous_standby_names" の値を変 更し設定をリロード (再起動は必要なし) 参照可 Master Slave Copyright(c)2013 NTT, Inc. All Rights Reserved. 7
8.
レプリケーション使用時の注意点① SlaveにWALを書きこむ前にMasterが故障した場合、
MasterとSlave のデータ間に不整合が発生 書き込み Master Slave → Master ②WAL転送 ① WAL書き込み ③ WAL書き込み WAL 不整合 この状態でSlaveをMasterに昇格させ、旧MasterをSlave として組み込む場合、手動でデータの同期が必要 Pacemaker使用時、この状態が起きた場合は旧Masterにロックファイルを 残すことで、不整合のデータをもったPostgreSQLの起動を抑止 Copyright(c)2013 NTT, Inc. All Rights Reserved. 8
9.
レプリケーション使用時の注意点② "TimelineID"の存在
■ SlaveからMasterへ昇格した際インクリメントされる数値 TimelineID が異なるとレプリケーションできない Slave → Master 5 5 6 異なる SlaveのTimelineIDをMasterと同期させるには Master側で生成されるWALアーカイブをSlave 側にコピーするか データの同期が必要 Copyright(c)2013 NTT, Inc. All Rights Reserved. 9
10.
以上レプリケーションの紹介
ここからは高信頼(HA)クラスタ Copyright(c)2013 NTT, Inc. All Rights Reserved. 10
11.
HAクラスタの今までの構成 ~Active/Standby 構成~
PostgreSQLのデータは共有ディスク上に配置し通常はActive サーバでサービスを提供 Activeサーバ故障時はStandbyサーバがActiveとなりサービスを 提供 (フェイルオーバ) フェイル Active Standby オーバ Active 故障 データ 発生 データ 共有ディスク 共有ディスク Copyright(c)2013 NTT, Inc. All Rights Reserved. 11
12.
レプリケーション構成 ~Master/Slave 構成~
PostgreSQLのストリーミングレプリケーション機能を用いてデー タを共有し、通常はMaster側でサービスを提供 Masterサーバ故障時はSlaveサーバがMasterに昇格しサービスを 継続 フェイル Master Slave オーバ Master 故障 データ データ 発生 データ データ ローカルディスク ローカルディスク ローカルディスク ローカルディスク Copyright(c)2013 NTT, Inc. All Rights Reserved. 12
13.
レプリケーション構成の高信頼クラスタ 3大機能
①フェイルオーバ Master 故障発生 Master フェイル ③ 故障 オーバ デ Master 同期設定 Slave ー 古 DBデータ DBデータ タ の 状 ②同期・非同期の設定切替 態 DBデータ DBデータ 管 Slave 理 故障発生 Master 非同期設定 故障 DBデータ 古 DBデータ Copyright(c)2013 NTT, Inc. All Rights Reserved. 13
14.
基本構成
参照負荷分散用 サービス提供用LAN Read/Write Read Only 仮想IP1 仮想IP3 (vip-master) レプリケーション (vip-slave) 用LAN PostgreSQL 仮想IP2 PostgreSQL (Master) (vip-rep) (Slave) Slaveからの接続用 制御 制御 pgsql RA Pacemaker pgsql RA Pacemaker 用LAN Pacemaker STONITH 用LAN サーバ#1 ※次ページからは省略 サーバ#2 Copyright(c)2013 NTT, Inc. All Rights Reserved. 14
15.
動作1 : Masterのフェイルオーバ
vip-master vip-master vip-slave vip-master vip-master vip-slave vip-slave PostgreSQL PostgreSQL 故障 PostgreSQL PostgreSQL 故障 (Master) vip-rep (Slave) ②停止 (Master) vip-rep vip-rep ⑤(Slave) (Master) pgsql RA pgsql RA pgsql RA pgsql RA pgsql RA Pacemaker Pacemaker Pacemaker Pacemaker Pacemaker サーバ#1 サーバ#2 サーバ#1 サーバ#1 サーバ#2 サーバ#2 ④ 古 ② #1のPostgreSQLを停止 ① 故障を検知 ③ 仮想IPを停止 旧Masterは不整合が発生し ④ #1のデータが古いことを記録 ている可能性があるため ⑤ #2をMasterに昇格(promote) ロックファイルが残る ⑥ #2で仮想IPを起動 Copyright(c)2013 NTT, Inc. All Rights Reserved. 15
16.
動作2: Masterフェイルオーバ後の復旧
vip-master vip-master ⑥ vip-master vip-slave vip-slave vip-slave vip-slave vip-slave vip-slave ⑤ レプリケーション 故障 ①故障復旧 PostgreSQL PostgreSQL PostgreSQL PostgreSQL PostgreSQL vip-rep vip-rep vip-rep (Master) (Master) (Slave) ④ (Slave) (Master) pgsql RA pgsql RA pgsql 故 故 pgsql RA pgsql RA pgsql RA pgsql RA pgsql RA pgsql RA Pacemaker Pacemaker Pacemaker Pacemaker Pacemaker Pacemaker ③ ロック削除 サーバ#1 サーバ#1 サーバ#1 故障情報クリア サーバ#2 サーバ#2 サーバ#2 サーバ#2 サーバ#1 サーバ#2 ② データ同期 古 新 ① 故障の復旧 ④ #1がSlaveで起動 ② #1のデータを#2と同期 ⑤ レプリケーション開始 → 不整合解消、TimelineID同期 → 非同期設定で接続 ③ #1のロックファイル削除と → 同期設定に切替 故障情報をクリア ⑥ Slave用仮想IP移動 Copyright(c)2013 NTT, Inc. All Rights Reserved. 16
17.
動作3 : 同期・非同期設定の切替
② ⑤ vip-slave ③検知 vip-master 同期 vip-slave vip-master ⑦非同期 vip-slave PostgreSQL 設定 PostgreSQL PostgreSQL 設定 PostgreSQL vip-rep vip-rep ④停止 (Master) (Slave) (Master) (Slave) pgsql RA pgsql RA pgsql RA pgsql RA Pacemaker Pacemaker Pacemaker Pacemaker Pacemaker サーバ#1 サーバ#2 サーバ#1 サーバ#2 サーバ#2 ⑥ 古 ① Slaveの故障発生 ④ #2のPostgreSQLを停止 ② Masterのトランザクション停止 ⑤ Slave用仮想IP移動 ③ Slaveの故障検知と ⑥ #2のデータが古いことを記録 レプリケーション切断を検知 ⑦ 非同期設定に変更 SELECT * from pg_stat_replication → トランザクション再開 Copyright(c)2013 NTT, Inc. All Rights Reserved. 17
18.
動作4 : 起動
⑥ vip-slave vip-slave ③仮想IP起動 vip-slave vip-master vip-master PostgreSQL PostgreSQL PostgreSQL 停止 vip-rep 停止 停止 vip-rep 停止 (Slave) (Master) (Master) ②起動 pgsql RA pgsql RA pgsql RA pgsql RA ⑤起動 Pacemaker Pacemaker Pacemaker サーバ#1 サーバ#2 サーバ#1 サーバ#2 ① ④ データ同期 新 古 新 古 ① データが新しい方を選択 (#1とする) ④ データを同期 ② #1のPacemakerを起動 → TimelineIDがそろう → Slaveで起動 → Masterに遷移 ⑤ Pacemaker起動 ③ 仮想IPが#1で起動 → レプリケーション開始 ⑥ Slave用仮想IP移動 Copyright(c)2013 NTT, Inc. All Rights Reserved. 18
19.
初期起動と2回目以降の起動の違い 初期起動 (Pacemakerの設定が空の場合)
■ サーバを単独起動した場合、 Pacemaker上にデータの状態が 記録されていないため、必ずMasterになる • ロックファイルが残っている場合は除く ■ 同時に2つのサーバ起動した場合、お互いのデータの新旧を 比較し、新しい方がMasterになる 2回目以降の起動 ■ Pacemaker上にデータの状態が記録されているため、 この状態を確認し、最新のデータを持っている場合のみ Masterになれる Copyright(c)2013 NTT, Inc. All Rights Reserved. 19
20.
まとめ レプリケーション構成の高信頼クラスタ3大機能 ■
Masterのフェイルオーバ ■ レプリケーションの同期・非同期設定の切替 ■ データの状態管理 運用時の注意 ■ TimelineIDがずれている場合はレプリケーション接続できない ■ ロックファイルが残っている場合は他のサーバとデータの 整合性が崩れている可能性あり → データを手動で同期して解消 Copyright(c)2013 NTT, Inc. All Rights Reserved. 20
21.
デモ Copyright(c)2013 NTT, Inc.
All Rights Reserved. 21
22.
デモ環境
Slave用 サービス提供用LAN VIP省略 仮想IP1 (vip-master) レプリケーション用 LAN PostgreSQL 仮想IP2 PostgreSQL <Master> (vip-rep) <Slave> Pacemaker用 Pacemaker LAN Pacemaker ホスト名 : pm01 ホスト名 : pm02 ディスク監視や ネットワーク監視 、STONITH は省略 Copyright(c)2013 NTT, Inc. All Rights Reserved. 22
23.
postgresql.conf (クラスタリングで重要な点のみ) <レプリケーション設定の説明は省略> listen_address
= * ■ Slaveには仮想IP(vip-master)が存在しないため特定IPでListen できない synchronous_standby_names はコメントアウト ■ Pacemakerが同期・非同期を切り替えるため動的に書き換える restart_after_crash = off ■ PacemakerがPostgreSQLの状態管理をするため、PostgreSQL プロセスの自動再起動はoff Copyright(c)2013 NTT, Inc. All Rights Reserved. 23
24.
Pacemakerの設定 property
primitive pgsql ocf:heartbeat:pgsql no-quorum-policy="ignore" params stonith-enabled="false" pgctl="/usr/pgsql-9.1/bin/pg_ctl" psql="/usr/pgsql-9.1/bin/psql" rsc_defaults pgdata="/var/lib/pgsql/9.1/data/" resource-stickiness="INFINITY" rep_mode="sync" migration-threshold="1" xlog_check_count="0" node_list="pm01 pm02" ms msPostgresql pgsql restore_command="cp /var/lib/pgsql/9.1/data/pg_archive/%f %p" meta primary_conninfo_opt="keepalives_idle=60 keepalives_interval=5 keepalives_count=5" master-max="1" master_ip="192.168.104.110" master-node-max="1" stop_escalate="0" clone-max="2" op start timeout="30s" interval="0s" on-fail="restart" clone-node-max="1" op monitor timeout="30s" interval="4s" on-fail="restart" notify="true" op monitor timeout="30s" interval="2s" on-fail="restart" role="Master" op promote timeout="30s" interval="0s" on-fail="restart" group master-group op demote timeout="30s" interval="0s" on-fail="stop" vip-master vip-rep op stop timeout="30s" interval="0s" on-fail="block" op notify timeout="60s" interval="0s" primitive vip-master ocf:heartbeat:IPaddr2 params colocation rsc_colocation-2 inf: master-group msPostgresql:Master ip="192.168.103.110" nic="eth3" order rsc_order-2 inf: msPostgresql:promote master-group:start symmetrical=false cidr_netmask="24" order rsc_order-3 0: msPostgresql:demote master-group:stop symmetrical=false op start timeout="60s" interval="0s" on-fail="restart" op monitor timeout="60s" interval="10s" on-fail="restart" op stop timeout="60s" interval="0s" on-fail="block" primitive vip-rep ocf:heartbeat:IPaddr2 params ip="192.168.104.110" nic="eth4" cidr_netmask="24" op start timeout="60s" interval="0s" on-fail="restart" op monitor timeout="60s" interval="10s" on-fail="restart" op stop timeout="60s" interval="0s" on-fail="block" Copyright(c)2013 NTT, Inc. All Rights Reserved. 24
25.
Pacemakerの設定 (抜粋) group master-group
Master側で動かす仮想IPは扱いやすいようにグループ化 vip-master vip-rep Master側で動かす仮想IPは扱いやすいようにグループ化 primitive vip-rep ocf:heartbeat:IPaddr2 レプリケーション用仮想IPの設定 params ip="192.168.104.110" nic="eth4" cidr_netmask="24" primitive pgsql ocf:heartbeat:pgsql PostgreSQLリソースの設定 params rep_mode="sync" xlog_check_count="0" 同期レプリケーションのMaster/Slave使用を宣言 同期レプリケーションのMaster/Slave使用を宣言 node_list="pm01 pm02" restore_command="cp /var/lib/pgsql/9.1/data/pg_archive/%f %p" primary_conninfo_opt="keepalives_idle=60 keepalives_interval=5 keepalives_count=5 " master_ip="192.168.104.110" stop_escalate="0" レプリケーション接続先はレプリケーション用仮想IP(vip-rep)を設定 レプリケーション接続先はレプリケーション用仮想IP(vip-rep)を設定 リソースの処理順番の設定 order rsc_order-3 0:msPostgresql:demote master-group:stop symmetrical=false MasterのPostgreSQLを停止した後に仮想IPを停止することで MasterのPostgreSQLを停止した後に仮想IPを停止することで Copyright(c)2013 NTT, Inc. All Rights Reserved. 25 レプリケーションの異常切断を防ぐ
26.
Pacemaker状態表示例 (crm_mon –A
実行時) ============ Last updated: Sun Feb 17 19:01:31 2013 Stack: Heartbeat Current DC: pm01 (11111111-1111-1111-1111-111111111111) - partition with quorum Version: 1.0.12-066152e 2 Nodes configured, unknown expected votes 2 Resources configured. ============ Online: [ pm01 pm02 ] 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 Attributes: * Node pm01: + master-pgsql:0 : 1000 + pgsql-data-status : LATEST + pgsql-master-baseline : 0000000046000000 + pgsql-status : PRI * Node pm02: + master-pgsql:1 : 100 + pgsql-data-status : STREAMING|SYNC + pgsql-status : HS:sync デモでは見にくいので grep と sed を駆使して・・・ デモでは見にくいので grep と sed を駆使して・・・ Copyright(c)2013 NTT, Inc. All Rights Reserved. 26
27.
Pacemaker状態表示簡略版 (今回のデモ専用) Online: [
pm01 pm02 ] サーバの状態 vip-master Started pm01 vip-rep Started pm01 仮想IPの状態 Masters: [ pm01 ] Slaves: [ pm02 ] Master/Slave状態 ------------------------------------------ * Node pm01: + pgsql-data-status : LATEST データの状態 + pgsql-status : PRI PostgreSQLの状態 * Node pm02: + pgsql-data-status : STREAMING|SYNC データの状態 + pgsql-status : HS:sync PostgreSQLの状態 Copyright(c)2013 NTT, Inc. All Rights Reserved. 27
28.
属性値
用途 用途 ・ Masterへの昇格可否の判断 ・ Masterへの昇格可否の判断 pgsql-data-status ■ PostgreSQLのデータ状態。Pacemaker再起動しても残る。 (例) LATEST, STREAMING|ASYNC, STREAMING|SYNC DISCONNECTED 等 pgsql-status 用途 用途 ・ PostgreSQLの状態把握 ・ PostgreSQLの状態把握 ■ 現在のPostgreSQLの状態 ・ 他のリソースとの連携 ・ 他のリソースとの連携 (例) PRI, HS:alone, HS:async, HS:sync, UNKNOWN 等 Copyright(c)2013 NTT, Inc. All Rights Reserved. 28
29.
【デモ】 Master起動 (初期起動)
pm01のPacemakerを起動し設定を反映 # /etc/init.d/heartbeat start # crm configure load update config.crm 仮想IP起動 vip-master vip-rep PostgreSQL (Master) Slaveを経由し てMasterが起動 Pacemaker STOP PM01 PM02 → HS:alone → PRI データ状態 Copyright(c)2013 NTT, Inc. All Rights Reserved. LATEST 29
30.
【デモ】 Master起動 (初期起動) Online:
[ pm01 ] vip-master Started pm01 vip-rep Started pm01 Masters: [ pm01 ] Stopped: [ pgsql:1 ] ------------------------------------------ * Node pm01: + pgsql-data-status : LATEST + pgsql-status : PRI Copyright(c)2013 NTT, Inc. All Rights Reserved. 30
31.
【デモ】 Slave起動 データを同期してpm02のPacemakerを起動
# <データ同期 (バックアップ・リストア)> # /etc/init.d/heartbeat start PostgreSQL状態 vip-master STOP → HS:alone PostgreSQL vip-rep PostgreSQL → HS:async (Master) (Slave) → HS:sync Pacemaker Pacemaker PM01 PM02 データ状態 →DISCONNECTED 新 同期 →STREAMING|ASYNC Copyright(c)2013 NTT, Inc. All Rights Reserved. →STREAMING|SYNC 31
32.
【デモ】 Slave起動 Online: [
pm01 pm02 ] vip-master Started pm01 vip-rep Started pm01 Masters: [ pm01 ] Slaves: [ pm02 ] ------------------------------------------ * Node pm01: + pgsql-data-status : LATEST + pgsql-status : PRI * Node pm02: + pgsql-data-status : STREAMING|SYNC + pgsql-status : HS:sync ------------------------------------------ Copyright(c)2013 NTT, Inc. All Rights Reserved. 32
33.
【デモ】 Slaveの故障 pm02のPostgreSQLのプロセスをkill
# killall -9 postgres 故障検知 vip-master HS:sync PostgreSQL vip-rep 故障 PostgreSQL ↓ (Master) (停止) STOP 非同期設定 Pacemaker Pacemaker へ切替 (表示上わからない) PM01 PM02 データ状態 STREAMING|SYNC → DISCONNECTED Copyright(c)2013 NTT, Inc. All Rights Reserved. 33
34.
【デモ】 Slaveの故障 Online: [
pm01 pm02 ] vip-master Started pm01 vip-rep Started pm01 Masters: [ pm01 ] Slaves: [ pgsql:1 ] ------------------------------------------ * Node pm01: + pgsql-data-status : LATEST + pgsql-status : PRI * Node pm02: + pgsql-data-status : DISCONNECT + pgsql-status : STOP ------------------------------------------ pgsql:1_monitor_4000 (node=pm02, call=7, 故障情報 rc=7, status=complete): not running Copyright(c)2013 NTT, Inc. All Rights Reserved. 34
35.
【デモ】 Slaveの復旧 pm02のPostgreSQL故障情報クリア #
crm resource cleanup msPostgresql pm02 STOP → HS:alone → HS:async vip-master →HS:sync PostgreSQL vip-rep PostgreSQL (Master) (Slave) Pacemaker Pacemaker PM01 PM02 データ状態 DISCONNECTED → STREAMING|ASYNC → STREAMING|SYNC Copyright(c)2013 NTT, Inc. All Rights Reserved. 35
36.
【デモ】 Slaveの復旧 Online: [
pm01 pm02 ] vip-master Started pm01 vip-rep Started pm01 Masters: [ pm01 ] Slaves: [ pm02 ] ------------------------------------------ * Node pm01: + pgsql-data-status : LATEST + pgsql-status : PRI * Node pm02: + pgsql-data-status : STREAMING|SYNC + pgsql-status : HS:sync ------------------------------------------ pgsql:1_monitor_4000 (node=pm02, call=7, 故障情報 rc=7, status=complete): not running クリア Copyright(c)2013 NTT, Inc. All Rights Reserved. 36
37.
【デモ】 Masterの故障 (フェイルオーバ)
pm01のPostgreSQLのプロセスをkill # killall -9 postgres 故障検知 vip-master vip-master 仮想IPの移動 vip-rep vip-rep PostgreSQL PostgreSQL (停止) (Master) HS:sync Pacemaker Pacemaker → PRI PM01 PM02 データ状態記録 データ状態 LATEST STREAMING|SYNC → DISCONNECTED → LATEST Copyright(c)2013 NTT, Inc. All Rights Reserved. 37
38.
【デモ】 Masterの故障 (フェイルオーバ) Online:
[ pm01 pm02 ] vip-master Started pm02 vip-rep Started pm02 Masters: [ pm02 ] Slaves: [ pgsql:0 ] ------------------------------------------ * Node pm01: + pgsql-data-status : DISCONNECT + pgsql-status : STOP * Node pm02: + pgsql-data-status : LATEST + pgsql-status : PRI ------------------------------------------ pgsql:0_monitor_2000 (node=pm01, call=25, 故障情報 rc=7, status=complete): not running Copyright(c)2013 NTT, Inc. All Rights Reserved. 38
39.
コミュニティの最近の動き resource-agents 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 のインクリメント防止可能に resource-agents 3.9.5 (2/8リリース) ■ Slave (Hot Stanby)で起動するためだけの機能追加 (Active-Stanby構成で使用) Copyright(c)2013 NTT, Inc. All Rights Reserved. 39
40.
コミュニティの最近の動き Pacemaker 1.0.13
(2/13リリース) ■ Linux-HA Japan では resource-agents 3.9.5 を同梱し、 リポジトリパッケージとして4月以降にリリース予定 Copyright(c)2013 NTT, Inc. All Rights Reserved. 40
41.
動作環境 Pacemaker 1.0.12 以上推奨 resource-agents
3.9.3 以上 ■ Linux-HA Japan Pacemakerリポジトリパッケージ 1.0.12-1.2 以上に同梱 (2012年7月リリース) PostgreSQL 9.1 以上 ■ 9.0では動きません Copyright(c)2013 NTT, Inc. All Rights Reserved. 41
42.
参考 ドキュメントおよび設定例 (GitHubのWiki)
github t-matsuo 検索 ■ https://github.com/t-matsuo/resource-agents/wiki/ Pacemakerダウンロード・インストール Linux-HA Japan 検索 ■ http://linux-ha.sourceforge.jp/ Copyright(c)2013 NTT, Inc. All Rights Reserved. 42
43.
Question? Copyright(c)2013 NTT, Inc.
All Rights Reserved. 43