冗長性と信頼性を確保するために、2 つの ISP があります (プライマリは 24.xxx の 100Mi ケーブル [高速ですが信頼性が低い]、バックアップは 70.xxx の 1.5Mi DSL)。各サービスには専用の Red Hat Linux ルーター ファイアウォールが接続されており、UPS から電源が供給されています。各ファイアウォール/ルーターの LAN 側は、家の両端にある異なるチャネルで同じ SSID を持つ 2 つの Wi-Fi アクセス ポイントを含む、ホーム ネットワーク上の他のデバイスとともに 24 ポート スイッチに接続されています。
私の質問は2つの部分から成ります。
1) プライマリ ルーターでサービスに障害が発生した場合 (月に数回、ほとんどの場合土曜日の朝に発生するようです)、Windows/iOS/android/linux/solaris クライアントを 2 番目のルーターにフェールオーバーするように構成するにはどうすればよいですか?
2) サービスが復旧したときに、クライアントにプライマリ ルーターの使用に戻るように通知するにはどうすればよいですか?
DHCP が提供されるときに両方のルーターをリストし、クライアントに必要なものを選択させるようにすることは可能ですか? これは、パート 1) では機能するようです。ただし、プライマリがオンラインに戻ったときにバックアップ接続を手動で/偽装して失敗させない限り、パート 2) では何も起こりません。
最終的に、私の目標は、サービスが中断しても 2 分以内にすべてのデバイスでインターネット サービスを維持し、そのたびにクライアントやルーターを (手動で) 変更したり再構成したりすることなく、サービスが中断しないようにすることです。
そのマニュアルの名前さえわかれば、喜んで RTFM します。アドバイスをいただければ幸いです。
答え1
この猫の皮を剥ぐ方法はたくさんあるがkeepalived
、オプション。
keepalivedは仮想化実装では、どちらかのルーターに属する「仮想」IP を定義できます。通常、1 つをマスターとして指定し、もう 1 つをセカンダリとして指定します。マスターが使用できなくなった場合は、セカンダリが IP アドレスの所有権を取得します。
あなたのシナリオでは、これはクライアントのゲートウェイ IP になります。こうすることで、クライアントは常に同じ IP アドレスと通信し、マスターに応じて最初のルーターまたは 2 番目のルーターに送信されます。
マスター ルータがダウンすると、セカンダリ ルータが自動的に引き継ぎます。マスター ルータとセカンダリ ルータは「hello」パケットを交換し、セカンダリ ルータがマスター ルータからの応答を受信できなくなると、セカンダリ ルータが IP を引き継ぎます。
ただし、リンクを監視し、マスターが自身を利用不可モードにするには、さらに多くのことが必要になります。これは、「トラック スクリプト」を使用して実行できます。
たとえば、マスターの設定は次のとおりです。
vrrp_instance RouterVRRP {
state MASTER
interface eth0
virtual_router_id 50
priority 200
advert_int 1
virtual_ipaddress {
10.10.10.100/32 dev eth0
}
track_script {
check_google
}
}
次に、トラック スクリプトの定義を示します。
vrrp_script check_google {
script "/scripts/pinggoogle.sh"
interval 3 # check every 3 seconds
fall 3 # require 3 fails for down
rise 2 # require 2 successes back up
}
スクリプトは Google に ping を送信し、すべてが正常であれば 0 を返し、失敗であれば 1 を返します。