SlideShare a Scribd company logo
1 of 43
Pacemaker+PostgreSQLレプリケーションで
共有ディスクレス高信頼クラスタの構築
OSC 2013 Tokyo/Spring

                        松尾 隆利
まずはPostgreSQLの
ストリーミングレプリケーションの
     簡単な紹介



Copyright(c)2013 NTT, Inc. All Rights Reserved.   2
PostgreSQLのレプリケーションとは?
 複数のサーバにデータベースを自動的に複製する機能
  ■ PostgreSQL 9.0 : 非同期レプリケーション機能
               9.1 : 同期レプリケーション機能
               9.2 : カスケードレプリケーション機能

           書き込み
      Master   非同期    Slave                                                   Slave
                                                                カスケード
             レプリケーション                                         レプリケーション


                              応答                   Slave     カスケード    Slave
   同期                                                      レプリケーション
レプリケーション
 Copyright(c)2013 NTT, Inc. All Rights Reserved.                                      3
非同期レプリケーション (PostgreSQL 9.0~)
 名前の通り、Masterへ書き込み発生時、
  レプリケーションは非同期で実行
 故障発生時、データ欠損の可能性あり
 複数のSlaveを接続可能

           書き込み
      Master   非同期    Slave
             レプリケーション




 Copyright(c)2013 NTT, Inc. All Rights Reserved.   4
同期レプリケーション (PostgreSQL 9.1~)
 Master故障時のデータ欠損なし
 同期で動作できるSlaveは一つのみ
   ■ 複数のSlaveを同期設定で接続した場合、1ノードだけ同期で動作
 Slave故障時、MasterはSlaveが復旧するまで待つ
  → トランザクション停止!
                      ?


                    書き込み
       Master



                          応答待ち!
                           応答
                                                    Slave
   同期
レプリケーション

  Copyright(c)2013 NTT, Inc. All Rights Reserved.           5
カスケードレプリケーション (PostgreSQL 9.2~)
 SlaveからSlaveへレプリケーション
 ■ MasterのCPUやネットワーク負荷の削減が可能
 カスケードレプリケーションの動作は全て非同期



                   書き込み
      Master                                               Slave     カスケード      Slave
                                                                   レプリケーション


                                                   Slave     カスケード      Slave
                                                           レプリケーション



 Copyright(c)2013 NTT, Inc. All Rights Reserved.                                        6
Slaveの特徴
 参照系のSQLを処理可能
 SlaveからMasterに接続し、切断時は自動で再接続を試みる
 レプリケーションの接続先は動的に変更できない
   ■ 変更にはSlaveのPostgreSQLの再起動が必要
 同期・非同期の設定はSlave側では制御できない
 ■ Master側のpostgresql.confの "synchronous_standby_names" の値を変
   更し設定をリロード (再起動は必要なし)


                                                           参照可

 Master                                            Slave

 Copyright(c)2013 NTT, Inc. All Rights Reserved.                 7
レプリケーション使用時の注意点①
 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
レプリケーション使用時の注意点②
 "TimelineID"の存在
  ■ SlaveからMasterへ昇格した際インクリメントされる数値
 TimelineID が異なるとレプリケーションできない
                                                   Slave   → Master

              5                               5       6
                                異なる

       SlaveのTimelineIDをMasterと同期させるには
Master側で生成されるWALアーカイブをSlave 側にコピーするか
                 データの同期が必要
 Copyright(c)2013 NTT, Inc. All Rights Reserved.                      9
以上レプリケーションの紹介

      ここからは高信頼(HA)クラスタ




Copyright(c)2013 NTT, Inc. All Rights Reserved.   10
HAクラスタの今までの構成 ~Active/Standby 構成~
 PostgreSQLのデータは共有ディスク上に配置し通常はActive
  サーバでサービスを提供
 Activeサーバ故障時はStandbyサーバがActiveとなりサービスを
  提供 (フェイルオーバ)




                                                             フェイル
  Active                                     Standby         オーバ     Active


                                                       故障
                           データ                         発生     データ


               共有ディスク                                       共有ディスク
  Copyright(c)2013 NTT, Inc. All Rights Reserved.                             11
レプリケーション構成 ~Master/Slave 構成~
 PostgreSQLのストリーミングレプリケーション機能を用いてデー
  タを共有し、通常はMaster側でサービスを提供
 Masterサーバ故障時はSlaveサーバがMasterに昇格しサービスを
  継続




                                                                         フェイル
 Master                                             Slave                 オーバ     Master


                                                            故障
           データ                             データ
                                                            発生     データ          データ

 ローカルディスク
        ローカルディスク                                                 ローカルディスク
                                                                        ローカルディスク
  Copyright(c)2013 NTT, Inc. All Rights Reserved.                                      12
