私は2つのISPと2つのIPアドレスを持つサーバーを持っています。
eth0: 161.0.0.2
eth1: 171.0.0.2
www.example.com
DNS LBを持つように2つのAレコードを設定しました。
アプリケーションはこのようにうまく機能し、Linuxボックスには接続の非対称ルーティングを防ぐためにポリシーベースのルーティングが設定されています。発信パケットは、着信接続が確立されたのと同じインターフェイスを経由します。
今残っている唯一の問題は、デフォルトゲートウェイが設定されていることです。161.0.0.1
また、LBを実装するか、少なくとも発信接続のフェイルオーバーを実装したいと思います。
私ができる1つの方法は、cronjobを使用して特定のホストをpingし、pingが失敗した場合のデフォルトパスを変更することですが、171.0.0.1
この方法はあまりにも不安定に見えます。
デフォルトパスをフェイルオーバーする方法に関する提案はありますか?
答え1
実際のルーティングプロトコルを知りたくない場合は、最善のアドバイスは、プログラムを継続的に実行し、定期的に最初の2ホップ(設定されたアドレスの使用、つまり161.0.0.1と171.0.0.1)をpingしてそのうちの1つをインストールすることです。デフォルトのパス応答として。おそらく、選択したスクリプト言語を使用してこれを行うことができます。もちろん私はCで直接行うこともできます。実際にはあります(ただし、コードが見つかりません)。非常にシンプルで正確で、Cで実装すると、サーバーへの影響が大幅に減少します。
答え2
好きじゃなくても答えがあります。 DNSの複数のRR Aは高可用性を提供しません。答えは主にクライアント/対応するDNSサーバーによって異なります。
クライアントがダウンしたISPのIPアドレスを確認すると、それをキャッシュに保持して他のクライアントを試みないため、他のクライアントがサイトの閉鎖について不平を言っている間にサイトにアクセスできるクライアントのセットが1つあります。
低TTLも役に立ちません。一部のDNSクライアント/ラージISPは低TTLを無視することが知られているため、DNSのTTLが低くても接続できないクライアントのセットがあります。
考えられる解決策の1つは、CNDサービスを使用することです。ユンヤオをクリックし、そこに2つのIPアドレスを設定します。
外部パスの冗長性を確保するもう1つのより洗練された方法は、AS番号を要求し、両方のネットワークにプロバイダー独立IPアドレススペースを使用し、プロバイダーとBGPピアリングを実行することです。
発信ルーティングについては、両方のISPのトラフィックを利用するために、対応するゲートウェイ、ソースベースのルーティングを使用する戦略を開発することをお勧めします。http://www.novell.com/support/kb/doc.php?id=7008874