私はSolaris 11のILBを使用して2つのバックエンドDNSサーバー間にロードバランサーを作成しようとしています。これは私の要件です。
2つの外部IP:.XXX.YYY、.XXX.ZZZ - クライアントが接続するDNS IP。この2つの外部IPのHA構成にある2つのILBボックス2つのバックエンドDNSサーバー
2つの異なる着信IPにある2つのDNSサーバー(ns1とns2)の間に2つのILBボックス(ilb1とilb2)のロードバランシングをしたいと思います。私はilb1が.XXX.YYYではプライマリで、.XXX.ZZZではセカンダリで、ilbはその逆であることを望みます。これにより、DNSサーバーまたはILBサーバーが失敗してもDNS要求は影響を受けずに続行されます。ただし、バックエンドサーバーはDNS要求の実際のSRC_IPを表示できる必要があるため、これに対して完全なNATを実行できません。完全なNATを実行すると、DNSサーバーはすべての要求がILBから来ると考えます。ボックスではなく、クライアント自体です。
HALF-NATを採用すると、DNS要求に対してSRC_IPが正しく保持されます。ただし、これはパケットが要求されたILBボックスを介してルーティングされる必要があるため、パケットが正しいIPを使用してクライアントに到達する必要があることを意味します。それ以外の場合、クライアントはパケットを破棄します。 (「予期しないソースの応答」など)。これは難しい質問です。 IPは2つなので、正しいILBボックスを介して要求を確実に再ルーティングするにはどうすればよいですか? DNSボックスの/ etc / defaultrouterは1つのIPしか使用できないため、応答の約半分が削除されます。
この設定は大丈夫ですか?私の説明は泥のように明確ですか?
ベストアンサー1
必要なものはほとんど備えているようですが、魔法が不足しています。
まず、複数のVIPアドレスを処理するには、VRRP(またはエニーキャストも可能ですが、そうではないようです)を使用する必要があります。この部分がうまく機能すると明示的に言及していませんが、おそらくそうだろうと思います。 ILBとルーティングについてのみ議論します。
良いニュースは、ILBを介してルーティングを強制的に再実行する必要がないことです。
あなたが望むものは呼び出されます直接サーバーに戻るそして、ILBの「ステータス非保存」モードを使用してください。
その機能は次のとおりです。
- LB は、宛先 L2 イーサネットアドレスを物理サーバー L2 アドレスに変更します。
- RSは、実際のL3ソースと実際のL3宛先を含むパケットを受信します。
- RS は正しい L3 ソースとターゲットで応答します。
DSRの設定方法に関するOracleドキュメント正しく設定されたDSRでサンプルコードを完成させます。 (メモ:Oracleのドキュメントは正確ですが、構文が悪いです。明確に言えば、ステップ1、3、4はILBで実行され、ステップ2は物理サーバーで実行されます。 )
簡単に説明してください:
type=DSR
コマンドilbadm create-rule
で使用lo0
各物理サーバーにVIPアドレスを追加する
物理サーバーがLinuxの場合は、一部のルーティングおよびarpスプーフィング保護も無効にする必要があります。
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce