Windows serverでDSRを行う方法
※まずDSRとは何ぞや?という方はこちらを見てください。
さて、以前書いた記事にはWindowsサーバでDSRを行う方法が含まれていないことに気づきました。そこで今回はその方法を記します。
(前提を記しましょう。このネットワークのネットワークアドレスが172.16.0.0、ネットマスクが255.255.0.0だっとします。そこにVIP172.16.115.10、ノードとなるWEBサーバが172.16.115.1と172.16.115.2の2台構成だったとした場合を考えてみます。)
【loopback adapterをインストールする】
DSRを行う場合各サーバにループバック設定を行わなければなりませんが、Windowsの場合デフォルトでloopbackアダプターがインストールされていませんのでまずはloopback adapterをインストールする必要があります。手順は以下の通り。
- [スタート] ボタンをクリックし、[設定] をポイントします。次に [コントロール パネル] をクリックし、[ハードウェアの追加と削除] をダブルクリックします。
- [デバイスの追加/トラブルシューティング] をクリックし、[次へ] をクリックします。
- [新しいデバイスの追加] をクリックし、[次へ] をクリックします。
- [いいえ、一覧からハードウェアを選択します] をクリックし、[次へ] をクリックします。
- [ネットワーク アダプタ] をクリックし、[次へ] をクリックします。
- [製造元] ボックスの一覧で、[Microsoft] をクリックします。
- [ネットワーク アダプタ] ボックスの一覧で、[Microsoft Loopback Adapter] をクリックし、[次へ] をクリックします。
- [完了] をクリックします。
【loopback設定を行う】
次にloopback adapterのTCP/IP設定を開いてください。ここでIPアドレスにはVIP、サブネットマスクにはそのネットワークのサブネットを入れ、その他は空欄にしてください。設定例は以下の通り。
【テスト】
WEBブラウザーから「http://172.16.115.10/」と入力してみてください。無事動けば設定完了です。
※追記(2009/11/16)
どうやら上記設定はWindows2003のみ有効とのことです。下記を参照しました。
http://d.hatena.ne.jp/yoshifumi1975/20090316/p2
※おまけ
Fondry ServerIron系でのDSR設定例を記します。慣れてしまえば非常に簡単です。
server real node1 172.16.115.1
port http
server real node2 172.16.115.2
port http
!
!
server virtual SERVICE_IP 172.16.115.10
predictor least-conn
port http dsr
bind http node1 http node2 http
The comments to this entry are closed.
Comments
SubnetMask=255.255.255.255 ?
Alteonの設定出せますけど・・・。
Posted by: yama | March 19, 2006 10:52 PM
コメントありがとうございます。
が、???。すみません。どういうことでしょう?
Posted by: sanonosa | March 20, 2006 01:32 PM
すいません,コメントを省略しすぎました。
1つ目。loopbackアダプタの SubnetMaskは 32bit(255.255.255.255)が正しいのではないかと思います。
2つ目。Alteonでの設定例。しばらく F5触ってないっす。
...
/c/slb/real 1
ena
rip 192.168.1.1
submac ena #MACアドレス付け替え
/c/slb/real 2
ena
rip 192.168.1.2
submac ena #MACアドレス付け替え
...
/c/slb/group 1
add 1
add 2
/c/slb/port 1
client ena # server ena は不要
/c/slb/virt 1
ena
vip 192.168.1.254
/c/slb/virt 1/service http
group 1
nonat ena # NATもしない
...
Posted by: yama | March 21, 2006 12:59 AM
コメントありがとうございます。
Windowsの場合はloopback adapterのnetmaskを255.255.255.255にできないんです。なのでそのネットワークのnetmaskを入れることになります。
あとALTEONの例ありがとうございます。
Posted by: sanonosa | March 21, 2006 03:26 PM
255.255.255.255 じゃない件、理解しました。知りませんでした。
DSRに興味あります&使ってます。これからもよろしくお願いします。
Posted by: yama | March 22, 2006 10:04 PM
FoundryでのDSR構成ですが、業務でよく行います。
私の考えるDSR構成時のデメリットは、
・負荷分散方式の要件が複雑になると構成を変える必要がある
ということです。
DSR構成をとった場合、L7スイッチング方式は採用できません。アプリ側の要件が変わり、cookies もしくは URL 等でのパーシステンスが必要になるとネットワークの構成ごとかえる必要があるので、それがネックになって提案をためらうことが多々あります。
Posted by: ko | March 29, 2006 03:31 PM
>sticky機能があるロードバランサー
ServerIronではIPアドレスでのStickyでのDSR構成はOKです。
ServerIronがプロキシとして動作するような場合(cookie-switch,URL-switch)、戻りパケットを通す必要性からDSR構成が取れません。
他のベンダさんの機械ではどうなんでしょうか?
以前、BIG-IPについてはDSR構成自体をサポートしていないと取り扱いベンダのSEに聞いたことがあります。
Posted by: ko | March 31, 2006 02:20 PM
>sticky機能があるロードバランサー
ServerIronではIPアドレスでのStickyでのDSR構成はOKです。
ServerIronがプロキシとして動作するような場合(cookie-switch,URL-switch)、戻りパケットを通す必要性からDSR構成が取れません。
他のベンダさんの機械ではどうなんでしょうか?
以前、BIG-IPについてはDSR構成自体をサポートしていないと取り扱いベンダのSEに聞いたことがあります。
Posted by: ko | March 31, 2006 02:22 PM
Source の IPアドレスが変わるようなクライアントだと駄目ですね。携帯電話とかだとキャリアのゲートウェイがコロコロ変わるので面倒。最近は、Tomcat のセッションレプリケーションとかで何とかしちゃってます。
Posted by: yama | April 01, 2006 12:23 AM
はじめまして。DSRの実サーバにWindowsを用いた
ロードバランサ構成の調査をしていて
辿り着きました。
上記情報、とても参考になりWindowsXPではうまくDSRができるようになりました。ただし、実サーバをVistaにするとロードバランサから実サーバがパケットを受け取れない、あるいは、ackを返すことができないという状態になってしまいます。
XPとVistaは同様の設定にしているのですが、Vistaだけうまくいきませんので、何か情報をお持ちでしたら教えていただけると助かります。
Posted by: aiko2007 | October 15, 2007 09:05 PM
aiko2007さんこんにちは。
う~ん、残念ながらVistaでの構築経験はないのでわからないですが、Vistaのデフォルトセキュリティ設定もしくはセキュリティ系アプリケーションが怪しい気はしますね。お役に立てずにすみません。。。
Posted by: sanonosa | October 15, 2007 10:16 PM
ご返答誠にありがとうございます。
webサイトをいろいろ見て回りましたが、実サーバがvistaのDSR構築例が何もなく、困っておりました。
やはりセキュリティ周りでしょうか。もう少し調べてみます。
Posted by: aiko2007 | October 21, 2007 02:38 PM
DSRありがとうございます。
このサイトが一番わかりやすかったです
BIG-IP では、このような構成をする場合でも
ローカル側とグローバル側を別 VLAN にします。
必ず戻りのパケットが BIG-IP を通るので、
DSR の設定をする必要がありません。
なんですが BIG-IP の場合はメーカ、代理店ともに推奨していません。サポートも期待できません。
Posted by: しげきっくす | January 11, 2008 08:20 PM
WindowsでDSRをやっているということなので参考にさせてもらっています。
実際loopback adapterをインストールし、linux(CentOS)のlvs+keepalivedにWindowsサーバーを割り振るようにしたのですが、うまく動作してくれません。気になったのですが、
・例ではhttpですが、それ以外のポートでも実現可能でしょうか?
・LVSとWindowsサーバー側で利用するポートが異なる(LVS接続時は60000ポートだが、loopback adapterをインストールしたWindows側では60100で接続したい)場合は利用できないのでしょうか?
Posted by: とっとこ | August 26, 2008 07:37 PM
とっとこさん
コメントありがとうございます。実験できる環境がないので何とも言えませんが、両方共問題ないはずです。
うまくいくといいですね。^^
Posted by: sanonosa | August 26, 2008 10:48 PM