Top Banner
SRA OSS, Inc. ホワイトペーパー IBM Power Systems (Linux) における PaceMaker/DRBD/PostgreSQL/pgpool-II 動作検証 2011 年 10 月 1 日 SRA OSS,Inc. 日本支社 Copyright © 2011SRA OSS, Inc. Japan All rights reserved.
21

IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール...

May 21, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

SRA OSS, Inc. ホワイトペーパー

IBM Power Systems (Linux) における

PaceMaker/DRBD/PostgreSQL/pgpool-II

動作検証

2011 年 10 月 1 日

SRA OSS,Inc. 日本支社

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

Page 2: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

目次

1 はじめに..................................................................................................................................................3

2 検証環境および検証対象ソフトウェア...................................................................................................3

2.1 検証対象ソフトウェア.................................................................................................................32.2 対象プラットフォーム.................................................................................................................32.3OS 設定.......................................................................................................................................4

3 動作検証項目...........................................................................................................................................4

3.1 サーバ構成................................................................................................................................43.2 検証項目....................................................................................................................................5

3.2.1Linux-HA の動作検証.......................................................................................................53.2.2DRBD の動作検証.............................................................................................................53.2.3 クラスタ構成の動作検証....................................................................................................6

4Linux-HA の動作検証結果.........................................................................................................................6

4.1 ビルド.........................................................................................................................................64.1.1RPM パッケージの作成......................................................................................................64.1.2RPM パッケージのインストール..........................................................................................7

4.2Heartbeat の設定........................................................................................................................74.3 動作検証の実施........................................................................................................................8

4.3.1 リソースの追加...................................................................................................................84.3.2 障害時のフェイルオーバー...............................................................................................9

5DRBD の動作検証...................................................................................................................................10

5.1 ビルド.......................................................................................................................................105.2 デバイス設定...........................................................................................................................105.3 動作確認..................................................................................................................................11

6 クラスタ構成の動作検証.......................................................................................................................12

6.1DB の作成................................................................................................................................126.2pgpool-II の設定.......................................................................................................................126.3Heartbeat の設定......................................................................................................................136.4PostgreSQL のクラスタリング....................................................................................................13

6.4.1 リソース定義.....................................................................................................................136.4.2 正常時のリソース稼動状況.............................................................................................156.4.3 障害時のリソース稼働状況.............................................................................................16

6.5pgpool-II のクラスタリング.........................................................................................................176.5.1pgpool-II むけリソースエージェント..................................................................................176.5.2 リソース定義.....................................................................................................................176.5.3 正常時のリソース稼働状況.............................................................................................186.5.4 障害時のリソース稼働状況.............................................................................................20

7 まとめ....................................................................................................................................................21

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

Page 3: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

1 はじめに

本書は、Power Linux システム上でのクラスタソフトウェアの動作検証結果について報告するもの

です。本動作検証は、Power Linux 上でクラスタ環境を構築可能なことを確認することで、構成選択と

インストール手順の参考にしていただくことを目的としています。本文書の内容は 2011 年 9 月に実施

した検証作業に基づいています。

本文書に記載されている会社名、製品名は各社の商標および登録商標です。個別の商標表記は割愛

させていただいております。

2 検証環境および検証対象ソフトウェア

2.1 検証対象ソフトウェア

オープンソース RDBMS である PostgreSQL とオープンソース多機能ミドルウェア pgpool-II を対象

とし、クラスタソフトウェアには DRBD、Heartbeat、Pacemaker を使用します。詳細バージョンは以

下の通りです。

PostgreSQL 9.0.4

検証時点での PostgreSQL 9.0.x の最新版

pgpool-II 3.0.3

検証時点での pgpool-II 3.0.x の最新版

DRBD 8.3.11

検証時点での DRBD 8.3.x の 最新版

Heartbeat 3.0.5

検証時点での Heartbeat の最新安定版

Pacemaker 1.0.11

