プライマリ アプライアンスに障害が発生した場合、データベースのフェイルオーバーを実行できます。このトピックでは、9.0.0 よりも古いバージョンを実行しているアプライアンスの手順について説明します。

注: このトピックは、9.0.0 よりも古いバージョンを実行しているアプライアンスにのみ適用されます。新しいアプライアンスに関連する情報については、 データベース フェイルオーバー - 新しいアプライアンス を参照してください。

プライマリ アプライアンスに障害が発生すると、セカンダリ データベースは読み取り専用になります。フェイルオーバーが発生した場合は、次のタスクを実行します。

  • セカンダリ データベースでの書き込み操作を有効化する
  • セカンダリ サービス プロバイダ アプライアンスを永続的に昇格させてプライマリにする
  • セカンダリ テナント アプライアンスを永続的に昇格させてプライマリにする
  • プライマリ アプライアンスを再起動

セカンダリ データベースでの書き込み操作を有効化する

この手順の目的は、プライマリ アプライアンスが使用できない場合にマスター データベースをセカンダリ アプライアンス(テナントまたはサービス プロバイダ)に切り替えることです。セカンダリ アプライアンスのデータベースがマスター データソースになるように書き込み処理を有効にすることが目的となります。

  1. dtService、av-manager を停止し、プライマリ(アクセス可能な場合)とセカンダリ アプライアンスの両方でサービスを診断します。
    sudo service dtService stop
    sudo service av-manager stop
    sudo service diagnose stop
  2. プライマリ(アクセス可能な場合)とセカンダリ アプライアンスの両方で、すべての slony デーモンを停止します。
    sudo killall slon
  3. セカンダリ アプライアンスで、fdb データベースに接続し、次の SQL コマンドを実行します。
     drop schema _slony cascade;
  4. アプライアンスがテナント組織に属している場合は、EDB および AVDB で手順 3 を繰り返します。
  5. プライマリ アプライアンス上のデータベースに引き続きアクセスできる場合は、データベースをバックアップし、データベース ファイルをコピーして、データベースをセカンダリ アプライアンスにリストアします(データベースのバックアップとリストア を参照してください)。
  6. ファイル /usr/local/desktone/release/active/conf/fdb.properties を開いて編集し、プライマリ アプライアンスの IP アドレスを削除します。
  7. アプライアンスがテナント組織に属している場合は、/usr/local/desktone/release/active/edb.properties の手順 6 を繰り返します。
  8. アプライアンスがテナント組織に属している場合は、/usr/local/desktone/release/active/avdb.properties の手順 6 を繰り返します。
  9. DB_HOST および DB_PASSWORD 環境変数を設定します。
    export DB_HOST=IP_of_TA2_appliance
    export DB_PASSWORD=database_password
    
  10. av-setup スクリプトを sudo として実行します。
    sudo /usr/local/desktone/scripts/av-setup
  11. applications.properties ファイルを開いて編集します。
    vi /usr/local/xmpms/diagnose/config/application.properties
  12. 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
    
  13. セカンダリ アプライアンスで dtService、av-manager、および診断サービスを開始します。
    service dtService start
    service av-manager start
    service diagnose start

セカンダリ サービス プロバイダ アプライアンスのプライマリへの昇格

セカンダリ サービス プロバイダ アプライアンスをプライマリ サービス プロバイダ アプライアンスとして永続的に昇格させるには、次の手順を実行します。

