フェイルオーバ発生時の復旧手順について説明します。
以下では、各API Proxyサーバーにログインし、管理者権限に変更してから実施します。詳細は、「第2章 共通の操作」を参照してください。
復旧させる旧master DBサーバーを起動します。
その後、起動した旧master DBサーバー上のfj_kong_dbコンテナのみを停止します。詳細は、「6.2.2 API Proxyサーバー内コンテナの停止」を参照してください。
旧master DBサーバー上でデータディレクトリを削除します。
rm -rf /var/FJSGHD/kong/postgres/data/pgdata/
旧master DBサーバー上で以下のコマンドによりベースバックアップを取得します。
pg_basebackup -x -h <旧slave サーバーのIPアドレス> -U <ユーザー名> -R -D /var/FJSGHD/kong/postgres/data/pgdata/
<ユーザー名>には、構築時に指定したユーザー名を指定します。
旧master DBサーバー上のfj_kong_dbコンテナを起動します。詳細は、「6.1.2 API Proxyサーバー内コンテナの起動」を参照してください。
復旧させる旧master DBサーバーを以下のコマンドでmasterに昇格させます。
# docker exec -u postgres fj_kong_db /usr/lib/postgresql/9.6/bin/pg_ctl promote -D /var/lib/postgresql/data/pgdata
正常終了した場合は、以下が表示されます。
server promoting
旧master DBサーバー上で以下のコマンドを実施し、Pgpool-IIにnodeを復帰させます。
docker exec -ti fj_pgpool2 pcp_attach_node -n 0 -h /var/run/pgpool -U <ユーザー名> Password:
<ユーザー名>には、構築時に指定したユーザー名を指定します。
「Password」の入力が求められます。構築時に指定したパスワードを指定します。
正常に終了した場合は、以下が表示されます。
pcp_attach_node -- Command Successful
旧master DBサーバー上で以下のコマンドを実行します。
sed -ie "s/^pg_host = .*$/pg_host = <旧master DBサーバーのIPアドレス>/" /var/FJSGHD/kong/conf/kong.conf
旧master DBサーバー上でfj_kongコンテナを再起動します。
旧slave DBサーバー上のデータディレクトリを削除します。
rm -rf /var/FJSGHD/kong/postgres/data/pgdata/
旧slave DBサーバー上で以下のコマンドによりベースバックアップを取得します。
pg_basebackup -x -h <master DBサーバーのIPアドレス> -U <ユーザー名> -R -D \ /var/FJSGHD/kong/postgres/data/pgdata/
<ユーザー名>には、構築時に指定したユーザー名を指定します。
旧slave DBサーバー上のfj_kong_dbコンテナを起動します。詳細は、「6.1.2 API Proxyサーバー内コンテナの起動」を参照してください。
旧slave DBサーバー上で以下のコマンドを実施し、Pgpool-IIにnodeを復帰させます。
# docker exec -ti fj_pgpool2 pcp_attach_node -n 1 -h /var/run/pgpool -U <ユーザー名> Password:
<ユーザー名>には、構築時に指定したユーザー名を指定します。
「Password」の入力が求められます。構築時に指定したパスワードを指定します。
正常に終了した場合は、以下が表示されます。
pcp_attach_node -- Command Successful
旧slave DBサーバー上で以下のコマンドを実行します。
sed -ie "s/^pg_host = .*$/pg_host = <旧master DBサーバーのIPアドレス>/" /var/FJSGHD/kong/conf/kong.conf
旧slave DBサーバー上でfj_kongコンテナを再起動します。