質問: ディザスタリカバリーにおけるグローバルipアドレス 繁忙期が年に数度あるwebサイトにおいてディザスタリカバリーとして、 サービス提供サーバーがダウンした時に別サーバーへ誘導したいと考えています。 障害時の切り替えは、dnsラウンドロビンでは携帯電話等で問題が生じると噂されているため、 ロードバランサー(冗長化目的)で対応しようと調査しています。 この際、主系と待機系拠点のサーバー配置施設は地理・ネットワーク経路・運営業者を全く別で構成した場合、ロードバランサーに付与するvip(webサイトのip)は、どこのグローバルipを利用するべきなのでしょうか? 2拠点の何れかのネットワークに障害が起きた際に、切り替え出来ないと問題ですので、 2拠点の何れかのグローバルipをvipに利用するのは如何なものかと悩んでいます。 結局、安心できるインフラを自前構築するか、vip非公開でロードバランサー個別をdnsラウンドロビンするしかないのでしょうか? [構成イメージ:dnsラウンドロビン利用時] □:公開するip □ーwebサイト | □ーwebサイト [構成イメージ:ロードバランサー利用時] ■:公開するvip □:ロードバランサー □ーwebサイト ■ー|x| □ーwebサイト
回答: ロードバランサが備える冗長切替機能は、せいぜい同じネットワークセグメント内で代表vipアドレスを持たせることができる程度で、拠点を超えて切替えはできないのものがほとんどなので、drには不向きでしょう。 > どこのグローバルipを利用するべきなのでしょうか? それぞれの拠点で、インターネット回線業者が指定するipアドレスしか使えないのが普通です。拠点(に引き込むインターネット回線)が違えば割り当てられるipアドレス帯は全く違うことが普通なので、それぞれの拠点は違うipアドレスで運用しなければなりません。 > 結局、安心できるインフラを自前構築するか、vip非公開でロードバランサー個別を > dnsラウンドロビンするしかないのでしょうか? dnsラウンドロビンが唯一の方法ではないのですが、 「拠点aと拠点bにwebサイトを作り、通常時は拠点aにアクセスさせ、dr時は拠点bにアクセスさせるようにしたい」 場合は、dnsで対応することが多いようです。 dnsラウンドロビンを使用したくないなら、dr時にdnsのa/aaaaレコードを変更する操作をするしかありません。手動で変更するほかに、拠点aが生きているか常に応答を監視し、応答がなくなれば拠点bのipアドレスにアクセスさせるようにdnsレコードを自動的に変更する仕組みを作ることも考えられます。 (ただ、drに関しては自動で対応しないことが多いです。自動監視切替機能を作るコストもかかりますし、災害という非常時には、人間の判断が必要な場合が多いからです) 手動で変更するのは時間がかかりますし、dnsレコードの変更しても伝搬遅延がありますが、そもそも災害からの復旧(disaster recovery) という非常時の扱いなので、dnsレコードの変更が確実にできる体制を作れば、切替に少々の時間がかかることについては許容してくれるお客さんは多いです。 なお、特殊な構成を取れば、2つの拠点で同じvipで運用(通常時は拠点aでそのvipを使用し、dr時には拠点bにvipを引き継ぐイメージ)することができますが、インターネットの経路制御に関与する必要があり、中小規模ispを運営できる程度のスキルと、経路制御が可能な高額なルータ設備等が必要です。dnsの伝搬遅延が許容できないサービスや、拠点切替にdnsが使えないサービス(たとえばdnsサービスそのもの)のdr対策では、このようなことをやります。