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

Similar documents
3 検証結果 3.1 ソフトウェアのインストール Red Hat Enterprise Linux 5.7 は最小構成でインストールし 最新バージョンにアップデートした Thirdware Linux-HA を構成するパッケージ (DRBD Heartbeat Pacemaker) は LINBIT

100123SLES11HA.pptx

目次 1 はじめに 利用ソフトウェア 用語について 本書について SoftLayer 構成 構成図 OS/ ソフトウェア情報 SoftLayer 環境 SoftLayer 設定

Microsoft Word - HAクラスタ構築手順書.doc

目次 1 はじめに 対象読者 想定するサーバ環境 注意事項 OS 環境の準備 CentOS 6.2 のインストールと初期設定 Thirdware Linux-HA クラスタスタックのインストール...2 RH

挑戦!Pacemakerで自由自在にHAクラスタリング

まずは、Pacemakerを使ってみよう!

Pacemaker + KVMで仮想化クラスタリング ~仮想化連携機能のご紹介~ OSC2011Tokyo/Fall

別紙 : 検証環境の構築手順 ( 章 ) 1. サーバ設定 1.1 IP アドレス設定 サーバは以下の 6 台を用いる pgpool-ii サーバ 2 台 DB サーバ 3 台 上位サーバ 1 台 OS は全サーバで CentOS 6.4 x86_64 とする pgpool-ii のサー

Pacemakerでかんたんクラスタリング体験してみよう

HAクラスタで PostgreSQLを高可用化 (後編) ~ レプリケーション編 ~

自己紹介 名前 所属 飯田雄介 ( いいだゆうすけ ) 主な活動 Linux-HA Japan プロジェクト Pacemaker 本体の機能改善や 外部ツールの開発を行っています Linux-HA Japan から pm_logconv や pm_crmgen といったツールを提供しています 2

はじめに どのような人に聞いてほしいか PostgreSQLを使っている人 PostgreSQLの可用性を上げたいと思っている人 可用性構成は難しそうだと思っている人 とりあえずPostgreSQLの高可用性構成を構築する手順 について説明 とりあえず 細かいことは置いておく スプリットブレイン S

実演!Pacemakerで楽々クラスタリング

目次 Pacemaker ってなに? Pacemaker の設定とは? Pacemaker のリソース設定 リソース定義 パラメータ設定 リソース種類選択 リソース制約 クラスタ設定 さいごに Linux-HA Japan の紹介 Linux-HA Japan Project 2

HAクラスタで PostgreSQLを高可用化 (後編) ~ レプリケーション編 ~

Microsoft Word - qtsi_120246jp_rhev.doc

HAクラスタをフェイルオーバ失敗から救おう!

PostgreSQLによる データベースサーバ構築技法

アジェンダ はクラウド上でも十分使えます 1. の概要 とは の導入事例 で利用される構成 2. をクラウドで使う クラウドサービスの分類 Amazon Web Services による構成例 2

実演!Pacemakerで楽々クラスタリング OSC2011Tokyo/Spring

OpenAM 9.5 インストールガイド オープンソース ソリューション テクノロジ ( 株 ) 更新日 : 2013 年 7 月 19 日 リビジョン : 1.8

スライド 0

Microsoft iSCSI Software Targetを使用したクラスタへの共有ディスク・リソースの提供

スライド 1

SIOS Protection Suite for Linux v9.3.2 AWS Direct Connect 接続クイックスタートガイド 2019 年 4 月

はじめに どのような人に聞いてほしいか PostgreSQLを使っている人 PostgreSQLの可用性を上げたいと思っている人 可用性構成は難しそうだと思っている人 PostgreSQLの高可用性構成の構築手順を説明 インストールについては概要だけにしておく とりあえず 細かいことは置いておく 4

PGECons技術ドキュメントテンプレート Ver.3

アジェンダ クラスタリングとは 今回の構成 DRBD Zabbix 等の構成ソフトウェア Zabbix2.0 新機能 構築方法 バックアップについて 参考資料 2

Microsoft Word - nvsi_050090jp_oracle10g_vlm.doc

ロードバランサー配下のシボレス IdP 環境設定に関する検証実験 2009 年 12 月 22 日国立情報学研究所学術ネットワーク研究開発センター山地一禎, 中村素典

HeartCoreインストールマニュアル

Microsoft Word - nvsi_060132jp_datadomain_restoreDRAFT4.doc