検証時点での Pacemaker 1.0.x の最新版

2.2 対象プラットフォーム

IBM Power System 上の Red Hat Enterprise Linux (ppc64) を対象プラットフォームとします。本検

証用に Power 720 Express を使用し、以下の Logical Partition(LPAR)を作成しました。

ホスト名 OS メモリ ディスク

クラスタノード 1 ext611 RHEL6(ppc64) 8GB 214.7GB

クラスタノード 2 ext612 RHEL6(ppc64) 8GB 214.7GB

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

Page 4: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

2.3 OS設定

PostgreSQL やクラスタソフトウェアの動作に必要な以下の設定を行っています。

• 共有メモリの最大サイズ

# sysctl kernel.shmmax=12884901888

• PostgreSQL 動作用ユーザアカウント

# useradd postgres

• postgres ユーザによるパスフレーズ、パスワード入力なしでの ssh 接続

3 動作検証項目

3.1 サーバ構成

 今回の検証では、PostgreSQL と pgpool-II のクラスタリングを検証しました。

 PostgreSQL のクラスタリングでは、Heartbeat と Pacemaker を組み合わせて 2 台のサーバ

(ext611、ext612)にクラスタ環境を構築し、DRBD、仮想 IP アドレス、PostgreSQL を Pacemaker の制

御対象リソースとして定義しました(図 1 参照)。

 

図1: PostgreSQL のクラスタ環境

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

PostgreSQL

DRBD

PacemakerHeartbeat

PacemakerHeartbeat

 データ領域

DRBD

PostgreSQL

死活監視

データの同期

eth2

eth2

【 ext611 】 【 ext612 】

仮想 IP 仮想 IP

eth1 eth1

 データ領域

フェールオーバー

Page 5: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

 そして、pgpool-II のクラスタリングも同様に、Heartbeat と Pacemaker を組み合わせて 2 台のサー

バ(ext611、ext612)にクラスタ環境を構築し、IP アドレス、pgpool-II を Pacemaker の制御対象リソー

スとして定義しました(図 2 参照)。

図2:pgpool-II のクラスタ環境

pgpool-II のクラスタリングは、本来的には、複数の PostgrSQL サーバを束ねる pgpool-II が単一障

害点とならないようにする目的で行われることが多いのですが、ここでは対象の PostgreSQL は一つだ

けとしています。

3.2 検証項目

以下にあげる項目について検証を実施しました。

3.2.1 Linux-HA の動作検証

• ビルド: RPM の作成・インストール

• 動作テスト

◦ リソースの定義

◦ 障害発生時のフェイルオーバー

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

pgpool-II

PacemakerHeartbeat

PacemakerHeartbeat

 データ領域

pgpool-II

PostgreSQL

死活監視

eth2

【 ext611 】 【 ext612 】

仮想 IP 仮想 IP

eth1 eth1

フェールオーバー

Page 6: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

3.2.2 DRBD の動作検証

• ビルド: configure/make/make install

• 動作テスト

◦ プライマリノードとセカンダリノードでのデータ同期

3.2.3 クラスタ構成の動作検証

• PostgreSQL + DRBD + Linux-HA の動作テスト

◦ DRBD、仮想 IP アドレス、PostgreSQL のリソース定義

◦ 正常時のリソース稼動状況

◦ 障害時のリソース稼働状況

• pgpool-II + Linux-HA の動作テスト

◦ 仮想 IP アドレス、pgpool-II のリソース定義

◦ 正常時のリソース稼動状況

◦ 障害時のリソース稼働状況

4 Linux-HA の動作検証結果

4.1 ビルド

4.1.1 RPM パッケージの作成

 Linux-HA Japan から提供されているリポジトリパッケージ(pacemaker-1.0.11-1.2.1.el6.srpm.tar.gz

)を利用して RPM パッケージを作成し、Heartbeat・Pacemaker を導入しました。リポジトリパッ

