STUDIO PLUS TWO ブログ

横浜のウェブエンジニアチーム、STUDIO PLUS TWO(スタジオ・プラスツー)の技術ブログです。https://studioplustwo.jp/

Amazon OpenSearch Service 設定変更時の Blue/Green デプロイについて

TL;DR

  • Amazon OpenSearch Service では、ドメインの合計ノード数が1の場合でも、ほぼ無停止で設定の変更ができる。
  • 設定変更が完了するまでは、旧設定のままでドメインが稼働する。
  • ノード数が1の場合停止時間が発生する Elastic Cloud とは挙動が異なるため、OpenSearch Serviceに慣れていないと「ノードが止まってない=設定は即時反映されたのか?」と誤解する可能性がある

どういうことか

docs.aws.amazon.com

OpenSearch Service では、ドメインの更新時に Blue/Green デプロイプロセスが使用されます。Blue/Green は通常、2 つの本稼働環境 (ライブとアイドル) に使用して、ソフトウェアの変更時に両者間で切り替える方法を指します。OpenSearch Service の場合は、ドメインの更新用に新しい環境を作成し、これらの更新の完了後に新しい環境にユーザーをルーティングする方法を指します。この方法では、新しい環境へのデプロイに失敗しても、ダウンタイムを最小限に抑えることができ、元の環境を維持することができます。

Blue/Green デプロイ

管理コンソール上で OpenSearch ドメインのセキュリティ設定を変更しようとすると、以下のようなメッセージが表示される。

f:id:studioplustwo:20211110155002p:plain

暗号化設定を更新するために、Amazon OpenSearch Service はパフォーマンスに影響を与える可能性のある Blue/Green プロセスを使用します。

OpenSearch Service でドメインの設定変更を行う場合、

  • 新しい設定を適用した新ノードを起動
  • 新ノード起動後、ネットワークを旧ノードから新ノードへ切り替え

という手順を踏むことで、稼働状態を維持したまま設定が変更される。この挙動は「Blue/Greenデプロイ」と呼ばれる。

f:id:studioplustwo:20211111155854p:plain

設定適用中は、一時的にノードの数が自動的に増加する。(多くの設定変更の場合、追加料金はかからないようだ)

これにより、OpenSearch Serivceでは設定の変更反映中でも、普通にドメインにアクセスすることができる。

変更反映中かどうかの表示がわかりづらい

ただし、注意しなければならない点があり、設定変更中かどうかの表示が微妙にわかりづらいのである。

f:id:studioplustwo:20211111153521p:plain

ドメインの一覧表示。設定変更中の場合は、ステータス欄に「処理中」と表示される。

f:id:studioplustwo:20211111153727p:plain

一方、設定変更が完了した通常時は「アクティブ」と表示される。

変更反映中は、古い設定内容が適用される

Blue/Green デプロイによる変更反映中は、前述の通り通常のアクセスが可能である。

ただし、変更反映中は旧設定が適用され、変更が完了したタイミングで即時新設定が適用される、というような動作になる。

…上記の挙動は当然といえば当然なのだが、「ドメインが停止し、再起動完了後は新設定になっている」でも「変更ボタンを押したタイミングで即時新設定となる」でもない点に注意。

設定が適用されたタイミングがわかりづらいかも?

OpenSearch Service では、たとえドメインに1ノードしか存在しない場合でも、設定変更によりドメイン全体が停止することはない。

この挙動は、2ノード以上の場合 ローリングで設定が適用される(=1ノードの場合はドメイン停止時間が発生する) Elastic Cloud とは異なるものである。

そのため、Elastic Cloudに慣れている人の場合、

  • 「1ノードなのに設定変更でドメインが停止しない」
  • →「設定は即時反映されている?」

...という錯覚に陥る可能性がある。(現に私はそうでした...)

また上述の通り、設定変更中から設定変更完了状態に移行したタイミングが若干分かりづらい。

そのため、特にセキュリティ設定を変更している場合は、あるタイミングで接続できたものが突然接続できなくなる(またはその逆)という不可解現象に悩まされる可能性もあり、1ノードでの検証・テスト運用などでは注意が必要。

以下所感

Blue/Green デプロイの挙動については、1ノードでも停止時間が発生しないため非常に便利なものだという認識だが、如何せんステータスの表示が少々分かりづらいという点に問題があるように思う。

Elastic Cloud だと、設定を変更した場合は、変更中である旨がデカデカと表示されて誤解がないようになっていた記憶があるので、Amazon もその辺の表示をもっと親切丁寧に改善してほしいなあ...と思った昨今。