[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:53349] Re: LVS NATでロードバランス
丁寧な回答をしていただきありがとうございました。
次の質問が支離滅裂にならぬように、質問内容を考えていましたらお礼を書くのが遅くなってしまいした。申し訳ありませんでした。
‘ldirectord’の設定は問題なくできました。‘keepalived’も同様に試してみましたら、負荷分散は機能していました。理由は分かりませんが、試験のチェク用と考えていた私のPCが何故だか反応しなかっただけでした。外部のPCからのテストは問題が生じませんでした。
とりあえず、ご教授頂いた‘ldirector’の設定をメモして置きます。
ルターはNTTよりレンタルのRT-200KIです。
AA)DHCPサーバ設定
DHCPサーバ機能 有効
割り当て開始 IPアドレス 192.168.2.2
割り当て終了 IPアドレス 192.168.2.11
固定IPアドレスで使用する端末の情報設定
IPアドレス / MACアドレス 192.168.2.100 / 00:BC:2C:1D:21:3B
BB) 静的NAT設定
WAN側 IPアドレス WAN側ポート 開始 - 終了 -> LAN側転送IPアドレス
123.123.123. 33 http(80) ->
192.168.2.100
CC) NAPT設定
WAN側ポート 開始 - 終了 / プロトコル -> LAN側転送IPアドレス : ポート
http(80) / TCP -> 192.168.2.100 : (80)
LVS-NAT での設定で.
【環境】
|
[123.123.123. 33] パブリックIPアドレス
+-----------------------+
| Router DNAT |上記のように設定済み
+-----------------------+
[192.168.2.1]
|
|
[192.168.2.100]
+---------------------+
| Debian BOX |
+---------------------+
[192.168.10.1]
|
+----------+----------+
| |
[ *1 ] [ *2 ]
+--------+ +--------+
+ RS 1 | | RS 2 |
+--------+ +--------+
*1 : 192.168.10.5
*2 : 192.168.10.6
【手順】
(1) ip_forward を有効にする
# vi /etc/sysctl.conf
(下記を追加)
net.ipv4.ip_forward = 1
保存後,sysctl -pで反映.
(2) ldirectord をインストールする
# apt-get install ldirectord
(3) ldirectord を設定する(ldirectord.cf を作成する)
# mkdir /etc/ha.d/conf
# vi /etc/ha.d/conf/ldirectord.cf
virtual = 192.168.2.100:80
real = 192.168.20.105:80 masq 1
real = 192.168.20.106:80 masq 1
protocol = tcp
scheduler = rr
checktype = connect
※ ECV チェックをする場合は・・・
checktype = negotiate
servite = http
request = "/health.html"
receive = "OK"
virtual は行頭にスペースは入れないで,
real 以降は行頭に「4 つ以上の半角スペース」 or「TAB」を入れる。
(4) ifconfigでeth0:0に仮想IPアドレスをつけ足す
# ifconfig eth0:0 192.168.2.100 netmask 255.255.0.0 broadcast 192.168.2.255
(4) ldirectord を起動する
# /etc/init.d/ldirectord start
(5) LVS の状況を確認する
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.10.100:80 rr
-> 192.168.20.105:80 Masq 1 0
0
-> 192.168.20.106:80 Masq 1 0
0
尚、ルータ機能を使わず、“Debian Box”にプロバイダとPPPoEで直接に繋いでも結果は同じで外部のPCでの試験では問題は生じず、負荷分散されました。
お礼が送れた無礼をお詫びすると供に、改めて御礼を申し上げます。
ありがとうございました。
新たな質問になります。
上記設定で、“Debian Box”をサービスプロバイダと直接にPPPoEで繋いだ場合、下記の様な記述のitptablesで試みたのですが、リアルサーバの192.168.10.5には繋がりますが、192.168.10.6のリアルサーバには負荷分散しません。『Iptablesの記述の問題ではなく、パッチを宛がう必要があるのでは?』と考えます。
今使っているDebian/GNU Linux 2.6.26-2.486のOSに、添付URLのパッチ、(ipvs-nfct-2.6.26-1.diff
- 2.6.26, July 17, 2008)を宛がうことが出きるか?
http://www.ssi.bg/~ja/nfct/
が質問になります。質問はこのipvs-nfct-2.6.26-1.diffであるパッチはDebian仕立てのkerenel (Debian/GNU Linux 2.6.26-2.486)では使用ができず、The Linux Kernel
ArchivesからLinux 2.6.26-1のカーネルをインストールしないといけないのかです。
宜しくお願いします。
尚、iptablesの記述の問題であれば、下記を
#!/bin/sh
INTIF="eth1"
INTNET="192.168.10.0/24"
INTIP="192.168.10.1"
EXTIF="ppp0"
EXTIP="123.123.123. 33"
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc
/sbin/modprobe ip_vs
/sbin/modprobe ip_vs_rr
/sbin/modprobe ip_vs_wlc
/sbin/modprobe ip_nfct
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo " External interface: $EXTIF"
echo " External interface IP address is: $EXTIP"
UNIVERSE="0.0.0.0/0"
# Clear any existing rules and setting default policy to DROP
iptables -P INPUT DROP
iptables -F INPUT
iptables -P OUTPUT DROP
iptables -F OUTPUT
iptables -P FORWARD DROP
iptables -F FORWARD
iptables -F -t nat
# Flush the user chain.. if it exists
if [ "`iptables -L | grep drop-and-log-it`" ]; then
iptables -F drop-and-log-it
fi
# Delete all User-specified chains
iptables -X
# Reset all IPTABLES counters
iptables -Z
# Creating a DROP chain
iptables -N drop-and-log-it
iptables -A drop-and-log-it -j LOG --log-level info
iptables -A drop-and-log-it -j REJECT
#######################################################################
# INPUT: Incoming traffic from various interfaces. All rulesets are
# already flushed and set to a default policy of DROP.
#
iptables -A INPUT -i lo -s $UNIVERSE -d $UNIVERSE -j ACCEPT
iptables -A INPUT -i $INTIF -s $INTNET -d $UNIVERSE -j ACCEPT
iptables -A INPUT -i $EXTIF -s $INTNET -d $UNIVERSE -j drop-and-log-it
iptables -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -j ACCEPT
iptables -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m state --state
ESTABLISHED,RELATED -j ACCEPT
################### LVS のための設定
#iptables -A -INPUT -p tcp --dport 80 -j ACCEPT
iptables -A -INPUT -p tcp -d 192.168.2.100 --dport 80 -j ACCEPT
iptables -A -INPUT -p tcp -d 192.168.2.100 -m state --state RELATED,
ESTABLISHED -j ACCEPT
iptables -A -INPUT -p tcp -d 192.168.2.100 -j DROP
#######################################################################
# OUTPUT: Outgoing traffic from various interfaces. All rulesets are
iptables -A OUTPUT -o lo -s $UNIVERSE -d $UNIVERSE -j ACCEPT
iptables -A OUTPUT -o $INTIF -s $EXTIP -d $INTNET -j ACCEPT
iptables -A OUTPUT -o $INTIF -s $INTIP -d $INTNET -j ACCEPT
iptables -A OUTPUT -o $EXTIF -s $UNIVERSE -d $INTNET -j drop-and-log-it
iptables -A OUTPUT -o $EXTIF -s $EXTIP -d $UNIVERSE -j ACCEPT
iptables -A OUTPUT -s $UNIVERSE -d $UNIVERSE -j drop-and-log-it
#######################################################################
# FORWARD: Enable Forwarding and thus IPMASQ
# Allow all connections OUT and only existing/related IN
iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state
ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
# Catch all rule, all other forwarding is denied and logged.
iptables -A FORWARD -j drop-and-log-it
# Enable SNAT (MASQUERADE) functionality on $EXTIF
iptables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to $EXTIP
################## LVS のための設定
iptables -A FORWARD -i $EXTIF -o $INTIF -d 192.168.10.5 -p tcp --deport
80 -j ACCEPT
iptables -A FORWARD -i $EXTIF -o $INTIF -d 192.168.10.6 -p tcp --deport
80 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLIHSED -j ACCEPT
iptables -A FORWARD -j DROP
################## LVSのための設定
iptables -t nat -A PREROUTING -i $EXTIF -d $EXTIP -p tcp --deport 80 -j DNAT
to 192.168.10.5
iptables -t nat -A PREROUTING -i $EXTIF -d $EXTIP -p tcp --deport 80 -j DNAT
to 192.168.10.6
----- Original Message -----
From: <makoto@xxxxxxxxxxxx>
To: <debian-users@debian.or.jp>
Sent: Tuesday, October 13, 2009 12:55 AM
Subject: [debian-users:53179] Re: LVS NATでロードバランス
竹林です.
> アウトバウンドはマスカレードにしておいて、インバウンドをhttp
> (80番ポート)に限定して、静的マスカレードで負荷分散している
> サーバへ流してあげれば、各サーバのファイアーウォール設定は無
> くてもセキュリティ上、さほど問題にはならないと思います。
「パブリックIPアドレスをppp0でロードバランスをするパソコンに繋ぐのではなく、ルー
タのWAN側に繋ぎ、80番ポートに限定して、仮想IPアドレスに仕向けたら問題は解決するの
では?」との考えと理解しました。
なるほど、試してみます。
スレットはこのままopenにしておき、追加質問または結果を報告いたします。
ルータ上の DNAT を使うことで解決する/しないという問題ではなく,
ご自身が「どうしたいか」を決めないといけないと思いますが.
とりあえず HTTP(80/tcp)をバランシングする例だけ示してみます.
以下,keepalived ではなく ldirectord で LVS-NAT での設定となります.
# ldirectord の方が keepalived より設定が簡単なので
【環境】
|
[ 123.123.123. 33 ]
+-----------------------+
| Router DNAT 設定済み |
+-----------------------+
[ 192.168. 10.200 ]
|
|
[ 192.168. 10.100 ]
+---------------------+
| Debian BOX |
+---------------------+
[ 192.168. 20.100 ]
|
+----------+----------+
| |
[ *1 ] [ *2 ]
+--------+ +--------+
+ RS 1 | | RS 2 |
+--------+ +--------+
*1 : 192.168.20.105
*2 : 192.168.20.106
【手順】
(1) ip_forward を有効にする
# vi /etc/sysctl.conf
(下記を追加)
net.ipv4.ip_forward = 1
保存後,sysctl -p あたりで反映.
(2) ldirectord をインストールする
# apt-get install ldirectord
(3) ldirectord を設定する(ldirectord.cf を作成する)
# mkdir /etc/ha.d/conf
# vi /etc/ha.d/conf/ldirectord.cf
virtual = 192.168.10.100:80
real = 192.168.20.105:80 masq 1
real = 192.168.20.106:80 masq 1
protocol = tcp
scheduler = rr
checktype = connect
※ ECV チェックをする場合は・・・
checktype = negotiate
servite = http
request = "/health.html"
receive = "OK"
などとしてください
ちなみに virtual は行頭にスペースは入れないで,
real 以降は行頭に「4 つ以上の半角スペース」 or「TAB」を
入れてください.
(4) ldirectord を起動する
# /etc/init.d/ldirectord start
(5) LVS の状況を確認する
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.10.100:80 rr
-> 192.168.20.105:80 Masq 1 0 0
-> 192.168.20.106:80 Masq 1 0 0
----------------------------------------------------------------
Shinya TAKEBAYASHI
E-mail : makoto@xxxxxxxxxxxx
GPG ID : FFD20D1F
GPG FP : 7B5B E0FC B785 7457 683C 47D6 5564 DDDD FFD2 0D1F
----------------------------------------------------------------