ケージに含まれる以下のソース RPM を利用しました。

• cluster-glue-1.0.7-1.1.el6.src.rpm

• heartbeat-3.0.5-1.1.el6.src.rpm

• pacemaker-1.0.11-1.2.el6.src.rpm

• pacemaker-mgmt-2.0-1.el6.src.rpm

 cluster-glue-1.0.7-1.el6.src.rpm については、既知のバグ1に対するパッチ2を適用しました。

1 Bug 457641 - glib-2.13.7: C++ conversion problem in gthread.h  https://bugzilla.gnome.org/show_bug.cgi?id=4576412 http://bugzilla-attachments.gnome.org/attachment.cgi?id=158740

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

Page 7: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

 また、RPM パッケージの作成時に以下のパッケージが必要となったため、CD-ROM または Red Hat

CUSTOMER PORTAL より取得し、インストールしました。

e2fsprogs net-snmp-devele2fsprogs-devel net-snmp-libse2fsprogs-libs openhpi-develfile-devel openhpi-libshelp2man OpenIPMIlibcom_err OpenIPMI-devellibcom_err-devel OpenIPMI-libslibibverbs perl-TimeDatelibibverbs-devel postgresqllibmthca postgresql-contriblibrdmacm postgresql-docslibrdmacm-devel postgresql-libslibss postgresql-serverlibtool-ltdl-devel PyXMLlibuuid-devel rpm-devellm_sensors-devel tcp_wrappers-devellm_sensors-libs uuidnet-snmp

4.1.2 RPM パッケージのインストール

 ソース RPM より作成された以下の RPM パッケージをインストールしました。

cluster-glue-1.0.7-1.1.el6.ppc64.rpm libesmtp-devel-1.0.4-5.el6.ppc64.rpmcluster-glue-libs-1.0.7-1.1.el6.ppc64.rpm pacemaker-1.0.11-1.2.el6.ppc64.rpmcluster-glue-libs-devel-1.0.7-1.1.el6.ppc64.rpm pacemaker-libs-1.0.11-1.2.el6.ppc64.rpm

heartbeat-3.0.5-1.1.el6.ppc64.rpm pacemaker-libs-devel-1.0.11-1.2.el6.ppc64.rpm

heartbeat-devel-3.0.5-1.1.el6.ppc64.rpm pacemaker-mgmt-2.0-1.el6.ppc64.rpm

heartbeat-libs-3.0.5-1.1.el6.ppc64.rpm pacemaker-mgmt-client-2.0-1.el6.ppc64.rpm

ldirectord-3.9.2-1.1.el6.ppc64.rpm pacemaker-mgmt-devel-2.0-1.el6.ppc64.rpm

libesmtp-1.0.4-5.el6.ppc64.rpm resource-agents-3.9.2-1.1.el6.ppc64.rpm

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

Page 8: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

4.2 Heartbeatの設定

 設定ファイル ha.cf と認証用キーファイル authkeys を作成しました。(ext611・ext612 にて実施)

# vi /etc/ha.d/ha.cf pacemaker on logfacility local1

debug 0 udpport 694

keepalive 2 warntime 20 deadtime 24 initdead 48

bcast eth1

node ext611 node ext612

watchdog /dev/watchdog

# vi /etc/ha.d/authkeys auth 1 1 sha1 ppckey

4.3 動作検証の実施

4.3.1 リソースの追加

 Dummy リソースと IP リソースを追加して、それらが適切に稼動することを確認しました。

 以下に作業手順を示します。(カッコ内は作業対象のマシンを表します)

1. Heartbeat の起動 (ext611・ext612)

# service heartbeat start

2. リソースの追加 (ext611)

# crmcrm(live)# configurecrm(live)configure#

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

Page 9: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