この例では、プライマリ アプライアンスは「A」で、セカンダリ アプライアンスは「B」で、アプライアンス A にはアクセス可能です(このアプライアンスのデータベースにはアクセス可能)。

  1. すべてのサービス プロバイダ アプライアンスで dtService を停止します。
    service dtService stop
  2. すべてのサービス プロバイダ アプライアンスにログインします。
  3. /usr/local/desktone/release/active/conf/fdb.properties を開いて編集し、障害ステータスのプライマリ アプライアンスの IP アドレスを削除します。
  4. すべてのサービス プロバイダ アプライアンスですべての slony デーモンを停止します。
    killall slon
  5. プライマリおよびセカンダリ アプライアンスで、FDB データベースに接続し、次の SQL コマンドを実行します。
    drop schema _slony cascade;
  6. データセンターのセカンダリ アプライアンスで次の SQL コマンドを実行します (「A」と「B」をアプライアンスの名前で置き換えます)。
    fdb=# update appliance set capabilities = (capabilities & 65343) where name='A'; 
    fdb=# update appliance set capabilities = (capabilities | 192) where name='B';
  7. 障害アプライアンス以外のサービス プロバイダ アプライアンスで dtService を開始します。
    service dtService start

    次の手順に進む前に、アプライアンスが起動し、実行注であることを確認します。

  8. マスター サービス プロバイダ アプライアンスを除くすべてのサービス プロバイダ アプライアンスで dtService を停止します(セカンダリ サービス プロバイダ アプライアンスはマスターです)。
    service dtService stop
  9. すべてのサービス プロバイダ アプライアンスのデーモンで slon 開始します。
    /usr/local/desktone/scripts/start_slon_fdb.sh
  10. ブラウザでマスター サービス プロバイダ アプライアンス(セカンダリ サービス プロバイダ アプライアンス)のサービス センターにログインし、slony の再初期化操作を実行します。
    1. [アプライアンス] > [メンテナンス] > [Slony Operations] の順に移動します。
    2. [組織 ID] ドロップダウン リストで、[1000] を選択します。
    3. Slony の初期化 ボタンをクリックして、Slony を再初期化します。
  11. 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)
  12. 障害サービス プロバイダ アプライアンスを除くすべてのアプライアンスで dtService を起動します。
    service dtService start

セカンダリ テナント アプライアンスのプライマリへの昇格

セカンダリ テナント アプライアンスを完全にプライマリ テナント アプライアンスに昇格させるには、次の手順を実行します。

この例では、プライマリ アプライアンスは「A」で、セカンダリ アプライアンスは「B」で、アプライアンス A にはアクセス可能です(このアプライアンスのデータベースにはアクセス可能)。

  1. 組織内のすべてのテナント アプライアンスで dtService を停止します。
    service dtService stop
  2. 組織内のすべてのテナント アプライアンスにログインします。
  3. /usr/local/desktone/release/active/conf/fdb.properties を開いて編集し、障害ステータスのプライマリ アプライアンスの IP アドレスを削除します。
  4. 組織内のすべてのテナント アプライアンスで、すべての slony デーモンを停止します。
    killall slon
  5. 必要に応じて、マスター アプライアンス上のデータベースをバックアップし、スレーブ アプライアンスでリストアします。
  6. マスターおよびスレーブ アプライアンスで、FDB データベースに接続し、次の SQL コマンドを実行します。
    drop schema _slony cascade;
  7. マスター サービス プロバイダ アプライアンスで次の SQL コマンドを実行します(「A」と「B」をアプライアンスの名前に置き換えます)。
    fdb=# update appliance set capabilities = (capabilities & 65343) where name='A';  
    fdb=# update appliance set capabilities = (capabilities | 192) where name='B';
  8. 組織内のすべてのテナント アプライアンス上のデーモンで、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
  9. ブラウザでマスター サービス プロバイダ アプライアンスのサービス センターにログインし、slony の再初期化操作を実行します。
    1. [アプライアンス] > [メンテナンス] > [Slony Operations] の順に移動します。
    2. [組織 ID] ドロップダウン リストからテナントの [組織 ID] を選択します。
    3. DB インスタンス名ラベルの [ファブリック] を選択します。
    4. Slony の初期化 ボタンをクリックして、[Slony の再初期化] をクリックします。
  10. 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)
  11. 障害ステータスのテナント アプライアンスを除く、すべてのテナント アプライアンスで dtService を起動します。
     service dtService start

プライマリ アプライアンスを再起動

フェイルオーバー後にプライマリ アプライアンスを再起動する場合は、EDB と AVDB の両方で slony の再初期化を実行します。