プライマリ アプライアンスに障害が発生した場合、データベースのフェイルオーバーを実行できます。このトピックでは、9.0.0 よりも古いバージョンを実行しているアプライアンスの手順について説明します。
プライマリ アプライアンスに障害が発生すると、セカンダリ データベースは読み取り専用になります。フェイルオーバーが発生した場合は、次のタスクを実行します。
- セカンダリ データベースでの書き込み操作を有効化する
- セカンダリ サービス プロバイダ アプライアンスを永続的に昇格させてプライマリにする
- セカンダリ テナント アプライアンスを永続的に昇格させてプライマリにする
- プライマリ アプライアンスを再起動
セカンダリ データベースでの書き込み操作を有効化する
この手順の目的は、プライマリ アプライアンスが使用できない場合にマスター データベースをセカンダリ アプライアンス(テナントまたはサービス プロバイダ)に切り替えることです。セカンダリ アプライアンスのデータベースがマスター データソースになるように書き込み処理を有効にすることが目的となります。
- dtService、av-manager を停止し、プライマリ(アクセス可能な場合)とセカンダリ アプライアンスの両方でサービスを診断します。
sudo service dtService stop sudo service av-manager stop sudo service diagnose stop
- プライマリ(アクセス可能な場合)とセカンダリ アプライアンスの両方で、すべての slony デーモンを停止します。
sudo killall slon
- セカンダリ アプライアンスで、fdb データベースに接続し、次の SQL コマンドを実行します。
drop schema _slony cascade;
- アプライアンスがテナント組織に属している場合は、EDB および AVDB で手順 3 を繰り返します。
- プライマリ アプライアンス上のデータベースに引き続きアクセスできる場合は、データベースをバックアップし、データベース ファイルをコピーして、データベースをセカンダリ アプライアンスにリストアします(データベースのバックアップとリストア を参照してください)。
- ファイル /usr/local/desktone/release/active/conf/fdb.properties を開いて編集し、プライマリ アプライアンスの IP アドレスを削除します。
- アプライアンスがテナント組織に属している場合は、/usr/local/desktone/release/active/edb.properties の手順 6 を繰り返します。
- アプライアンスがテナント組織に属している場合は、/usr/local/desktone/release/active/avdb.properties の手順 6 を繰り返します。
- DB_HOST および DB_PASSWORD 環境変数を設定します。
export DB_HOST=IP_of_TA2_appliance export DB_PASSWORD=database_password
- av-setup スクリプトを sudo として実行します。
sudo /usr/local/desktone/scripts/av-setup
- applications.properties ファイルを開いて編集します。
vi /usr/local/xmpms/diagnose/config/application.properties
- applications.properties ファイルで、次のように行を編集します。
db.jdbc.url=jdbc:postgresql://<ip address>:5432/avdb?ssl=true db.fdb.jdbc.url=jdbc:postgresql://<ip address>:5432/fdb?ssl=true
- セカンダリ アプライアンスで dtService、av-manager、および診断サービスを開始します。
service dtService start service av-manager start service diagnose start
セカンダリ サービス プロバイダ アプライアンスのプライマリへの昇格
セカンダリ サービス プロバイダ アプライアンスをプライマリ サービス プロバイダ アプライアンスとして永続的に昇格させるには、次の手順を実行します。
この例では、プライマリ アプライアンスは「A」で、セカンダリ アプライアンスは「B」で、アプライアンス A にはアクセス可能です(このアプライアンスのデータベースにはアクセス可能)。
- すべてのサービス プロバイダ アプライアンスで dtService を停止します。
service dtService stop
- すべてのサービス プロバイダ アプライアンスにログインします。
- /usr/local/desktone/release/active/conf/fdb.properties を開いて編集し、障害ステータスのプライマリ アプライアンスの IP アドレスを削除します。
- すべてのサービス プロバイダ アプライアンスですべての slony デーモンを停止します。
killall slon
- プライマリおよびセカンダリ アプライアンスで、FDB データベースに接続し、次の SQL コマンドを実行します。
drop schema _slony cascade;
- データセンターのセカンダリ アプライアンスで次の SQL コマンドを実行します (「A」と「B」をアプライアンスの名前で置き換えます)。
fdb=# update appliance set capabilities = (capabilities & 65343) where name='A'; fdb=# update appliance set capabilities = (capabilities | 192) where name='B';
- 障害アプライアンス以外のサービス プロバイダ アプライアンスで dtService を開始します。
service dtService start
次の手順に進む前に、アプライアンスが起動し、実行注であることを確認します。
- マスター サービス プロバイダ アプライアンスを除くすべてのサービス プロバイダ アプライアンスで dtService を停止します(セカンダリ サービス プロバイダ アプライアンスはマスターです)。
service dtService stop
- すべてのサービス プロバイダ アプライアンスのデーモンで slon 開始します。
/usr/local/desktone/scripts/start_slon_fdb.sh
- ブラウザでマスター サービス プロバイダ アプライアンス(セカンダリ サービス プロバイダ アプライアンス)のサービス センターにログインし、slony の再初期化操作を実行します。
- の順に移動します。
- [組織 ID] ドロップダウン リストで、[1000] を選択します。
- ボタンをクリックして、Slony を再初期化します。
- Slony の再初期化が完了したら、データセンターのセカンダリ アプライアンスの FDB で次のコマンドを実行します。
SELECT a.set_id, a.set_comment, (SELECT last_value FROM _slony.sl_local_node_id) AS local_id, CASE WHEN a.set_origin = (SELECT last_value FROM _slony.sl_local_node_id)THEN TRUE ELSE FALSE END AS master_node from _slony.sl_set a;
出力は次のように表示されます。
set_id | set_comment | local_id | master_node --------+--------------------------+----------+------------- 1 | All tables and Sequences | 1 | t (1 row)
- 障害サービス プロバイダ アプライアンスを除くすべてのアプライアンスで dtService を起動します。
service dtService start
セカンダリ テナント アプライアンスのプライマリへの昇格
セカンダリ テナント アプライアンスを完全にプライマリ テナント アプライアンスに昇格させるには、次の手順を実行します。
この例では、プライマリ アプライアンスは「A」で、セカンダリ アプライアンスは「B」で、アプライアンス A にはアクセス可能です(このアプライアンスのデータベースにはアクセス可能)。
- 組織内のすべてのテナント アプライアンスで dtService を停止します。
service dtService stop
- 組織内のすべてのテナント アプライアンスにログインします。
- /usr/local/desktone/release/active/conf/fdb.properties を開いて編集し、障害ステータスのプライマリ アプライアンスの IP アドレスを削除します。
- 組織内のすべてのテナント アプライアンスで、すべての slony デーモンを停止します。
killall slon
- 必要に応じて、マスター アプライアンス上のデータベースをバックアップし、スレーブ アプライアンスでリストアします。
- マスターおよびスレーブ アプライアンスで、FDB データベースに接続し、次の SQL コマンドを実行します。
drop schema _slony cascade;
- マスター サービス プロバイダ アプライアンスで次の SQL コマンドを実行します(「A」と「B」をアプライアンスの名前に置き換えます)。
fdb=# update appliance set capabilities = (capabilities & 65343) where name='A'; fdb=# update appliance set capabilities = (capabilities | 192) where name='B';
- 組織内のすべてのテナント アプライアンス上のデーモンで、slon を開始します。
/usr/local/desktone/scripts/start_slon_fdb.sh /usr/local/desktone/scripts/start_slon_edb.sh /usr/local/desktone/scripts/start_slon_avdb.sh
- ブラウザでマスター サービス プロバイダ アプライアンスのサービス センターにログインし、slony の再初期化操作を実行します。
- の順に移動します。
- [組織 ID] ドロップダウン リストからテナントの [組織 ID] を選択します。
- DB インスタンス名ラベルの [ファブリック] を選択します。
- ボタンをクリックして、[Slony の再初期化] をクリックします。
- Slony の再初期化が完了したら、データセンターのセカンダリ テナント アプライアンスの FDB で次のコマンドを実行します。
SELECT a.set_id, a.set_comment, (SELECT last_value FROM _slony.sl_local_node_id) AS local_id, CASE WHEN a.set_origin = (SELECT last_value FROM _slony.sl_local_node_id) THEN TRUE ELSE FALSE END AS master_node from _slony.sl_set a;
プライマリ アプライアンスが最初のデータセンターで障害が発生した場合、出力は次のように表示されます。
set_id | set_comment | local_id | master_node --------+--------------------------+----------+------------- 1 | All tables and Sequences | 1 | t (1 row)
- 障害ステータスのテナント アプライアンスを除く、すべてのテナント アプライアンスで dtService を起動します。
service dtService start
プライマリ アプライアンスを再起動
フェイルオーバー後にプライマリ アプライアンスを再起動する場合は、EDB と AVDB の両方で slony の再初期化を実行します。