Pgpool-IIの基本的な構築方法

概要

Pgpool-IIの基本的な構築方法を記載します。

今回は本当に基礎的なことしか書いていませんが、まずPgpool-IIを立ててみたい方、大まかに構築方法を知りたい方など、参考にしていただければと思います。

前提条件

PostgreSQLが構築されていること

環境

OSRHEL7.5
RDBMSpostgresql-12.1-2
冗長化pgpool-II-pg12-4.1.4-1

構築の流れ

  1. インストール
  2. 設定変更
  3. サービス起動

構築方法

[1] インストール

  • インストール

Pgpool-IIはネットが繋がっていればyumコマンドでリンクを指定してインストール可能です。

「Index of /yum/rpms」 - Pgpool-II

また、Pgpool-IIはPostgreSQLと一緒に使うことが前提となっているため、PostgreSQLのバージョンも確認する必要があります。
今回はPostgreSQL12、Pgpool-IIは4.1.4を指定してみます。

# yum install http://www.pgpool.net/yum/rpms/4.1/redhat/rhel-8-x86_64/pgpool-II-pg12-4.1.4-1pgdg.rhel8.x86_64.rpm
# yum -y install postgresql-server postgresql-contrib

コマンドを実行するとパッケージ内容・依存関係の一覧が表示され、問題ないか確認されるので問題なければ「y」を入力します。
「完了しました」と表示されればインストール完了です。

  • 状況確認

確認コマンドを実行し、Pgpool-IIのrpm名が出力されれば正常にインストールできていることが確認できます。

# rpm -qa | grep pgpool
pgpool-II-pg12-4.1.4-1pgdg.rhel8.x86_64

[2] 設定変更

 どんな構成にするかで設定内容は変わってきますが、今回は必要最低限の値を設定します。
本来ならPgpool-IIは冗長化設定を行なうかと思いますが、今回の設定では1台のサーバの中にPostgreSQLとPgpool-IIが同居しており、冗長化をしない、といった構成になります。
つまりPgpool-IIを使う意味があまりない設定なのですが、まずは試しに起動できるか確認するには十分かと思います。

そのため、 単純に起動だけするのであれば、実は何も設定しない状態でも問題ありません。
試しに起動する程度であれば設定値を変えないまま次の起動手順に進んでください。

  • 設定ファイルのバックアップ

編集する設定ファイルはバックアップを取っておいた方が安全です。
なるべくバックアップを取るようにしてください。

また、Pgpool-IIは設定ファイルが複数存在するため、それぞれバックアップを取っておいた方が安全ですが、今回はpgpool.confをバックアップする例を記載します。

# cp -p /etc/pgpool-II/pgpool.conf /etc/pgpool-II/pgpool.conf.org
  • pgpool.conf設定

Pgpool-IIの主な設定ファイルを変更します。

# vi /etc/pgpool-II/pgpool.conf
  • listen_addresses設定

listen_addressesは「TCP/IP接続を受け付けるホスト名またはIPアドレス」を指定します。
単純に言ってしまえばアクセス制限ですが、他にも後述するpool_hba.confで管理します。
ようするに、listen_addressesで「どのアドレスから接続を受け付けるか制限」し、pool_hba.confで「定義されたアドレス(クライアント)の接続方式を制限」します。
この管理方法はPostgreSQLと同じ形式ですので分かりやすいかもしれません。

今回は大雑把に「*」(すべて許可)を設定してみます。

・設定ファイルに記載されている例
listen_addresses = 'localhost'
 
・設定例
listen_addresses = '*'
  • backend_hostname0設定

backend_hostname0は「接続先のPostgreSQLアドレス」を指定します。
Pgpool-IIでどのサーバの入っているPostgreSQLを見るか、という設定になります。1台のサーバで両方のプロダクトを管理している場合はデフォルトのlocalhostで問題ないですが、冗長化設定等を考慮する場合、またはPostgreSQLとPgpool-IIが別々のサーバに入っている場合はIPアドレスで設定してください。

今回は1台構成のため、デフォルトのままで設定します。

backend_hostname0 = 'localhost'
  • その他設定値

他にも負荷分散設定やウォッチドック設定等、様々な設定値があります。
Pgpool-IIはほぼ負荷分散、冗長化のために使うことが多いため主に「どう冗長化するか」「どう負荷分散するか」の設定が主になっています。

  • pg_hba.conf設定

アクセス制限の主な設定ファイルを変更します。

# vi  /etc/pgpool-II/pool_hba.conf

今回は、192.168.0.0/16もアクセスできるよう追加してみました。

・設定ファイルに記載されている例
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
host    all         all         ::1/128               trust
 
・設定例
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
host    all         all         192.168.0.0/16          md5
host    all         all         ::1/128               trust
~略~

[3] サービス起動

  • サービス起動

Pgpool-IIサービスを起動します。

# systemctl start pgpool
  • サービス状態確認

Pgpool-IIサービスの状態を確認します。
エラーがなければ正常に起動されています。

# systemctl status pgpool
● pgpool.service - Pgpool-II
~省略~
   Active: active (running)
~省略~

自動起動について

基本的に、Pgpool-IIの自動起動は推奨しません。
Pgpool-IIは基本的に冗長化構成をしており、例えば2台構成のPostgreSQL+Pgpool-IIの場合、Pgpool-IIやPostgreSQLが落ちたらPgpool-II側でフェイルオーバー(自動切替処理)をするのが一般的です。
Pgpool-IIにはフェイルバック(自動復旧処理)がありますが、OSが停止していた、つまり何らかの障害でデータベースが落ちることになった場合、データの復旧作業が必要なケースが多々あります。
壊れたデータが存在する状態で自動でサービスが起動してしまうと、また別の障害が発生する可能性があります。
自動起動でも問題なく起動できる技術があれば別ですが、不安な場合は手動で対応するのがオススメです。

技術情報

商標について

関連サービス

OSS導入支援
OSS保守サポート

お気軽にお問い合わせください。応対時間 9:30-17:30 [ 土・日・祝日除く ]

お問い合わせ