フェイルオーバ発生時の復旧手順について説明します。
以下では、各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-Ⅱに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-Ⅱに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コンテナを再起動します。