単一サーバーの場合、メンテナンスのためにWebサーバーをオフラインにするにはどうすればいいですか?

単一サーバーの場合、メンテナンスのためにWebサーバーをオフラインにするにはどうすればいいですか?

当社では、SQL Server と IIS をホストする Windows 2008R2 サーバーを所有しています。

更新とバックアップのために時々停止する必要があります。

これがセットアップです

専用の Windows 2008R2 サーバーは、Windows 2008R2 VPS Web サーバー (停止する必要があるサーバー) をホストします。

このサーバーを停止する場合、ホストが見つからないというフラグではなく、現在メンテナンス中であることをドメインに付ける方法が必要です。

ドメインは私の Web サーバーに直接ポイントしているので、サーバーがダウンすると、ホストが見つからないというメッセージしか表示されません。ドメインは godaddy によってホストされています。

これを回避する方法はありますか? 何か提案はありますか?

答え1

何らかの別のサーバーを追加しない限り、回避する方法はありません... さまざまなオプションがありますが、結局のところ、何らかの形でサーバーの冗長性が必要になります。

答え2

現在、設定は次のとおりです:

DNS -> Your Server

したがって、何かを実行できる唯一のポイントは、ドメインをリダイレクトすることです。

DNS -|   Your Server
     |-> Some Other Server Hosting 'This is Down'

残念ながら、DNS は非常に積極的にキャッシュされるため、サイトをダウンさせるか、またはサイトを復旧させるかにかかわらず、更新が全体に伝播するまでにかなりの時間がかかることがあります。DNS レコードの TTL を短くすると役立ちますが、パフォーマンスが少し低下します。

一般的に最善策は、マシンの前にリバース プロキシまたはロード バランサーを配置することです。

DNS -> Load Balancer -> Your Server

こうすることで、ロード バランサーが指す場所を変更したり、ロード バランサー自体に「This is Down」メッセージをホストさせたりすることができます。また、複数のサーバーを持つより信頼性の高い構成も可能になります。

DNS -> Load Balancer +--> Server 1
                     +--> Server 2

この構成では、一度に 1 台のマシンのみを停止でき、サイトが停止することはありません。

ちなみに、マシンを再起動する必要がない場合、または再起動中にサイトがダウンしてもかまわない場合は、最後のオプションとして、これらすべてを 1 台のマシンに凝縮します。マシン上で Nginx を実行し、通常は IIS にプロキシしますが、必要に応じてエラー メッセージを表示します。

答え3

Windows サーバーの前に haproxy を配置し、ホスト ステータス チェックを構成して、「サービスは利用できません」ページを構成することができます。

関連情報