レプリケーション構成の高信頼クラスタ 3大機能
                                                                 ①フェイルオーバ

                                                    Master
                                                    故障発生
                                                                                    Master
                                                                        フェイル                 ③
                                                               故障        オーバ
                                                                                             デ
Master 同期設定                                Slave                                             ー
                                                                  古
                                                                DBデータ          DBデータ
                                                                                             タ
                                                                                             の
                                                                                             状
                                                             ②同期・非同期の設定切替                    態
  DBデータ                         DBデータ                                                        管
                                                     Slave                                   理
                                                    故障発生
                                                             Master     非同期設定
                                                                                  故障

                                                                DBデータ
                                                                                古
                                                                               DBデータ



  Copyright(c)2013 NTT, Inc. All Rights Reserved.                                            13
基本構成
                                                                               参照負荷分散用
                                              サービス提供用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
動作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
動作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
動作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
動作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
初期起動と2回目以降の起動の違い
 初期起動 (Pacemakerの設定が空の場合)
 ■ サーバを単独起動した場合、 Pacemaker上にデータの状態が
   記録されていないため、必ずMasterになる
       • ロックファイルが残っている場合は除く
 ■ 同時に2つのサーバ起動した場合、お互いのデータの新旧を
   比較し、新しい方がMasterになる


 2回目以降の起動
 ■ Pacemaker上にデータの状態が記録されているため、
   この状態を確認し、最新のデータを持っている場合のみ
   Masterになれる


 Copyright(c)2013 NTT, Inc. All Rights Reserved.   19
まとめ
 レプリケーション構成の高信頼クラスタ3大機能
 ■ Masterのフェイルオーバ
 ■ レプリケーションの同期・非同期設定の切替
 ■ データの状態管理


 運用時の注意
 ■ TimelineIDがずれている場合はレプリケーション接続できない
 ■ ロックファイルが残っている場合は他のサーバとデータの
   整合性が崩れている可能性あり
   → データを手動で同期して解消



 Copyright(c)2013 NTT, Inc. All Rights Reserved.   20
デモ


Copyright(c)2013 NTT, Inc. All Rights Reserved.        21
デモ環境                                                                           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
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
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
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
                                            レプリケーションの異常切断を防ぐ
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
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
属性値
                                                    用途
                                                    用途
                                                    ・ 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
【デモ】 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
【デモ】 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
【デモ】 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
【デモ】 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
【デモ】 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
【デモ】 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
【デモ】 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
【デモ】 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
【デモ】 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
【デモ】 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
コミュニティの最近の動き
 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
コミュニティの最近の動き
 Pacemaker 1.0.13 (2/13リリース)
  ■ Linux-HA Japan では resource-agents 3.9.5 を同梱し、
    リポジトリパッケージとして4月以降にリリース予定




   Copyright(c)2013 NTT, Inc. All Rights Reserved.   40
動作環境

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
参考
ドキュメントおよび設定例 (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
Question?




Copyright(c)2013 NTT, Inc. All Rights Reserved.               43

More Related Content

What's hot

オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...NTT DATA Technology & Innovation
 
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化kazuhcurry
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)NTT DATA Technology & Innovation
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...ksk_ha
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...NTT DATA Technology & Innovation
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門Akihiro Kuwano
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!NTT DATA Technology & Innovation
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Ken SASAKI
 
Pacemakerを使いこなそう
Pacemakerを使いこなそうPacemakerを使いこなそう
Pacemakerを使いこなそうTakatoshi Matsuo
 
Snowflake Architecture and Performance
Snowflake Architecture and PerformanceSnowflake Architecture and Performance
Snowflake Architecture and PerformanceMineaki Motohashi
 
HA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティスHA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティスEnterpriseDB
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)Hironobu Suzuki
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...NTT DATA Technology & Innovation
 
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)hamaken
 

What's hot (20)

オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
 
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
 
PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
 
Pacemakerを使いこなそう
Pacemakerを使いこなそうPacemakerを使いこなそう
Pacemakerを使いこなそう
 
Snowflake Architecture and Performance
Snowflake Architecture and PerformanceSnowflake Architecture and Performance
Snowflake Architecture and Performance
 
HA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティスHA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティス
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
 

Similar to Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring

PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介
PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介
PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介Masao Fujii
 
初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談Makoto Haruyama
 
Art of MySQL Replication.
Art of MySQL Replication.Art of MySQL Replication.
Art of MySQL Replication.Mikiya Okuno
 
MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012Mikiya Okuno
 
JPUGしくみ+アプリケーション勉強会(第25回)
JPUGしくみ+アプリケーション勉強会(第25回)JPUGしくみ+アプリケーション勉強会(第25回)
JPUGしくみ+アプリケーション勉強会(第25回)Yoshinori Nakanishi
 