crm(live)configure# primitive dummy-resource ocf:pacemaker:Dummy \> op start interval="0s" timeout="90s" \> op monitor interval="3s" timeout"20s" \> op stop interval="0s" timeout="100s"crm(live)configure# primitive ip_resource ocf:heartbeat:IPaddr2 \> params ip=133.137.177.10crm(live)configure# commitcrm(live)configure# property $id="cib-bootstrap-options" \> stonith-enabled="false" \> no-quorum-policy="ignore"crm(live)configure# commitcrm(live)exit

3. リソースの稼働状況の確認 (ext611)

# crm_mon============Last updated: Thu Jul 28 17:39:33 2011Stack: HeartbeatCurrent DC: ext611 (2bf6bddd-3adb-4d80-8c04-ea6c5bc0d90e) - partition with quorumVersion: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee872 Nodes configured, unknown expected votes2 Resources configured.============

Online: [ ext611 ext612 ]

dummy-resource (ocf::pacemaker:Dummy): Started ext611ip_resource (ocf::heartbeat:IPaddr2): Started ext612

# ping 133.137.177.10PING 133.137.177.10 (133.137.177.10) 56(84) bytes of data.64 bytes from 133.137.177.10: icmp_seq=1 ttl=64 time=0.028 ms64 bytes from 133.137.177.10: icmp_seq=2 ttl=64 time=0.017 ms64 bytes from 133.137.177.10: icmp_seq=3 ttl=64 time=0.015 ms

4.3.2 障害時のフェイルオーバー

 クラスタノードに障害(ext611 の電源を落としすことで代用)が発生した場合、もう一方のノードに

フェイルオーバーすることを確認しました。

 以下に作業手順を示します。(カッコ内は作業対象のマシンを表します)

1. サーバの電源断 (ext611)

2. リソースの稼働状況の確認 (ext612)

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

Page 10: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

# crm_mon============Last updated: Thu Jul 28 18:05:27 2011Stack: HeartbeatCurrent DC: ext612 (a1d6ab3c-d06f-4aa1-a17a-972bf960d6b5) - partition with quorumVersion: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee872 Nodes configured, unknown expected votes2 Resources configured.============

Online: [ ext612 ]OFFLINE: [ ext611 ]

dummy-resource (ocf::pacemaker:Dummy): Started ext612ip_resource (ocf::heartbeat:IPaddr2): Started ext612

# ping 133.137.177.10PING 133.137.177.10 (133.137.177.10) 56(84) bytes of data.64 bytes from 133.137.177.10: icmp_seq=1 ttl=64 time=0.028 ms64 bytes from 133.137.177.10: icmp_seq=2 ttl=64 time=0.017 ms64 bytes from 133.137.177.10: icmp_seq=3 ttl=64 time=0.015 ms

5 DRBD の動作検証

5.1 ビルド

 LINBIT 社から公開されているソースコードだけでは、DRBD が正常に動作しなかったので、IBM殿

から提供して頂いたパッチ(bitops.h.diff)を適用しました。

 以下に作業手順を示します。(ext611・ext612 にて実施)

# lsbitops.h.diff# wget http://oss.linbit.com/drbd/8.3/drbd-8.3.11.tar.gz# tar zxvf drdb-8.3.11.tar.gz# cd drbd-8.3.11# patch -p0 < ../bitops.h.diff# ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --with-km –with-xen=no# make# make install

5.2 デバイス設定

 DRBD の下位デバイスとして、LVM の論理ボリュームを使用しました。

 以下に作業手順を示します。(ext611・ext612 にて実施)

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

Page 11: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

# vi /etc/drbd.d/r0.resresource r0 { protocol C; on ext611 { device minor 0; disk /dev/mapper/vg_lpar1-lv_home; meta-disk internal; address 192.168.40.2:7788; } on ext612 { device minor 0; disk /dev/mapper/vg_lpar5-lv_home; meta-disk internal; address 192.168.40.3:7788; }}

5.3 動作確認

 ext611 をプライマリノードにして初期データの同期を行った後、適当なファイルを作成し、セカン

