質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Pacemaker

Pacemakerとは、クラスタ管理システム(CRM)を実装したオープンソースのソフトウェアです。CorosyncやHeartbeatと協調して動作し、高可用クラスタ上で稼働するアプリケーションなどのリソースを監視・起動・停止できます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

1回答

1222閲覧

Pacemaker + PostgreSQLでのストリーミングレプリケーション実現方法

tt0802

総合スコア16

Pacemaker

Pacemakerとは、クラスタ管理システム(CRM)を実装したオープンソースのソフトウェアです。CorosyncやHeartbeatと協調して動作し、高可用クラスタ上で稼働するアプリケーションなどのリソースを監視・起動・停止できます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

1クリップ

投稿2018/10/23 10:12

編集2018/10/23 21:27

▼実現したいこと

3台構成のPostgreSQLについて以下ストリーミングレプリケーション方法を実現したい。
・サーバA :マスター
・サーバB :同期レプリケーション
・サーバC :非同期レプリケーション

▼使用製品

・CentOS 7.4
・Pacemaker-1.1.16-1.1 (Linux-HA-JAPANのリポジトリパッケージを使用 PCS版)
・PostgreSQL 11

▼質問内容

2台構成レプリケーションまでは実現可能というところまでは分かったのですが、
3台構成にした場合に、レプリケーション方式を同期・非同期と分けて構成する方法をご教示下さい。
Pacemakerの設定を投入するpcsコマンドが分かれば実現可能かと思いますので、pcsの投入方法をメインにご教示頂ければと思います。

今、一番分かっていないのが、同期方法を同期レプリケーション、非同期レプリケーションと分けた際のPacemakerの設定方法となります。

以上です。
宜しくお願い致します。

▼追記情報

レプリケーション方法ですが、具体的には
・サーバA :マスター
・サーバB :SYNC(同期)
・サーバC :POTENTIAL(非同期だが同期に昇格する場合有)
としたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikedas

2018/10/25 11:26

スタンバイとの間のレプリケーション方式を同期と非同期とに分けて構成したい理由は何ですか。
tt0802

2018/10/25 12:27 編集

質問頂きありがとうございます。災害対策を考慮し、AWSにてリージョンを分けて構築しようとしています。サーバAとサーバBを同一リージョンに構築し、サーバCを別リージョンで構築します。挙動としては、サーバA故障時にサーバーBがマスター、サーバCが同期レプリケーション、サーバBの故障時にはサーバCがマスターとなるようにしたいです。
ikedas

2018/10/25 23:40

重要なポイントだと思うので、そのお答えをそのまま質問文に追記してはどうかと思います。
guest

回答1

0

ベストアンサー

質問者さんのコメント欄への投稿によると、

災害対策を考慮し、AWSにてリージョンを分けて構築しようとしています。サーバAとサーバBを同一リージョンに構築し、サーバCを別リージョンで構築します。挙動としては、サーバA故障時にサーバーBがマスター、サーバCが同期レプリケーション、サーバBの故障時にはサーバCがマスターとなるようにしたいです。

とのことです。

お望みの回答ではないとおもいますが、そのような構成はお勧めしません。

サーバA・BはリージョンX、サーバCはリージョンYにあるとすると、X-Y間をまたいでPacemakerで管理するのは不可能と思ったほうがいいです。

そもそも、災害対策のために別々のリージョンにそれぞれサーバを置くわけです。両リージョンは離れていますから、平時であっても常時高速に通信できるとはかぎりません。X-Y間でハートビートパケットが遅延したりロストしたりすることは頻繁にあるはずで、そうなったときにはA・BとCの間でスプリットブレインになります。

災害時でもないのにときどき勝手に災害対策が発動されてしまうわけで、実用にたえないシステム――というか、システム自体が災害の原因――になってしまいます。

同じく、X-Y間での同期レプリケーションも正常に動作するかどうかわかりません。まず動作しないでしょう。

  • 平時はA・BからカスケードでCへ非同期レプリケーションするだけにしたほうがいいとおもいます。リージョンYのサーバCはリージョンXが落ちたときのDRマスタと割り切ります。

  • 災害時にはリージョン間の通信がまともにとれる保証はまったくないので、自動切り替えは不可能と思ったほうがいいです。手動でのDRサイト (C) への移行手順を作成するべきと思います。

  • 切り戻し手順も、自動では無理でしょう。いったんA・Bを切り離したら、復旧後にそれらをマスタに戻す前に、その間のCでの更新分を同期する作業が必要になります。

投稿2018/10/29 05:56

編集2018/10/29 07:14
ikedas

総合スコア4335

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tt0802

2018/10/29 07:31

お世話になっております。 構成について助言頂きありがとうございます。 構成を見直したいと思います。 また、Pacemakerによる同期の制御ですが、 マスターを1台にした際に、 tmpファイルに自動で「synchronous_standby_names」が記載され、同期・非同期の制御が行える事が分かりました。 自動でできたtmpファイルを「postgresql.conf」にincludすることにより制御可能でした。 色々ご教示頂きありがとうございます。
ikedas

2018/10/29 08:32

rep_mode.confのことでしょうか。これはリソースエージェントが作ってくれるファイルですね。
tt0802

2018/11/14 23:43

返信遅くなりました。 > rep_mode.confのことでしょうか。これはリソースエージェントが作ってくれるファイルですね。 はい。rep_mode.confのことです。 ここに名前が記載され、順に同期・非同期となるような事を理解しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問