5 分でレプリケーションとフェイルオーバと watchdog の構成を構築する

2015/5/15 pgpool-II day
安齋 希美
Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved1 インストーラの概要 デモ（pgpool-II 2 台、PostgreSQL 2台）
 動作確認Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved

2インストーラ： 概要
installer2-pg94-3.4.2_rhel-6-x86_64.tar.gz

 OS・アーキテクチャ、pgpool-IIバージョン、PostgreSQLバージョンごとに配布。
 RPMとインストールスクリプトからなる。
 対話形式でいろいろ設定する。
 マスタ・スレーブモード or レプリケーションモード、Watchdogの利用、レプリケーション、... など

 1台で実行するだけで、関連するサーバすべてをセットアップできる。
 pgpool-II の RPM をインストールする。
 各種スクリプト、設定ファイルを自動生成して配置する。

 インストーラ実行後は各ソフトウェアを起動するだけ。
Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved

3インストーラ： ダウンロードページ

Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved

4インストーラ： 実行方法
 pgpool-II をインストールするサーバで、root によってinstall.sh を実行する。
 前提
 全台に ssh できる。
 pgpool-II のライセンスに同意できる。
 対応するOS、アーキテクチャで、全台統一されている（今のところ CentOS 6.x x86_74 のみ）。
 対応するバージョンの PostgreSQL が全台にインストールされている。
$ ls installer2­pg94­3.4.2_rhel­6­x86_64
COPYING
pgpool­II­pg94­3.4.2­1pgdg.rhel6.x86_64.rpm
README.md
pgpool­II­pg94­extensions­3.4.2­1pgdg.rhel6.x86_64.rpm
install.sh
pgpoolAdmin­3.4.1­2pgdg.rhel6.noarch.rpm
installer.conf.sample templates
lib
uninstall.sh$ su ­# sh install.sh
Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved5デモ： 作成する構成
webserver1

webserver2

pgpool-II

pgpool-II

pgpoolAdmin

pgpoolAdmin

192.168.1.100

192.168.1.11 webserver1
192.168.3.11 webserver1-hb1

watchdog(heartbeat)

192.168.4.11 webserver1-hb2

192.168.1.12 webserver2
192.168.3.12 webserver2-hb1
192.168.4.12 webserver2-hb2

Load balancedbserver1

dbserver2

PostgreSQL

PostgreSQL

192.168.1.13 dbserver1

Streaming
Replication

192.168.1.14 dbserver2

Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved

6インストーラ： 実行内容 (1/3)

 ホスト、ユーザ、SSHの設定
 watchdogを使うかどうか セットアップ対象とするサーバの指定 ホスト名、ポート番号

 インストール準備
 パスワード無しでSSHできるように設定
 バックエンドサーバにPostgreSQLがインストールされているかチェック pgpool-II サーバに apache ユーザを作成（pgpoolAdmin用）

Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved

7インストーラ： 実行内容 (2/3)

 設定ファイルの編集 pgpool-II の設定
 バックエンドノード
 ヘルスチェック レプリケーションモード/マスタ・スレーブモード、ロードバランスモード
 フェイルオーバ、オンラインリカバリ
 watchdog
 クエリキャッシュ pcp.conf

 pgpoolAdmin の設定
 ユーザ名、パスワード（後でsuperuser として作成される） 表示言語Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved

8インストーラ： 実行内容 (3/3)

 設定ファイルの編集
 PostgreSQL の設定
 Streaming Replication、recovery.conf
 WALアーカイブ
 pg_hba.conf

 インストール pgpool-II、pgpoolAdminのRPMインストール、設定ファイ
ル・スクリプト配置

 PostgreSQL のセットアップ
 データベースクラスタ、ユーザ作成
 pgpool_regclass()、pgool_recovery() を CREATEFUNCTION
Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved

9デモ： インストール後(1) 両方でpgpool-II の起動

pgpool起動

Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved10デモ： インストール後(2) スタンバイをオンラインリカバリ

リカバリ

Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved11デモ： インストール後(3) 稼働開始：バックエンドノード

Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved12デモ： インストール後(4) 稼働開始：watchdog

Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved

13付録： installer.conf
 インストーラ実行時に質問回答内容をもとに作成される。
 インストーラ実行前にinstaller.conf をあらかじめ作っておけば、インストー
ラと対話しなくてよくなる。installer.conf.sample というサンプルファイルがある。
DEF_PGPOOL_WATCHDOG=yes# watchdog利用 or not
DEF_PGPOOL_HOST_ARR[0]=pool­alice# pgpool­II(1) ホスト名
DEF_PGPOOL_HOST_ARR[1]=pool­bob# pgpool­II(2) ホスト名（watchdog 利用時）
DEF_BACKEND_HOST_ARR[0]=db­alice# PostgreSQL(1) ホスト名
DEF_BACKEND_PORT_ARR[0]=6543# PostgreSQL(1) ポート番号
DEF_BACKEND_HOST_ARR[1]=db­alice# PostgreSQL(2) ホスト名
DEF_BACKEND_PORT_ARR[1]=6544# PostgreSQL(2) ポート番号
NETMASK=255.255.255.0# netmask
DEF_PG_ADMIN_USER=admin# pgoolaAdmin ログインユーザDEF_PG_ADMIN_USER_PASSWORD=pgpool# pgpoolAdmin ログインパスワード
DEF_REPLICATION_MODE=stream# DB レプリケーション方法 (stream or native)
DEF_delegate_IP='192.168.1.123'# virtual IP (watchdog 利用時）
DEF_PGDATA_ARR[0]=/data/alice­data# PostgreSQL(1) データベースクラスタ
DEF_ARCHIVE_DIR_ARR[0]=/data/alice­arc # PostgreSQL(1) アーカイブディレクトリ
DEF_PGDATA_ARR[1]=/data/bob­data# PostgreSQL(2) データベースクラスタ
DEF_ARCHIVE_DIR_ARR[1]=/data/bob­arc# PostgreSQL(2) アーカイブディレクトリ

Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved14

付録： lib/param.sh 以下は install.sh 内で質問されない。
 変更したい場合は lib/param.sh を編集する。
# params to specify in only this file
PGPOOL_PORT=9999# pgpool­II のポート番号
PCP_PORT=9898# PCP のポート番号
WATCHDOG_PORT=9000# watchdog のポート番号
NOBODY_SBIN="/var/private/nobody/sbin" # watchdog 利用時の sbin コマンドコピー先
PID_FILE_DIR="/var/run/pgpool/"# PID ファイルディレクトリ
PGPOOL_LOG_DIR="/var/log/pgpool"# ログディレクトリ

Copyright (c) 2015 SRA OSS,Inc. Japan All rights reserved15