Zabbix で PostgreSQL を監視! pg_monz のご紹介 Zabbix Conference Japan 年 11 月 20 日 SRA OSS, Inc. 日本支社マーケティング部

LifeKeeperサポートへの問い合わせ

Red Hat Enterprise Linux 6 Portable SUSE Linux Enterprise Server 9 Portable SUSE Linux Enterprise Server 10 Portable SUSE Linux Enterprise Server 11 P

Microsoft Word - nvsi_090200jp_r1_nvbsvr_mscs.doc

Heartbeat + Xenで仮想化クラスタリングしてみよう!

PowerGres on Linuxマニュアル

FUJITSU Software Systemwalker Centric Manager Lite Edition V13.5 機能紹介資料

Red Hat OpenShift上でのInterstage Application Serverの動作手順(Java EE 7編)

Red Hat OpenShift上でのInterstage Application Serverの動作手順(Java EE 6編)

install

自己紹介 長田悠吾 ( ナガタユウゴ ) SRA OSS, Inc. 日本支社 マーケティング部 OSS 技術グループ pgpool-ii 開発者 PostgreSQL 関連の技術調査 OSS の技術サポート PostgreSQL の開発にも参加 Copyright 2015 SRA OSS, In

PowerPoint プレゼンテーション

CLUSTERPRO MC StorageSaver 2.2 for Linux リリースメモ 2017(Apr) NEC Corporation ライセンス パッケージのインストール セットアップ マニュアル 補足事項 注意事項

目次 1. はじめに 本文書の目的 前提条件 略語 事前準備 ホスト名の名前解決 Linux 版パッケージ システム要件 ソフトウェア要件 パッケージ構成

目次 1. 動作環境チェック 動作必要環境 Java のインストール Java のインストール Firebird のインストール Firebird のインストール Adobe Reader のインストール

SLAMD導入手順

HAクラスタで PostgreSQLを高可用化 (後編) ~ レプリケーション編 ~

BMR for NVBU NIC bnx2.ko SVR/CLNT 上での SCSI megaraid_sas.ko 自動認識デバイス Partition 構成 (RHEL6.0 uefi/lvm 構成の場合 ) Partition1 /boot/efi EFI 200MB Partition2 /

Pacemakerでお手軽Dockerクラスタリング!

<MW-400k > InterSec/MW400k アップデート適用手順書 2017 年 8 月 1 版

SVN UUID の不一致と SVN のデータ同期

Microsoft Word - D JP.docx

Microsoft Word - nvsi_080177jp_trendmicro_bakbone.doc

CLUSTERPRO for Linux PostgreSQL HowTo

クラスタ構築手順書