ダリノードでそのファイルが参照できることを確認しました。

 以下の作業手順を示します。(カッコ内は作業対象のマシンを表します)

1. カーネルモジュールのロード (ext611・ext612)

# modprobe drbd# lsmod | grep drbddrbd 416441 0# cat /proc/drbdversion: 8.3.11 (api:88/proto:86-96)GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by root@ext611, 2011-07-14 16:46:10

2. DRBD の起動 (ext611・ext612)

# drbdadm up r0

3. 初期同期 (ext611)

# drbdadm -- --overwrite-data-of-peer primary r0# drbd-overview  0:r0 SyncSource Primary/Secondary UpToDate/Inconsistent C r----- [===================>] sync'ed:100.0% (0/142908)M

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

Page 12: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

4. ファイルシステムの作成 (ext611)

# mkfs.ext4 /dev/drbd0# mkdir /mnt/drbd0# mount /dev/drbd0 /mnt/drbd0# ls /mnt/drbd0 lost+found

5. 同期確認 (ext611・ext612)

// ext611 で実行# echo test > /mnt/drbd0/test# umount /mnt/drbd0# drbdadm secondary r0

// ext612 で実行# drbdadm primary r0# mount /dev/drbd0 /mnt/drbd0# cat /mnt/drbd0/testtest

 

6 クラスタ構成の動作検証

6.1 DBの作成

 DRBD のプライマリノーにおいて、データベースクラスタを作成し、クライアントからの接続に関

わる設定のみ変更し、それ以外はデフォルトとしました。

# mkdir /mnt/drbd0/pg90# chown postgres:postgres /mnt/drbd0/pg90# su - postgres$ initdb -D /mnt/drbd0/pg90/data --no-locale --encoding=UTF-8$ vi /mnt/drbd0/pg90/data/postgresql.conf listen_address = '*'$ vi /mnt/drbd0/pg90/data/pg_hba.conf host all all 133.137.176.0/23 trust$ mkdir -p 700 /mnt/drbd0/pg90/data/pg_log

6.2 pgpool-IIの設定

 ext611、ext612 の両ノードにおいて、以下の通りに pgpool-II を設定しました。コネクションプーリ

ングに必要なパラメータのみを設定し、それ以外はデフォルトとしました。

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

Page 13: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

$ pg_md5 <スーパーユーザのパスワード>5f4dcc3b5aa765d61d8327deb882cf99$ vi pcp.conf postgres:5f4dcc3b5aa765d61d8327deb882cf99$ cp <pgpool-IIのインストール先>/etc/pgpool.conf.sample pgpool.conf$ vi pgpool.conf listen_addresses = '*' health_check_user = 'postgres' backend_hostname0 = 'ext612.sra.co.jp' backend_port0 = 5432 backend_weight0 = 1 backend_data_directory0 = '/mnt/drbd0/pg90/data'$ vi pool_hba.conf host all all 133.137.176.0/23 trust

6.3 Heartbeatの設定

 ext611、ext612 の両ノードにおいて、以下の通りに Heartbeat を設定しました。

# vi /etc/ha.d/ha.cf crm on ucast eth2 192.168.140.2 ucast eth2 192.168.140.3 auto_failback on node ext611 node ext612 ping 133.137.160.16 respawn root /usr/lib64/heartbeat/pingd -m 100 -a pingd

6.4 PostgreSQLのクラスタリング

6.4.1 リソース定義

 DRBD、仮想 IP アドレス、PostgreSQL をそれぞれリソースとして定義しました。DRBD は ext611

をプライマリノードとし、仮想 IP アドレスと PostgreSQL はグループ化した上で、DRBD と同一マシ

ンで動作するようにしました。

 以下にリソース定義ファイル(crm-config.txt)の内容を示します。

property \ stonith-enabled="false"

# DRBDの設定

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

Page 14: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

