
運用中の Web サーバーの IP アドレスを変更する必要があります。ダウンタイムなしで変更できるかどうか知りたいです。有効と思われる手順は次のとおりです。
- 新しい静的IPアドレスを予約する
- 切り替えるドメインのDNSにIPアドレスを追加する
- 新しい静的IPを使用するKubernetes構成をデプロイする
- 古いDNSエントリを削除する
- 古い静的IPアドレスの予約を解除する
これは動作すると期待していいのでしょうか? 新しい IP アドレスの反対側で何もリッスンしていない場合、ほとんどのものが他の IP アドレスに変更されるのでしょうか? それとも完全に失敗するのでしょうか?
答え1
質問のキーフレーズは「ダウンタイムなし」であり、明らかに構成に対する答えは「いいえ」です。実稼働 Web サーバーが であると仮定しましょうproduction.example.com
。
元の投稿のタイムラインは次のとおりです。
- 切り替えるドメインのDNSにIPアドレスを追加する
この時点で追加するFQDNは何ですか?それがアドレスでない場合production.example.com
、この新しいAレコードは新しいIPへのトラフィックのルーティングを容易にするものではありません。はA レコードを設定production.example.com
すると、TTL が機能します。私は通常、TTL を 300 (5 分) に設定していますが、これはステップ 3 を実行するのに 5 分かかるという意味ではありません。新しいアドレスがクライアントに伝播し始めると、クライアントは新しい IP で HTTP リクエストを送信しようとし始めます。
- 新しい静的IPを使用するKubernetes構成をデプロイする
これを実行して Web サーバーを再起動すると、現在の TCP セッションがすべて切断され、実行中の HTTP(s) リクエストはすべて失敗します。
「新しいIPアドレスの反対側で何もリッスンしていない場合、ほとんどのものは他のIPアドレスに変更されるのですか?」という質問については、はい、いいえHTTP アクティビティであれば問題ありません。
私の経験では、「ダウンタイムなし」という要件を満たすのは困難です。困難というのは、複雑で費用がかかることを意味します。目指すべきは、ダウンタイムを最小限に抑えることです。これは、IP アドレスの変更、別のサーバーへの移動、基盤となるデータベースのアップグレードなど、Web サイトの移行に確実なプロセスを用意することで実現できます。プロセスを開発したら、トラフィックがどのように動作するか、想定がどこで確認または否定されるかを確認するためにテストします。目的のダウンタイム メトリックを達成できるようにプロセスを改良し、再度テストします。繰り返します。