管理インスタンスのフェイルオーバーの管理
すべての管理アクティビティは、アクティブ管理インスタンスと呼ばれる単一の管理インスタンスから実行します。ただし、2つの管理インスタンスを構成し、アクティブ管理インスタンスの停止や障害が発生した場合に、スタンバイ管理インスタンスを使用できるようにすることをお薦めします。
-
管理インスタンスが1つのみで、それが停止した場合でも、データベースは引き続き動作します。ただし、管理インスタンスがリストアされるまでは、ほとんどの管理操作を使用できません。
-
グリッド内にアクティブ管理インスタンスおよびスタンバイ管理インスタンスの両方を構成し、アクティブ管理インスタンスのみがアクティブな場合は、この1つの管理インスタンスからグリッド全体を構成および管理できます。
両方の管理インスタンスが停止している場合は、次のようになります。
-
グリッド内のすべてのデータベースに引き続きアクセスできます。ただし、すべての管理操作はアクティブ管理インスタンスを介してリクエストされるため、アクティブ管理インスタンスがリストアされるまで、グリッドを管理できません。
-
グリッド内のデータ・インスタンスまたはその要素が停止するか、それらに障害が発生した場合、アクティブ管理インスタンスがリストアされるまで、それらはグリッドのリカバリ、再起動および再結合を実行できません。
ノート:
3つ目の管理インスタンスは追加できません。
図13-6に示すように、アクティブ管理インスタンスで使用されるすべての管理情報は、スタンバイ管理インスタンスに自動的にレプリケートされます。したがって、アクティブ管理インスタンスが停止するか、障害が発生した場合、スタンバイ管理インスタンスを新しいアクティブ管理インスタンスに昇格させ、これを使用してグリッドの管理を続行できます。
次の各項では、管理インスタンスの管理方法について説明します。
管理インスタンスのステータス
ttGridAdmin mgmtExamine
コマンドを使用して両方の管理インスタンスのステータスを調べ、解決する必要がある問題があるかどうかを確認します。このコマンドは、必要に応じて、未解決の問題を修正するために実行できる処置を提案します。
次の例は、両方の管理インスタンスが稼働していることを示しています。
% ttGridAdmin mgmtExamine
Both active and standby management instances are up. No action required.
Host Instance Reachable RepRole(Self) Role(Self) Seq RepAgent RepActive
------------------------------------------------------------------------
host1 instance1 Yes Active Active 598 Up Yes
host2 instance1 Yes Standby Standby 598 Up No
いずれかの管理インスタンスが停止するか、障害が発生した場合、出力には管理インスタンス・ロールがUnknown
であることが示され、レプリケーション・エージェントが停止していることを示すメッセージが表示されます。出力には、管理インスタンスを再起動するために推奨されるコマンドが示されます。
% ttGridAdmin mgmtExamine
Active management instance is up, but standby is down
Host Instance Reachable RepRole(Self) Role(Self) Seq RepAgent RepActive Message
----- --------- --------- ------------- ---------- --- -------- --------- --------
host1 instance1 Yes Active Active 600 Up No
host2 instance1 No Unknown Unknown Down No Management
database is not available
Recommended commands:
ssh -o StrictHostKeyChecking=yes -o PasswordAuthentication=no -x host2.example.com
/timesten/host2/instance1/bin/ttenv ttGridAdmin mgmtStandbyStart
管理インスタンスごとに、次の項目が表示されます。
-
HostおよびInstanceには、管理インスタンスの名前およびインスタンスが配置されているホストの名前が示されます。
-
Reachableには、管理インスタンスの状態を判別するために、コマンドが管理インスタンスに到達できたかどうかが示されます。
-
RepRole(Self)には、レプリケーション・エージェントが管理インスタンス間でデータをレプリケートするために認識している、記録されたロールが示されます(ある場合)。一方、Role(Self)には、管理インスタンスのデータベース内で認識されている、記録されたロールが示されます。この両方に同じロールが表示される必要があります。ロールが異なる場合、
ttGridAdmin mgmtExamine
コマンドはエラーを修正するコマンドを特定しようとします。 -
Seqは、管理インスタンスに対する最新の変更の順序番号です。
Seq
値が同じ場合、2つの管理インスタンスは同期されています。そうでない場合は、Seq
値が大きいほうの管理インスタンスに最新のデータが含まれています。 -
RepAgentには、各管理インスタンスでレプリケーション・エージェントが実行されているかどうかが示されます。
-
RepActiveには、
ttGridAdmin mgmtExamine
コマンドによって内部的に起動されるttGridAdmin mgmtStatus
コマンドによって、管理インスタンス上の管理データに対する変更が正常に行われたかどうかが示されます。 -
Messageには、管理インスタンスに関する詳細情報が示されます。
『Oracle TimesTen In-Memory Databaseリファレンス』の管理インスタンスの確認(mgmtExamine)を参照してください。
管理インスタンスの起動、停止および切替え
ほとんどのttGridAdmin
コマンドはアクティブ管理インスタンスで実行します。ただし、アクティブ管理インスタンスのリカバリを管理するときには、スタンバイ管理インスタンスでttGridAdmin
コマンドを実行する必要がある場合があります。
スタンバイ管理インスタンスを起動、停止または昇格する場合は、次のようになります。
-
どちらの管理インスタンスでも、
ttGridAdmin mgmtStandbyStop
コマンドを実行できます。グリッドはスタンバイ管理インスタンスの場所を把握しており、それを停止します。 -
スタンバイ管理インスタンスにする管理インスタンスで
ttGridAdmin mgmtStandbyStart
コマンドを実行する必要があります。ttGridAdmin mgmtStandbyStart
コマンドでは、現行インスタンスをスタンバイ管理インスタンスにすると想定しています。 -
アクティブ管理インスタンスが停止している場合は、スタンバイ管理インスタンスで
ttGridAdmin mgmtActiveSwitch
コマンドを実行して、スタンバイ管理インスタンスをアクティブ管理インスタンスに昇格させる必要があります。
スタンバイ管理インスタンスで実行する必要があるコマンドについては、ホストにログオンした後、ttGridAdmin
ユーティリティを実行する前に、必ずttenv
スクリプトを使用して環境を設定してください(「初期管理インスタンスの作成」を参照)。
単一の管理インスタンスの障害
これはお薦めできませんが、スタンバイ管理インスタンスを用意せず、単一のアクティブ管理インスタンスでグリッドを管理できます。単一のアクティブ管理インスタンスに障害が発生してリカバリした場合、次のようにアクティブ管理インスタンスを再アクティブ化します。
アクティブ管理インスタンスの障害
アクティブ管理インスタンスに障害が発生した場合、その管理インスタンスではttGridAdmin
コマンドを実行できなくなります。
-
host2
ホストのスタンバイ管理インスタンスを、新しいアクティブ管理インスタンスに昇格させます。 -
次のいずれかの方法で、新しいスタンバイ管理インスタンスを作成します。
-
host1
にある障害が発生した管理インスタンスをリカバリして、新しいスタンバイ管理インスタンスとして稼働させます。こうすると、新しいアクティブ管理インスタンスにより、すべての管理情報が新しいスタンバイ管理インスタンスにレプリケートされます。 -
アクティブ管理インスタンスに発生した障害が永続的である場合は、その管理インスタンスを削除して、新しいスタンバイ管理インスタンスを作成します。
-
たとえば、ご使用の環境に2つの管理インスタンスがあり、アクティブ管理インスタンスはhost1
に、スタンバイ管理インスタンスhost2
にあるとします。ここで、host1
にあるアクティブ管理インスタンスに障害が発生した場合、その管理インスタンスではttGridAdmin
コマンドを実行できなくなります。図13-7に示すように、host2
のスタンバイ管理インスタンスを昇格させて、新しいアクティブ管理インスタンスにする必要があります。
新しいアクティブ管理インスタンスがリクエストを処理し始めたら、次のいずれかの方法により、新しいスタンバイ管理インスタンスが作成されていることを確認します。
スタンバイ管理インスタンスの障害
次の各項で説明しているように、スタンバイ管理インスタンスを再アクティブ化する方法は、障害のタイプによって異なります。
両方の管理インスタンスに障害が発生した場合
グリッドの全機能を取り戻し、アクティブ管理インスタンスからグリッドを管理できるようにするには、管理インスタンスを再起動する必要があります。
両方の管理インスタンスが停止している場合は、どちらの管理インスタンスを新しいアクティブ管理インスタンスにするかを決定するために、どちらの管理インスタンスに最新の変更があるかを確認する必要があります。
ノート:
両方の管理インスタンスで永続的な障害が発生した場合は、Oracleサポートに連絡してください。
次に、両方の管理インスタンスが停止している場合に実行する手順について説明します。
両方の管理インスタンスを再度稼働させる
両方の管理インスタンスを再度稼働させることができる場合は、次の手順を実行します。
ノート:
まだ設定していない場合は、ttenv
スクリプトを使用して環境を設定します(「初期管理インスタンスの作成」を参照)。
-
いずれかの管理インスタンスで
ttGridAdmin mgmtExamine
コマンドを実行して、どれをアクティブ管理インスタンスにするのが適切かを確認します。ttGridAdmin mgmtExamine
コマンドでは、両方の管理インスタンスを評価し、より多くの管理データを持つ管理インスタンスに最大の順序番号を出力します。アクティブ管理インスタンスとして再アクティブ化する必要があるのは、この管理インスタンスです。% ttGridAdmin mgmtExamine One or more management instance is down. Start them and run mgmtExamine again. Host Instance Reachable RepRole(Self) Role(Self) Seq RepAgent RepActive Message ------------------------------------------------------------------------------ host1 instance1 No Unknown Unknown Down No Management database is not available host2 instance1 No Unknown Unknown Down No Management database is not available Recommended commands: ssh -o StrictHostKeyChecking=yes -o PasswordAuthentication=no -x host1.example.com /timesten/host1/instance1/bin/ttenv ttDaemonAdmin -start -force ssh -o StrictHostKeyChecking=yes -o PasswordAuthentication=no -x host2.example.com /timesten/host2/instance1/bin/ttenv ttDaemonAdmin -start -force sleep 30 /timesten/host1/instance1/bin/ttenv ttGridAdmin mgmtExamine
-
ttGridAdmin mgmtExamine
コマンドで示された、推奨コマンドを実行します。この例のコマンドを実行すると、各管理インスタンスのデーモンが再起動されます。% ssh -o StrictHostKeyChecking=yes -o PasswordAuthentication=no -x host1.example.com /timesten/host1/instance1/bin/ttenv ttDaemonAdmin -start -force TimesTen Daemon (PID: 3858, port: 11000) startup OK. % ssh -o StrictHostKeyChecking=yes -o PasswordAuthentication=no -x host2.example.com /timesten/host2/instance1/bin/ttenv ttDaemonAdmin -start -force TimesTen Daemon (PID: 4052, port: 12000) startup OK.
-
ttGridAdmin mgmtExamine
コマンドを再実行して、両方の管理インスタンスが稼働していることを確認します。いずれかの管理インスタンスが稼働していない場合は、ttGridAdmin mgmtExamine
コマンドから、実行する別のコマンドが提示されることがあります。この例では、
ttGridAdmin mgmtExamine
コマンドの2回目の実行で、管理インスタンスが稼働していないことが示されます。したがって、この例では、次の手順を実行するようにコマンドから要求されます。-
両方の管理インスタンスのデータ・インスタンスのメイン・デーモンを停止します。
-
ttGridAdmin mgmtExamine
コマンドで示された順序番号がより上位の管理インスタンスで、ttGridAdmin mgmtActiveStart
コマンドを実行します。これにより、アクティブ管理インスタンスが再アクティブ化されます。 -
スタンバイ管理インスタンスとして機能させる管理インスタンスで、
ttGridAdmin mgmtStandbyStart
コマンドを実行します。このコマンドにより、TimesTen Scaleoutで他の管理インスタンスがスタンバイ管理インスタンスとして割り当てられ、アクティブ管理インスタンスとスタンバイ管理インスタンスの間のアクティブ・スタンバイ構成が開始され、アクティブ管理インスタンス上の管理情報がスタンバイ管理インスタンスと同期されます。
% ttGridAdmin mgmtExamine Host Instance Reachable RepRole(Self) Role(Self) Seq RepAgent RepActive Message ------------------------------------------------------------------------ host1 instance1 Yes Active Active 581 Down No host2 instance1 Yes Standby Standby 567 Down No Recommended commands: ssh -o StrictHostKeyChecking=yes -o PasswordAuthentication=no -x host1.example.com /timesten/host1/instance1/bin/ttenv ttDaemonAdmin -stop ssh -o StrictHostKeyChecking=yes -o PasswordAuthentication=no -x host2.example.com /timesten/host2/instance1/bin/ttenv ttDaemonAdmin -stop sleep 30 ssh -o StrictHostKeyChecking=yes -o PasswordAuthentication=no -x host1.example.com /timesten/host1/instance1/bin/ttenv ttGridAdmin mgmtActiveStart sleep 30 ssh -o StrictHostKeyChecking=yes -o PasswordAuthentication=no -x host2.example.com /timesten/host2/instance1/bin/ttenv ttGridAdmin mgmtStandbyStart
次のコマンドを実行すると、アクティブ管理インスタンスおよびスタンバイ管理インスタンスの両方が再起動されます。
% ssh -o StrictHostKeyChecking=yes -o PasswordAuthentication=no -x host1.example.com /timesten/host1/instance1/bin/ttenv ttDaemonAdmin -stop TimesTen Daemon (PID: 3858, port: 11000) stopped. % ssh -o StrictHostKeyChecking=yes -o PasswordAuthentication=no -x host2.example.com /timesten/host2/instance1/bin/ttenv ttDaemonAdmin -stop TimesTen Daemon (PID: 3859, port: 12000) stopped. % ssh -o StrictHostKeyChecking=yes -o PasswordAuthentication=no -x host1.example.com /timesten/host1/instance1/bin/ttenv ttGridAdmin mgmtActiveStart This management instance is now the active % ssh -o StrictHostKeyChecking=yes -o PasswordAuthentication=no -x host2.example.com /timesten/host2/instance1/bin/ttenv ttGridAdmin mgmtStandbyStart Standby management instance started
両方の管理インスタンスが稼働していることを示すメッセージを受信するまで、
ttGridAdmin mgmtExamine
コマンドの再実行を続けます。% ttGridAdmin mgmtExamine Both active and standby management instances are up. No action required. Host Instance Reachable RepRole(Self) Role(Self) Seq RepAgent RepActive Message ---------------------------------------------------------------------- host1 instance1 Yes Active Active 567 Up Yes host2 instance1 Yes Standby Standby 567 Up No
-
いずれかの管理インスタンスを再度稼働させる
スタンバイ管理インスタンスが停止していることに気付いたら、できるだけ早くスタンバイ管理インスタンスを再作成することが重要です。そうしない場合、さらにアクティブ管理インスタンスも停止した場合に、グリッド・トポロジが以前とは大幅に異なるものになる可能性があります。つまり、アクティブ管理インスタンスが停止したか、障害が発生し、最適なオプションはスタンバイ管理インスタンスを再度稼働させることであるが、スタンバイ管理インスタンスがある程度の期間停止している場合、次のような現象により間違ったグリッド・トポロジが生成される可能性があります。
-
最近グリッドにインスタンスを追加した場合、それらが失われる可能性があります。
-
最近グリッドからインスタンスを削除した場合、削除が取り消される可能性があります。
-
最近データベースを作成した場合、それらが削除される可能性があります。
-
最近データベースを破棄した場合、それらが再作成される可能性があります。
1つの管理インスタンスのみを再度稼働させることができる場合は、このインスタンスをアクティブ管理インスタンスとして再アクティブ化します。次の例では、host2
ホスト上の管理インスタンスが停止しており、host1
ホスト上の管理インスタンスを再度稼働させることができたと仮定しています。