primitive drbd0 ocf:linbit:drbd \ params \ drbd_resource="r0" \ op monitor role="Master" interval="60s" timeout="30s" \ op monitor role="Slave" interval="60s" timeout="30s" \ op start timeout="240s" \ op stop timeout="100s"

# DRBDのスプリットブレイン防止ms ms_drbd0 drbd0 \ meta master-max="1" master-node-max="1" clone-max="2" \ clone-node-max="1" notify="true" is-managed="true" \ target-role="Started"

# DRBDのプライマリ設定location ms_drbd0_master ms_drbd0 rule role="Master" 100: \#uname eq ext611

# DRBDデバイスのマウント設定primitive mnt_drbd0 ocf:heartbeat:Filesystem \ params \ fstype="ext4" \ directory="/mnt/drbd0" \ device="/dev/drbd0" \ op monitor timeout="40s" interval="40s" \ op start timeout="60s" \ op stop timeout="60s"

# 仮想 IPの設定primitive ipaddr ocf:heartbeat:IPaddr2 \ params \ nic="eth1" \ ip="133.137.176.217" \ cidr_netmask="23" \ op start timeout="90" start_delay="0" \ op stop timeout="100" start_delay="0" \ op monitor timeout="20" start_delay="1" interval="5" on_fail="restart" \ meta migration-threshold="3"

# PostgreSQLの設定primitive pgsql ocf:heartbeat:pgsql \ params \ pgctl="/usr/local/pg90/bin/pg_ctl" \ ctl_opt="-w" \ psql="/usr/local/pg90/bin/psql" \ pgdata="/mnt/drbd0/pg90/data" \ logfile="/mnt/drbd0/pg90/data/pg_log/postgresql.log" \ op start timeout="120s" \ op stop timeout="120s"

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

Page 15: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

# グループ設定group group1 ipaddr mnt_drbd0 pgsql \ meta is-managed="true" target-role="Started"

# グループ 1の起動条件 (DRBDのプライマリ側でグループ 1を起動)colocation colocation1 inf: group1 ms_drbd0:Master

# リソースの起動順序order Order1 0: ms_drbd0:promote group1:start

6.4.2 正常時のリソース稼動状況

 Heartbeat の起動直後は、DRBD のプライマリノードである ext611 上で各リソースが起動されてい

ることを確認しました。また、pgbench を実行して、PostgreSQL が正常に利用できることを確認しま

した。

 以下に作業手順を示します。(カッコ内は作業対象のノードを表します)

1. Heartbeat の起動 (ext611・ext612)

# service heartbeat start

2. Pacemaker のリソース追加 (ext611)

# crm configure < crm-config.txt# crm_mon -i 5============Last updated: Mon Sep 12 15:46:22 2011Stack: HeartbeatCurrent DC: ext612 (a1d6ab3c-d06f-4aa1-a17a-972bf960d6b5) - partition with quorumVersion: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee872 Nodes configured, unknown expected votes2 Resources configured.============

Online: [ ext611 ext612 ]

Master/Slave Set: ms_drbd0 Masters: [ ext611 ] Slaves: [ ext612 ]Resource Group: group1 ipaddr (ocf::heartbeat:IPaddr2): Started ext611 mnt_drbd0 (ocf::heartbeat:Filesystem): Started ext611 pgsql (ocf::heartbeat:pgsql): Started ext611

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

Page 16: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

3. アクティブノードでのリソース稼動状況の確認 (ext611)

# drbd-overview 0:r0 Connected Primary/Secondary UpToDate/UpToDate C r----- /mnt/drbd0 ext4 138G 220M 131G 1%# ip addr show eth1 | grep 133.137.176.217 inet 133.137.176.217/23 brd 133.137.177.255 scope global secondary eth1# pstree | grep postgres |-postgres---4*[postgres]

4. スタンバイノードでのリソース稼働状況の確認 (ext612)