3.2 Linux root vi(vim) vi emacs emacs 4 Linux Kernel Linux Git 4.1 Git Git Linux Linux Linus Fedora root yum install global(debian Ubuntu apt-get inst

Linux ドライバのインストール

HeartCoreインストールマニュアル(PHP版)

UCS M シリーズ サーバでの Redhat/CentOS オペレーティング システムのインストール

はじめに 本書は Express5800/ft サーバに Red Hat Enterprise Linux 6 Server 及び ft Server Control Software がインストールされており OS がインストールされている内蔵ディス クに空き容量がある場合に 追加でボリュームを作

DHCPサーバのクラスタ化

Installation Guide for Linux

はじめに 1. 概要本書では SuitePRO V3 にて提供している迷惑メールフィルタのバージョンアップ手順について案内しています なお この手順につきましては 迷惑メールフィルタ機能について オンラインマニュアルの内容通りに設定されていることを前提条件とします

pgpool-ii で PostgreSQL のクラスタを楽々運用しよう OSC Tokyo 2014/12/12 SRA OSS, Inc. 日本支社マーケティング部 OSS 技術グループ 長田 悠吾

A : kerl kerl Erlang/OTP Erlang/OTP 2 2 Elixir/Phoenix URL 2 PDF A.2 Bash macos.bash_profile exp

付録

Microsoft Word - nvsi_080188jp_r1_netvault_oracle_rac_backup_complemental_guide_j_174x217.doc

FLORA gd500/HA8000-bd Linux電源制御

HeartCore(PHP 版 ) インストール手順について説明いたします なお 本資料は 例として下記内容を前提として説明しております 環境情報 対象 OS: Linux ( ディストリビューション : Red Hat Enterprise Linux Server) APサーバ : Apache

Microsoft PowerPoint - 【3.TSA & UDB + HADR編】 Linux on zSeries 環境における DB2 クラスター機能検証報告書.ppt

CLUSTERPRO MC StorageSaver istorage M シリーズ使用時の設定手順 (HP-UX 版 Linux 版 Windows 版 ) 2013(Apr) NEC Corporation istorage M シリーズを使用する場合の StorageSaver 設定手順 (H

スライド 1

HAクラスタでPostgreSQLを高可用化(前編)

Microsoft Word - nvsi_100222jp_oracle_exadata.doc

アプリケーションサーバ JBoss超入門

PowerGres on Linuxマニュアル

Microsoft Windows Internet Explorer は 米国 Microsoft Corporation の 米国およびその他の国における登録商標または商標です Linux は Linus Torvalds 氏の日本およびその他の国における登録商標または商標です Red Hat

Transcription:

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

目次 1 はじめに...3 2 検証環境および検証対象ソフトウェア...3 2.1 検証対象ソフトウェア...3 2.2 対象プラットフォーム...3 2.3OS 設定...4 3 動作検証項目...4 3.1 サーバ構成...4 3.2 検証項目...5 3.2.1Linux-HA の動作検証...5 3.2.2DRBD の動作検証...5 3.2.3 クラスタ構成の動作検証...6 4Linux-HA の動作検証結果...6 4.1 ビルド...6 4.1.1RPM パッケージの作成...6 4.1.2RPM パッケージのインストール...7 4.2Heartbeat の設定...7 4.3 動作検証の実施...8 4.3.1 リソースの追加...8 4.3.2 障害時のフェイルオーバー...9 5DRBD の動作検証...10 5.1 ビルド...10 5.2 デバイス設定...10 5.3 動作確認...11 6 クラスタ構成の動作検証...12 6.1DB の作成...12 6.2pgpool-II の設定...12 6.3Heartbeat の設定...13 6.4PostgreSQL のクラスタリング...13 6.4.1 リソース定義...13 6.4.2 正常時のリソース稼動状況...15 6.4.3 障害時のリソース稼働状況...16 6.5pgpool-II のクラスタリング...17 6.5.1pgpool-II むけリソースエージェント...17 6.5.2 リソース定義...17 6.5.3 正常時のリソース稼働状況...18 6.5.4 障害時のリソース稼働状況...20 7 まとめ...21

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

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 参照 ) ext611 eth1 ext612 eth1 仮想 IP PostgreSQL DRBD Pacemaker Heartbeat データの同期 eth2 死活監視 eth2 仮想 IP PostgreSQL DRBD Pacemaker Heartbeat フェールオーバー データ領域 データ領域 図 1: PostgreSQL のクラスタ環境

そして pgpool-ii のクラスタリングも同様に Heartbeat と Pacemaker を組み合わせて 2 台のサー バ (ext611 ext612) にクラスタ環境を構築し IP アドレス pgpool-ii を Pacemaker の制御対象リソー スとして定義しました ( 図 2 参照 ) ext611 eth1 ext612 eth1 仮想 IP pgpool-ii Pacemaker Heartbeat PostgreSQL 死活監視 eth2 仮想 IP pgpool-ii Pacemaker Heartbeat フェールオーバー データ領域 図 2:pgpool-II のクラスタ環境 pgpool-ii のクラスタリングは 本来的には 複数の PostgrSQL サーバを束ねる pgpool-ii が単一障 害点とならないようにする目的で行われることが多いのですが ここでは対象の PostgreSQL は一つだ けとしています 3.2 検証項目 以下にあげる項目について検証を実施しました 3.2.1 Linux-HA の動作検証 ビルド : 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=457641 2 http://bugzilla-attachments.gnome.org/attachment.cgi?id=158740

また RPM パッケージの作成時に以下のパッケージが必要となったため CD-ROM または Red Hat CUSTOMER PORTAL より取得し インストールしました e2fsprogs e2fsprogs-devel e2fsprogs-libs file-devel help2man libcom_err libcom_err-devel libibverbs libibverbs-devel libmthca librdmacm librdmacm-devel libss libtool-ltdl-devel libuuid-devel lm_sensors-devel lm_sensors-libs net-snmp net-snmp-devel net-snmp-libs openhpi-devel openhpi-libs OpenIPMI OpenIPMI-devel OpenIPMI-libs perl-timedate postgresql postgresql-contrib postgresql-docs postgresql-libs postgresql-server PyXML rpm-devel tcp_wrappers-devel uuid 4.1.2 RPM パッケージのインストール ソース RPM より作成された以下の RPM パッケージをインストールしました cluster-glue-1.0.7-1.1.el6.ppc64.rpm cluster-glue-libs-1.0.7-1.1.el6.ppc64.rpm cluster-glue-libs-devel-1.0.7-1.1.el6.ppc64.rpm heartbeat-3.0.5-1.1.el6.ppc64.rpm heartbeat-devel-3.0.5-1.1.el6.ppc64.rpm heartbeat-libs-3.0.5-1.1.el6.ppc64.rpm ldirectord-3.9.2-1.1.el6.ppc64.rpm libesmtp-1.0.4-5.el6.ppc64.rpm libesmtp-devel-1.0.4-5.el6.ppc64.rpm pacemaker-1.0.11-1.2.el6.ppc64.rpm pacemaker-libs-1.0.11-1.2.el6.ppc64.rpm pacemaker-libs-devel-1.0.11-1.2.el6.ppc64.rpm pacemaker-mgmt-2.0-1.el6.ppc64.rpm pacemaker-mgmt-client-2.0-1.el6.ppc64.rpm pacemaker-mgmt-devel-2.0-1.el6.ppc64.rpm resource-agents-3.9.2-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) # crm crm(live)# configure crm(live)configure#

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.10 crm(live)configure# commit crm(live)configure# property $id="cib-bootstrap-options" \ > stonith-enabled="false" \ > no-quorum-policy="ignore" crm(live)configure# commit crm(live)exit 3. リソースの稼働状況の確認 (ext611) # crm_mon ============ Last updated: Thu Jul 28 17:39:33 2011 Stack: Heartbeat Current DC: ext611 (2bf6bddd-3adb-4d80-8c04-ea6c5bc0d90e) - partition with quorum Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87 2 Nodes configured, unknown expected votes 2 Resources configured. ============ Online: [ ext611 ext612 ] dummy-resource (ocf::pacemaker:dummy): Started ext611 ip_resource (ocf::heartbeat:ipaddr2): Started ext612 # ping 133.137.177.10 PING 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 ms 64 bytes from 133.137.177.10: icmp_seq=2 ttl=64 time=0.017 ms 64 bytes from 133.137.177.10: icmp_seq=3 ttl=64 time=0.015 ms 4.3.2 障害時のフェイルオーバー クラスタノードに障害 (ext611 の電源を落としすことで代用 ) が発生した場合 もう一方のノードにフェイルオーバーすることを確認しました 以下に作業手順を示します ( カッコ内は作業対象のマシンを表します ) 1. サーバの電源断 (ext611) 2. リソースの稼働状況の確認 (ext612)

