LoginSignup
42
42

More than 5 years have passed since last update.

Linuxへのpgpool-IIの導入と基本的な設定

Last updated at Posted at 2014-06-21

はじめに

本記事は旧バージョンで説明です。最新のバージョンは、下記の記事が参考になります。

pgpool-IIの機能を理解して、インストールと設定をする ( 入門編 )

概要

pgpool-IIを試したいが、公式ドキュメントをすべて読むのが大変という方向けに、とりあえず動かすまでの基本知識と導入手順をまとめる。

pgpool-IIとは

PostgreSQLへの接続に利用するミドルウェア。コネクションプールやクエリキャッシュ・負荷分散機能がある。

アプリケーションとPostgreSQLを透過的に中継するので、現状の作りのまま導入ができる。

詳細はこちら参照。
http://www.pgpool.net/docs/pgpool-II-3.3.3/doc/pgpool-ja.html

pgpool-IIの導入判断

Javaであれば、アプリケーションサーバで代替できる機能もあるため、そちらとの比較が必要。
PHP等の場合は、コネクションプール目的だけでも導入する価値がある。

pgpool-IIの動作モード

以下の4つのモードがある。

  • rawモード
  • レプリケーションモード
  • マスタスレーブモード
  • パラレルクエリモード

今回は、DBサーバ1台構成を想定し「rawモード」で導入する。

pgpool-IIの導入サーバ

どのサーバに導入するかは、以下の3つの選択肢がある。

  • 専用サーバの配置
  • WEBサーバ・アプリケーションサーバと同居
  • DBサーバと同居

今回は、以下の理由でWEBサーバと同居させる。

  • 専用サーバ配置は、1台だとpgpool自体が単一障害点になる。複数台にすると専用のHAの仕組みが必要となる。
  • WEBサーバ配置は、WEBサーバを複数台構成にすると、pgpoll自体も単一障害点でなくなる。将来的にDBサーバが複数台構成になった場合にも、アプリを変更せずに対応できる。
  • DBサーバは配置は、将来的にDBサーバが複数台構成になった場合に、アプリ側で振り分けが必要となってしまう。

pgpoolの導入

環境

  • CentOS 6.5
  • PosgreSQL 9.3
  • pgpool-II 3.3.3

pgpool-II インストール

yum -y install http://www.pgpool.net/download.php?f=pgpool-II-pg93-3.3.3-3.pgdg.x86_64.rpm

pgpool-II 初期設定

/etc/pgpool-II/pgpool.confが主要な設定ファイル。
ほぼ初期設定のままで、下記のみを変更する。

データベースの接続情報

backend_hostname0 = '10.0.1.10'
backend_port0 = 5432

コネクションプールの設定

num_init_children = 64 # pgpoolへの接続数
max_pool = 1           # DBユーザ名・データベース名毎に一つ

オンメモリクエリキャッシュの設定

memory_cache_enabled = on # 有効にする

必要なディレクトリを作る。

mkdir /var/run/pgpool
mkdir /var/log/pgpool

chown postgres:postgres /var/log/pgpool/
chown postgres:postgres /var/run/pgpool/

pool_passwdファイルがないと、エラーログが出るのでダミーファイル作成

vi /etc/pgpool-II/pool_passwd
chown postgres:postgres /etc/pgpool-II/pool_passwd

自動起動を有効化

chkconfig pgpool on

アプリケーション側の設定変更

元々、データベースサーバを指定しているIP・Portを、pgpoolを指定するように変更する。
デフォルトであれば、IPはlocalhost、Portを9999に変更する。ユーザ・パスワードは変更不要。

起動と確認

Serviceへ登録されているので、起動は以下のコマンド。

service pgpool start

ログはデフォルトでは、「/var/log/pgpool.log」に出力されるので、うまくいかなければ確認する。
ログ出力場所は、「/etc/init.d/pgpool」に記載されている。

最後に

上記の通りに導入は非常に簡単。

接続数がそれなりにあるアプリケーションであれば、コネクションプールとオンメモリクエリキャッシュのみの利用でも、効果が出るはず。

レプリケーションについては、PostgreSQL標準のレプリケーションとの使い分けがいりそう。

パラレルクエリについては、よくわかっていないので使うタイミングが来たら調べる。

42
42
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
42