# drbd-overview 0:r0 Connected Secondary/Primary UpToDate/UpToDate C r-----# ip addr show eth1 | grep 133.137.176.217# pstree | grep postgres

5. pgbench の実行 (ext611)

# su - postgres$ export PGHOST=133.137.176.217$ /usr/local/pg90/bin/pgbench -i$ /usr/local/pg90/bin/pgbench -c 10 -t 1000$ psqlpsql (9.0.4)Type "help" for help.

postgres=# SELECT COUNT(*) FROM pgbench_accounts; count-------- 100000(1 row)

6.4.3 障害時のリソース稼働状況

 アクティブノードに障害(Heartbeat の停止で代用)が発生した場合に、スタンバイノードにフェイル

オーバーし、継続して PostgreSQL が利用できることを確認しました。

 以下に作業手順を示します。(カッコ内は作業対象のマシンを表します)

1. アクティブノードの Heartbeat を停止 (ext611)

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

Page 17: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

# service heartbeat stopStopping High-Availability services: Done

2. リソース稼働状況の確認 (ext611)

# drbd-overview 0:r0 Unconfigured . . . .# ip addr show eth1 | grep 133.137.176.217# pstree | grep postgres

3. リソース稼働状況の確認 (ext612)

# drbd-overview 0:r0 WFConnection Primary/Unknown UpToDate/DUnknown C r----- /mnt/drbd0 ext4 138G 220M 131G 1%# ip addr show eth1 | grep 133.137.176.217 inet 133.137.176.217/23 brd 133.137.177.255 scope global secondary eth1# pstree | grep postgres |-postgres---4*[postgres]

4. PostgreSQL の動作確認 (ext611)

# su - postgres $ export PGHOST=133.137.176.217 # psql psql (9.0.4) Type "help" for help.

postgres=# SELECT COUNT(*) FROM pgbench_accounts; count -------- 100000 (1 row)

6.5 pgpool-IIのクラスタリング

6.5.1 pgpool-II むけリソースエージェント

pgpool-II 用の RA(リソースエージェント)は、「pgpool-ha」という名前で pgFoundry サイトで