# crm_mon ============ Last updated: Thu Jul 28 18:05:27 2011 Stack: Heartbeat Current DC: ext612 (a1d6ab3c-d06f-4aa1-a17a-972bf960d6b5) - partition with quorum Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87 2 Nodes configured, unknown expected votes 2 Resources configured. ============ Online: [ ext612 ] OFFLINE: [ ext611 ] dummy-resource (ocf::pacemaker:dummy): Started ext612 ip_resource (ocf::heartbeat:ipaddr2): Started ext612 # ping 133.137.177.10 PING 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 ms 64 bytes from 133.137.177.10: icmp_seq=2 ttl=64 time=0.017 ms 64 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 にて実施 ) # ls bitops.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 にて実施 )

# vi /etc/drbd.d/r0.res resource 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 drbd drbd 416441 0 # cat /proc/drbd version: 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

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/test test 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 を設定しました コネクションプーリ ングに必要なパラメータのみを設定し それ以外はデフォルトとしました

$ 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 の設定

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"

# グループ設定 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 2011 Stack: Heartbeat Current DC: ext612 (a1d6ab3c-d06f-4aa1-a17a-972bf960d6b5) - partition with quorum Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87 2 Nodes configured, unknown expected votes 2 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

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 $ psql psql (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)

# service heartbeat stop Stopping 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/) これをインストールしました

(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

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 2011 Stack: Heartbeat Current DC: ext612 (a1d6ab3c-d06f-4aa1-a17a-972bf960d6b5) - partition with quorum Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87 2 Nodes configured, unknown expected votes 1 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)

# su postgres $ export PGHOST=133.137.176.217 $ export PGPORT=9999 $ pgbench -i $ pgbench -c 10 -t 1000 $ psql psql (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 stop Stopping 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

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