#02-01 ZFS によるストレージ仮想化 (2012-04-20)
#02-01 ZFS によるストレージ仮想化 (2012-04-20)#02-01 ZFS によるストレージ仮想化 (2012-04-20)
#02-01 ZFS によるストレージ仮想化 (2012-04-20)SolarisJPNight
 
PostgreSQL V9 レプリケーション解説
PostgreSQL V9 レプリケーション解説PostgreSQL V9 レプリケーション解説
PostgreSQL V9 レプリケーション解説Masao Fujii
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだ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...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 に見る、次世代ファイルシステムZFSSolaris 11 に見る、次世代ファイルシステムZFS
Solaris 11 に見る、次世代ファイルシステムZFSSolarisJP
 
続マスタN対スレーブ1レプリケーションの作り方
続マスタN対スレーブ1レプリケーションの作り方続マスタN対スレーブ1レプリケーションの作り方
続マスタN対スレーブ1レプリケーションの作り方do_aki
 
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
HAクラスタで PostgreSQLレプリケーション構成の 高可用化HAクラスタで PostgreSQLレプリケーション構成の 高可用化
HAクラスタで PostgreSQLレプリケーション構成の 高可用化Takatoshi Matsuo
 
Empressレプリケーション説明資料
Empressレプリケーション説明資料 Empressレプリケーション説明資料
Empressレプリケーション説明資料 ITDORAKU
 
Empressレプリケーション説明資料 2
Empressレプリケーション説明資料 2Empressレプリケーション説明資料 2
Empressレプリケーション説明資料 2ITDORAKU
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システムTomohiro Ohtake
 
Cassandraのバックアップと運用を考える
Cassandraのバックアップと運用を考えるCassandraのバックアップと運用を考える
Cassandraのバックアップと運用を考えるKazutaka Tomita
 
PHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったことPHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったことKentaro Matsui
 
awsを学ぶ上で必要となる前提知識(DB)
awsを学ぶ上で必要となる前提知識(DB)awsを学ぶ上で必要となる前提知識(DB)
awsを学ぶ上で必要となる前提知識(DB)聡 大久保
 
やさしいMatzの作り方
やさしいMatzの作り方やさしいMatzの作り方
やさしいMatzの作り方宏治 高尾
 

Similar to Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring (20)

PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介
PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介
PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介
 
初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談
 
Art of MySQL Replication.
Art of MySQL Replication.Art of MySQL Replication.
Art of MySQL Replication.
 
MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012
 
JPUGしくみ+アプリケーション勉強会(第25回)
JPUGしくみ+アプリケーション勉強会(第25回)JPUGしくみ+アプリケーション勉強会(第25回)
JPUGしくみ+アプリケーション勉強会(第25回)
 
Dsas周りのお話
Dsas周りのお話Dsas周りのお話
Dsas周りのお話
 
#02-01 ZFS によるストレージ仮想化 (2012-04-20)
#02-01 ZFS によるストレージ仮想化 (2012-04-20)#02-01 ZFS によるストレージ仮想化 (2012-04-20)
#02-01 ZFS によるストレージ仮想化 (2012-04-20)
 
PostgreSQL V9 レプリケーション解説
PostgreSQL V9 レプリケーション解説PostgreSQL V9 レプリケーション解説
PostgreSQL V9 レプリケーション解説
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだ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...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 に見る、次世代ファイルシステムZFSSolaris 11 に見る、次世代ファイルシステムZFS
Solaris 11 に見る、次世代ファイルシステムZFS
 
続マスタN対スレーブ1レプリケーションの作り方
続マスタN対スレーブ1レプリケーションの作り方続マスタN対スレーブ1レプリケーションの作り方
続マスタN対スレーブ1レプリケーションの作り方
 
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
HAクラスタで PostgreSQLレプリケーション構成の 高可用化HAクラスタで PostgreSQLレプリケーション構成の 高可用化
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
 
Empressレプリケーション説明資料
Empressレプリケーション説明資料 Empressレプリケーション説明資料
Empressレプリケーション説明資料
 
Empressレプリケーション説明資料 2
Empressレプリケーション説明資料 2Empressレプリケーション説明資料 2
Empressレプリケーション説明資料 2
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
 
Cassandraのバックアップと運用を考える
Cassandraのバックアップと運用を考えるCassandraのバックアップと運用を考える
Cassandraのバックアップと運用を考える
 
PHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったことPHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったこと
 
awsを学ぶ上で必要となる前提知識(DB)
awsを学ぶ上で必要となる前提知識(DB)awsを学ぶ上で必要となる前提知識(DB)
awsを学ぶ上で必要となる前提知識(DB)
 
やさしいMatzの作り方
やさしいMatzの作り方やさしいMatzの作り方
やさしいMatzの作り方
 

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