7.2. メッセージの移行
7.2.1. メッセージの移行の概要 リンクのコピーリンクがクリップボードにコピーされました!
デプロイメントの失敗や意図的なスケールダウンによってクラスターデプロイメントのブローカーがシャットダウンする場合に、メッセージの移行はメッセージングデータの整合性を確保することです。Pod のドレイン(解放) というメソッドを使用するメッセージの移行は、メッセージングデータを保存するためにブローカーによって使用される永続ボリュームから「孤立した」メッセージの削除および再分配を指します。メッセージ移行を有効にすると、AMQ Broker Operator の一部であるスケールダウンコントローラーは、デプロイメント内のブローカー Pod のシャットダウンを検出します。スケールダウンコントローラーは、シャットダウンされた各ブローカー Pod の専用のドレイナー Pod を開始し、メッセージ移行の準備を行います。それぞれのドレイナー Pod はクラスター内の残りのライブブローカー Pod のいずれかに接続し、メッセージをそのライブブローカー Pod に移行します。移行が完了すると、それぞれのドレイナー Pod がシャットダウンします。稼働中のブローカーで使用されていた永続ボリュームは、「Released」の状態に戻ります。
AMQ Broker Operator 内のスケールダウンコントローラーは、単一の OpenShift プロジェクト内でのみ動作します。コントローラーは、別のプロジェクトのブローカー間でメッセージを移行できません。
ブローカーデプロイメントを 0 (ゼロ) にスケールダウンする場合、メッセージングデータを移行できる稼働中のブローカー Pod がないため、メッセージ移行は行われません。ただし、デプロイメントをゼロブローカーにスケールダウンし、元のデプロイメントに含まれていた一部のブローカーのみに戻っても、シャットダウンされたブローカーのドレイン Pod が起動します。
7.2.1.1. メッセージの移行の仕組み リンクのコピーリンクがクリップボードにコピーされました!
AMQ Broker Operator を使用して作成されたブローカーデプロイメントでメッセージ移行を有効にすると、スケールダウンコントローラーはブローカー Pod と同じプロジェクト namespace 内の Operator によって開始されます。
スケールダウンコントローラーは、それ自体を登録し、プロジェクト namespace の永続ボリューム要求(PVC)に関連する Kubernetes イベントをリッスンします。
スケールダウンコントローラーは、ボリューム要求の ordinal を確認して、孤立した PVC を確認します。ボリューム要求の ordinal は、プロジェクト namespace の StatefulSet の一部である既存のブローカー Pod の ordinal と比較されます。
ボリューム要求の ordinal が既存のブローカー Pod の ordinal よりも大きい場合、そのordinal の Pod は終了され、データは別のブローカーに移行する必要があります。
これらの条件が満たされると、ドレイナー Pod が起動します。ドレイン Pod はブローカーを実行し、メッセージ移行を実行します。次に、ドレイナー Pod は、孤立した PVC メッセージの移行先となる代替ブローカー Pod を特定します。
メッセージの移行を可能にするには、少なくとも 1 つ以上のブローカー Pod がデプロイメントで実行されている必要があります。
図7.2 スケールダウンコントローラーは、それ自体を登録し、PVC を削除して、永続ボリュームでメッセージを再配布します。
メッセージを運用ブローカー Pod に正常に移行した後、ドレイナー Pod はシャットダウンし、スケールダウンコントローラーは孤立した PVC を削除します。永続ボリュームが「Released」の状態に戻ります。
関連情報
- ブローカーデプロイメントをスケールダウンする際のメッセージ移行の例については、「 Migrating Messages Upon Scaledown」を参照し てください。