0

私のセットアップでは、Hazelcast を使用して状態とロックを共有し、同時に稼働して要求を処理するアプリケーションの 2 つのインスタンスがあります。セットアップはデフォルトで、すべてのデータが両方のノードにあり、50% がライブで、50% が他のノードのバックアップです。

Blue/Green デプロイをセットアップに追加して、リクエストの処理を中断することなく、誤ってデータや処理リクエストを失うことなく、新しいバージョンをデプロイできるようにしたいと考えています。

デプロイ中に、アプリケーションの 1 つのインスタンスを停止します。つまり、残りのインスタンスは 100% のライブ データを保持し、それを使用してリクエストを処理します。そのインスタンスで何か問題が発生した場合、すべてのデータが失われます (バックアップのセットアップはありません)。このリスクを喜んで受け入れます。

アプリケーションの新しいバージョンのインスタンスを起動すると、Hazelcast はキャッシュの再調整を開始し、各インスタンスで 50% がライブで 50% がバックアップされるようにします。この時点で、新しいインスタンスを live としてアドバタイズする前に、ブロックしてリバランスが完全に完了するまで待ちたいと思います。完了すると、新しいインスタンスにはライブ データの 50% とバックアップとしての 50% が含まれます。

リバランスが完了したら、2 番目のバージョンをダウンさせ、新しいバージョンを立ち上げると、Hazelcast がリバランスを初期化し、私はブロックし、リバランスが完了するのを待ってから、2 番目のインスタンスをライブとしてアドバタイズします。

Blue/Green デプロイメントはこれで完了です。

質問: リバランスが完了するまで (すべてのデータを受信するまで) 新しいインスタンスをブロックするにはどうすればよいですか?

4

1 に答える 1