ロードバランサ(LB)配下にあるサーバ間で通信したい場合にルーティングがうまくいかないことがあります。そのような場合にhostの名前解決ルールの定義によって解決する方法です。
例
WebServer間でFQDNによるHTTPリクエストを送る場合、宛先が一旦名前解決されてグローバルIPアドレスとなりますので直近のスイッチ経由でパケットは送られません。そしてロードバランサはExternalのインターフェースからWANに向かってしかパケットを送りませんのでLAN側からのリクエストには応答できません。
そこでサーバサイドから見たネットワークに少しおまじないを加えてあげます。
(1) まずhostsにローカルIPアドレスのFQDNを記載します
# vi /etc/hosts
------------------------
192.168.150.11 www.shinkaku.jp
192.168.150.12 www.shinkaku.jp
192.168.150.13 www.shinkaku.jp
192.168.150.14 www.shinkaku.jp
------------------------
これだけではまだhostsが使用されません
(2) 名前解決ルールを設定
# vi /etc/host.conf
------------------------
order hosts,bind
multi on
------------------------
1行目:名前解決にhostsファイルが優先されます。
2行目:同じFQDNが複数あった場合、複数のIPアドレスを返す設定です。
これらの設定でLBを介さずにサーバ間通信が出来るようになりますが、LBが持つ高度なヘルスチェックやフェイルオーバーならびにL7機能の恩恵を受けることはできません。
(追記:2014.4.30)
よく考えたらサーバでbind(named)を動かしてリゾルバDNSとしてローカルを参照するようにすれば同じようなことが出来そうですね。何と言ってもDNSラウンドロビンが使えるのである程度の負荷分散にもなります。
例
--FW---LB---SW--+--WebServer1(192.168.150.11) ↑
+--WebServer2(192.168.150.12) この間でFQDNによる
+--WebServer3(192.168.150.13) 通信が出来ない
+--WebServer4(192.168.150.14) ↓
LB
ext: 210.*.*.123
lan: 192.168.150.1
FQDN
www.shinkaku.jp 210.*.*.123
WebServer間でFQDNによるHTTPリクエストを送る場合、宛先が一旦名前解決されてグローバルIPアドレスとなりますので直近のスイッチ経由でパケットは送られません。そしてロードバランサはExternalのインターフェースからWANに向かってしかパケットを送りませんのでLAN側からのリクエストには応答できません。
そこでサーバサイドから見たネットワークに少しおまじないを加えてあげます。
(1) まずhostsにローカルIPアドレスのFQDNを記載します
# vi /etc/hosts
------------------------
192.168.150.11 www.shinkaku.jp
192.168.150.12 www.shinkaku.jp
192.168.150.13 www.shinkaku.jp
192.168.150.14 www.shinkaku.jp
------------------------
これだけではまだhostsが使用されません
(2) 名前解決ルールを設定
# vi /etc/host.conf
------------------------
order hosts,bind
multi on
------------------------
1行目:名前解決にhostsファイルが優先されます。
2行目:同じFQDNが複数あった場合、複数のIPアドレスを返す設定です。
これらの設定でLBを介さずにサーバ間通信が出来るようになりますが、LBが持つ高度なヘルスチェックやフェイルオーバーならびにL7機能の恩恵を受けることはできません。
(追記:2014.4.30)
よく考えたらサーバでbind(named)を動かしてリゾルバDNSとしてローカルを参照するようにすれば同じようなことが出来そうですね。何と言ってもDNSラウンドロビンが使えるのである程度の負荷分散にもなります。
コメント