pgpool プロジェクトの一部として配布されています(http://pgfoundry.org/projects/pgpool/)。これを

インストールしました。

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

Page 18: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

(psql、pgpool にパスを通した状態で実行)

$ ./configure

$ cd src ; make

$ sudo make install

6.5.2 リソース定義

 仮想 IP アドレス、pgpool-II をリソースとして定義しました。仮想 IP アドレスと pgpool はグループ

化した上で、初期状態では ext611 で稼動させるようにしました。

property \ stonith-enabled=”false”

primitive ipaddr ocf:heartbeat:IPaddr2 \ params \ nic=”eth1” \ ip=”133.137.176.217” \ cidr_netmask=”23” \ op start timeout=”90” start_delay=”0” \ op stop timeout=”100” start_delay=”0” \ op monitor timeout=”20” start_delay=”1” interval=”5” on_fail=”restart” \ meta migration-threashold=”3”

primitive pgpool2 ocf:heartbeat:pgpool \ params \ pgpoolconf=”pgpool.confのパス” \ pcpconf=”pcp.confのパス” \ hbaconf=”pool_hba.confのパス” \ pidfile=”PIDファイルのパス” \ pgpooluser=”postgres” \ op start timeout=”20” start_delay=”0” \ op stop timeout=”20” start_delay=”0” \ op monitor timeout=”20” start_delay=”60” interval=”10” on_fail=”restart” \ meta migration-threshold=”3”

group group_pgpool2 ipaddr pgpool2

location location_group_pgpool2 group_pgpool2 inf: ext611

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

Page 19: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

6.5.3 正常時のリソース稼働状況

 Heartbeat の起動直後は、ext611 上で各リソースが起動されていることを確認しました。また、

pgbench を実行して、pgpool-II および PostgreSQL が正常に利用できることを確認しました。

 以下に作業手順を示します。(カッコ内は作業対象のノードを表します)

1. Heartbeat の起動 (ext611・ext612)

# service heartbeat start

2. Pacemaker のリソース追加 (ext611)

# crm configure < crm-config.txt# crm_mon -i 5============Last updated: Tue Sep 27 15:36:46 2011Stack: HeartbeatCurrent DC: ext612 (a1d6ab3c-d06f-4aa1-a17a-972bf960d6b5) - partition with quorumVersion: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee872 Nodes configured, unknown expected votes1 Resources configured.============

Online: [ ext611 ext612 ]

Resource Group: group_pgpool2 ipaddr (ocf::heartbeat:IPaddr2): Started ext611 pgpool2 (ocf::heartbeat:pgpool): Started ext611

3. アクティブノードでのリソース稼働状況の確認 (ext611)

# ip addr show eth1 | grep 133.137.176.217 inet 133.137.176.217/23 brd 133.137.177.255 scope global secondary eth1# pstree | grep postgres |-postgres---4*[postgres]# pstree | grep pgpool |-pgpool---34*[pgpool]

4. スタンバイノードでのリソース稼働状況の確認 (ext612)

# ip addr show eth1 | grep 133.137.176.217# pstree | grep postgres# pstree | grep pgpool

5. pgbench の実行 (ext611)

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

Page 20: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

# su – postgres$ export PGHOST=133.137.176.217$ export PGPORT=9999$ pgbench -i$ pgbench -c 10 -t 1000$ psqlpsql (9.0.4)Type "help" for help.

postgres=# SELECT COUNT(*) FROM pgbench_accounts; count-------- 100000(1 row)

6.5.4 障害時のリソース稼働状況

 アクティブノードに障害(Heartbeat の停止で代用)が発生した場合に、スタンバイノードにフェイ

ルオーバーし、継続して pgpool および PostgreSQL が利用できることを確認しました。

 以下に作業手順を示します。(カッコ内は作業対象のマシンを表します)

1. アクティブノードの Heartbeat を停止 (ext611)

# service heartbeat stopStopping High-Availability services: Done.

2. リソースの稼働状況の確認 (ext611)

# ip addr show eth1 | grep 133.137.176.217# pstree | grep pgpool

3. リソースの稼働状況の確認 (ext612)

# ip addr show eth1 | grep 133.137.176.217 inet 133.137.176.217/23 brd 133.137.177.255 scope global secondary eth1# pstree | grep pgpool |-pgpool---34*[pgpool]

4. PostgreSQL の動作確認 (ext611)

# su – postgres$ export PGHOST=133.137.176.217$ export PGPORT=9999$ psql

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

Page 21: IBM Power Systems (Linux) における …...lm_sensors-devel tcp_wrappers-devel lm_sensors-libs uuid net-snmp 4.1.2 RPMパッケージのインストール ソースRPMより作成された以下のRPMパッケージをインストールしました。cluster-glue-1.0.7-1.1.el6.ppc64.rpm

psql (9.0.4)Type "help" for help.

postgres=# SELECT COUNT(*) FROM pgbench_accounts; count-------- 100000(1 row)

7 まとめ

 Power System 上の Red Hat Enterprise Linux 6 (ppc64) で PostgreSQL と Linux-HA + DRBD の簡単

な動作検証を行いました。その結果、期待される通りの動作を確認できました。同様に、pgpool-II と

Linux-HA の動作検証についても、期待される通りの動作を確認できました。

 DRBD については、ソースコードへのパッチの適用が必要でしたが、それ以外については、ppc64

での固有の問題や、他アーキテクチャと比較して、設定や手順に特に差異はありませんでした。

 なお、本検証で作成し、動作確認をした rpm ファイルは SRA OSS, Inc. 日本支社の Web サイトで公

開しています。

http://www.sraoss.co.jp/prod_serv/support/pgsql-mainte-packages.php

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