この章では、オペレータが障害からリカバリする方法について説明します。
オペレータは、アクティブTimesTenデータベースおよびスタンバイTimesTenデータベースの障害を自動的に検出し、障害を修正します。オペレータは、アクティブ・データベースの障害を検出すると、スタンバイTimesTenデータベースをアクティブ・データベースに昇格させます。データベースを使用しているクライアント/サーバー・アプリケーションは、新しいアクティブ・データベースに自動的に再接続されます。処理中のトランザクションはロールバックされます。準備した文は、アプリケーションで再準備する必要があります。オペレータは、新しいスタンバイ・データベースを構成します。
この例では、アクティブTimesTenデータベースの障害をシミュレートします。これは、デモのみを目的としています。本番環境では実行しないでください。
kubectl
delete
pod
コマンドを使用して、アクティブ・データベース(この場合はsample-0
)を削除します
% kubectl delete pod sample-0
kubectl
describe
コマンドを使用して、オペレータがどのように障害からリカバリするかを確認します。オペレータは、スタンバイ・データベース(sample-1
)をアクティブに昇格させます。sample-0
データベースに接続されていたすべてのアプリケーションは、TimesTenによってsample-1
データベースに自動的に再接続されます。短時間の停止後、アプリケーションは引き続きデータベースを使用できます。アクティブ・スタンバイ・ペアの状態の詳細は、データベースのアクティブ・スタンバイ・ペアの状態の監視を参照してください。
ノート: この例では、3つの状態変更に対するMessage
列のテキストが2行に表示されています。ただし、これら3つの状態変更に対する実際の出力は1行に表示されます。
% kubectl describe ttc sample Name: sample ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- - StateChange 2m1s ttclassic TimesTenClassic sample: was Normal, now ActiveDown - StateChange 115s ttclassic Pod sample-1 Database Updatable: Yes - StateChange 115s ttclassic TimesTenClassic sample:was ActiveDown, now StandbyDown - StateChange 115s ttclassic Pod sample-1 RepState ACTIVE - StateChange 110s ttclassic Pod sample-0 High Level State Unknown - StateChange 63s ttclassic Pod sample-0 Pod Phase Running - StateChange 63s ttclassic Pod sample-0 Agent Up - StateChange 63s ttclassic Pod sample-0 Instance Exists - StateChange 63s ttclassic Pod sample-0 Daemon Up - StateChange 63s ttclassic Pod sample-0 Database None - StateChange 42s ttclassic Pod sample-0 Database Loaded - StateChange 42s ttclassic Pod sample-0 Database Updatable: No - StateChange 42s ttclassic Pod sample-0 RepAgent Running - StateChange 42s ttclassic Pod sample-0 CacheAgent Not Running - StateChange 42s ttclassic Pod sample-0 RepScheme Exists - StateChange 42s ttclassic Pod sample-0 RepState IDLE - StateChange 36s ttclassic Pod sample-0 High Level State Healthy - StateChange 36s ttclassic Pod sample-0 RepState STANDBY - StateChange 36s ttclassic TimesTenClassic sample:was StandbyDown, now Normal
Kubernetesは新しいsample-0
ポッドを自動的に生成し、削除したポッドに置き換えます。オペレータはそのポッド内でTimesTenを構成し、ポッドのデータベースを新しいスタンバイ・データベースとして起動します。データベースのレプリケート・ペアは、再び正常に機能します。