環境構築機能でPostgreSQLを冗長化するスレーブサーバを構築しよう

作成日 2015/12/25
更新日  

 

概要

本ドキュメントは、Hinemos ver.5.0 から追加された環境構築機能の概要を理解されている方向けに、具体的なユースケースをご紹介します。

なお、環境構築機能について知りたい方は、Hinemos ver.5.0入門編④の技術情報をご覧ください。

Hinemos ver.5.0 入門編④ Hinemos ver.5.0でシステム構築をやってみよう

 

環境構築機能で、PostgreSQL のレプリケーション環境へ追加するスレーブサーバを構築しよう

今回は、PostgreSQL のレプリケーション環境へ追加するスレーブサーバの構築手順を環境構築機能で行います。

なお、マスタサーバの構築は、今回の内容では実施しないため、マスタを含めたレプリケーション環境については、以下の技術文章をご確認ください。

高可用性、負荷分散およびレプリケーション

 

前提条件

PostgreSQL のレプリケーション環境に追加するスレーブサーバを構築する。マスタサーバの構築は対象外とする。
マスタサーバのポートは、5432 とする。
マスタに登録するレプリケーション用のユーザは、repl_user とする。

 

要件

レプリケーションの方式は、スタンバイレプリケーションとする。
スレーブサーバは、ホットスタンバイモードで起動する。
データディレクトリは、/var/lib/pgsql/data
対象 OS は、Linux とする。

 

↓クリックすると画像が拡大されます↓

 

設定方法

上記要件を満たす環境構築設定には、以下の各処理に対応した環境構築モジュールで構成されます。

1. PostgreSQL のインストール

2. マスタからスレーブへデータを複製

2-1. 認証ファイルの転送

2-2. マスタのデータをスレーブへ複製

3. レプリケーション用の設定を転送

4. PostgreSQL の起動

 

ここからは、環境構築設定の設定内容について、順を追って説明いたします。

まずは、スレーブサーバの管理に利用するスコープを作成します。

 

スレーブサーバ用スコープの準備

スレーブサーバ用スコープを作成します。

作成したスコープには、スレーブサーバとなるノードを配置してください。

 

↓クリックすると画像が拡大されます↓

 

次に、環境構築設定を作成します。

 

環境構築設定の作成

環境構築設定の作成は、環境構築パースペクティブの環境構築[構築・チェック]ビューで、作成ボタンを押下してください。

 

↓クリックすると画像が拡大されます↓

 

以降は、環境構築モジュールの作成になります。

 

1. PostgreSQL のインストール

PostgreSQL のインストールは、コマンド実行モジュールを使用します。

 

↓クリックすると画像が拡大されます↓

 

 

2. マスタからスレーブへデータを複製

スレーブの初期データは、マスタから複製したデータを使用します。

なお、複製には、pg_basebackup を使用し、マスタからスレーブへのバックアップという形で行います。マスタへの接続を行う pg_basebackup の実行を環境構築機能から行うには、マスタの認証情報を記載したファイルをスレーブへ事前に配置する必要があります。この認証ファイルの配置も環境構築機能から行います。

 

2-1. 認証ファイルの転送

pg_basebackup を実行するために、マスタの認証情報を記載したファイルをファイル配布モジュールで転送します。

まず、“.pgpass” というファイルを作成し、認証情報を記載します。フォーマットは、以下になります。

 

                <マスタのアドレス>:<postgresqlのポート>:<データベース名>:<レプリケーション用ユーザ>:<パスワード>
                

 

                10.0.2.11:5432:*:repl_user:xxx
                

 

“.pgpass” ファイルを作成したら、Hinemosマネージャにアップロードします。

 

↓クリックすると画像が拡大されます↓

 

続いて、“.pgpass” ファイルを配布するファイル配布モジュールを作成します。

 

↓クリックすると画像が拡大されます↓

 

 

2-2. マスタのデータをスレーブへ複製

コマンド実行モジュールを使用して、マスタのデータをスレーブへ複製します。ただし、指定する実行コマンドには、複製後のデータに対する後処理も含める必要があります。複製後に必要な後処理は、以下のとおりです。

 

① postgresql.conf へ “hot_standby = on” を追記

② /var/lib/pgsql/data/ のオーナーとグループを PostgreSQL の実行アカウント(postgres)とグループ(postgres)へ変更

 

以下は、複製に加え、上記処理も実行するコマンドの例です。全ての処理を一行で指定する必要があるので、複製と ① と ② のコマンドを “;” で連結します。

 

/usr/bin/pg_basebackup -h x.x.x.x -U repl_user -D /var/lib/pgsql/data -vxw; echo 'hot_standby = on' >> /var/lib/pgsql/data/postgresql.conf; chown -R postgres:postgres /var/lib/pgsql/data/*

 

 

↓クリックすると画像が拡大されます↓

 

 

3. レプリケーション用の設定を転送

スレーブに、レプリケーション用の設定ファイルを転送します。

まず、“recovery.conf” というファイルを作成し、以下の内容を記載します。

※ primary_conninfo = 以降は改行せず、一行で記載する必要があります。

 

standby_mode = 'on'
primary_conninfo = 'host=<マスタのアドレス> port=<マスタのポート> user=<レプリケーション用ユーザ> password=xxx application_name=<マスタのpostgresql.conf の synchronous_standby_namesと同じ文字列>’

 

standby_mode = 'on'
primary_conninfo = 'host=10.0.2.11 port=5432 user=repl_user password=xxx application_name=slave1'

 

作成後、“recovery.conf” を Hinemos マネージャへアップロードします。

 

↓クリックすると画像が拡大されます↓

 

アップロードが完了しましたら、設定ファイル転送用ファイル配布モジュールを作成します。

 

↓クリックすると画像が拡大されます↓

 

 

4. PostgreSQL の起動

PostgreSQL の起動は、コマンド実行モジュールを使用します。

 

↓クリックすると画像が拡大されます↓

 

 

環境構築の実行

環境構築の実行については、環境構築機能でHinemosエージェントをアップデートしてみよう の“手順3. 環境構築の実行” をご確認ください。

 

 

以上が、一連の手順となります。

 

今回も冗長的な処理を環境構築機能で実行しました。

本技術情報を作成する際に、マスタのデータの複製方法や、後処理をどのように環境構築機能で実行するかを検討しつつ進めましたが、実際に環境構築機能で操作すると、大きな問題もなく実現できました。もし、環境構築機能を利用したいけどどのように設定したらよいか悩まれている方がいらっしゃいましたら、まずは試してみる事、動かしてみる事をお勧めします。

日々実施する処理を環境構築機能に登録すれば、あとはHinemos が迅速に効率良く再現実行してくれます。

 

関連情報

お問い合わせ