###################lvs#############
[b]LVS-NAT:地址转换[/b]
三台服务器测试
192.168.139.161
192.168.139.193
192.168.139.194
参考[url]http://www.cnblogs.com/MacoLee/p/5856858.html[/url]
[code="java"]
yum install ipvsadm -y
cat /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
ipvsadm -A -t 192.168.139.161:80 -s rr
# ipvsadm -A -t 192.168.139.161:80 -s rr #定义一个集群服务
# ipvsadm -a -t 192.168.139.161:80 -r 192.168.139.193 -m #添加RealServer并指派调度算法为NAT
# ipvsadm -a -t 192.168.139.161:80 -r 192.168.139.194 -m #添加RealServer并指派调度算法为NAT
# ipvsadm -L -n #查看ipvs定义的规则列表
[/code]
错测试几次,发现是平均切换193和194的
curl http://192.168.139.161/index.html
修改权重
错测试几次,发现切换193和194的比例是3:1
curl http://192.168.139.161/index.html
永久保存
#第一种方法:
# service ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [确定]
#第二种方法:
ipvsadm -S > /etc/sysconfig/ipvsadm.s1
清空:
ipvsadm -C
恢复
ipvsadm -R < /etc/sysconfig/ipvsadm.s1
#################LVS-DR:直接路由方式
http://blog.youkuaiyun.com/gzh0222/article/details/8566516
####################在realserver上
############################
在Director Server上做以下配置
######################
# vim /etc/sysconfig/network-scripts/ifcfg-eth2:0 内容如下
###################
从外面访问 curl http://10.3.3.100 测试
tcpdump -i eth2 -e -l -s 0 -w 194.pcp
然后用wireshark看每台机器上的网卡流量
############tun方式
健康检查
##check-lvs-health.sh
######
[b]LVS-NAT:地址转换[/b]
三台服务器测试
192.168.139.161
192.168.139.193
192.168.139.194
参考[url]http://www.cnblogs.com/MacoLee/p/5856858.html[/url]
[code="java"]
yum install ipvsadm -y
cat /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
ipvsadm -A -t 192.168.139.161:80 -s rr
# ipvsadm -A -t 192.168.139.161:80 -s rr #定义一个集群服务
# ipvsadm -a -t 192.168.139.161:80 -r 192.168.139.193 -m #添加RealServer并指派调度算法为NAT
# ipvsadm -a -t 192.168.139.161:80 -r 192.168.139.194 -m #添加RealServer并指派调度算法为NAT
# ipvsadm -L -n #查看ipvs定义的规则列表
[/code]
错测试几次,发现是平均切换193和194的
curl http://192.168.139.161/index.html
修改权重
ipvsadm -E -t 192.168.139.161:80 -s wrr
ipvsadm -e -t 192.168.139.161:80 -r 192.168.139.193 -m -w 3
ipvsadm -e -t 192.168.139.161:80 -r 192.168.139.194 -m -w 1
错测试几次,发现切换193和194的比例是3:1
curl http://192.168.139.161/index.html
永久保存
#第一种方法:
# service ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [确定]
#第二种方法:
ipvsadm -S > /etc/sysconfig/ipvsadm.s1
清空:
ipvsadm -C
恢复
ipvsadm -R < /etc/sysconfig/ipvsadm.s1
#################LVS-DR:直接路由方式
http://blog.youkuaiyun.com/gzh0222/article/details/8566516
####################在realserver上
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#以上命令需填加到/etc/rc.local文件中让其开机自动生效
# vim /etc/sysconfig/network-scripts/ifcfg-lo:0 内容如下
DEVICE=lo:0
IPADDR=10.3.3.100
NETMASK=255.255.255.255
BROADCAST=10.3.3.100
ONBOOT=yes
NAME=loopback
ifdown lo:0
ifup lo:0
route add -host 10.3.3.100 dev lo:0
echo "route add -host 10.3.3.100 dev lo:0" >> /etc/rc.local
############################
在Director Server上做以下配置
######################
# vim /etc/sysconfig/network-scripts/ifcfg-eth2:0 内容如下
DEVICE=eth2:0
IPADDR=10.3.3.100
NETMASK=255.255.255.255
BROADCAST=10.3.3.100
ONBOOT=yes
#命令
ifdown eth2:0
ifup eth2:0
route add -host 10.3.3.100 dev eth2:0
echo "route add -host 10.3.3.100 dev eth2:0" >> /etc/rc.local
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/rc.local
ipvsadm -A -t 10.3.3.100:80 -s wlc
ipvsadm -a -t 10.3.3.100:80 -r 10.3.3.3 -g -w 2
ipvsadm -a -t 10.3.3.100:80 -r 10.3.3.4 -g -w 1
###################
从外面访问 curl http://10.3.3.100 测试
tcpdump -i eth2 -e -l -s 0 -w 194.pcp
然后用wireshark看每台机器上的网卡流量
############tun方式
健康检查
##check-lvs-health.sh
#!/bin/bash
# VIP=172.16.100.100
CPORT=80
FAIL_BACK=127.0.0.1
RS=("10.3.3.3" "10.3.3.4")
declare -a RSSTATUS
RW=("2" "1")
RPORT=80
TYPE=g
CHKLOOP=3
LOG=/var/log/ipvsmonitor.log
addrs() {
ipvsadm -a -t $VIP:$CPORT -r $1:$RPORT -$TYPE -w $2
[ $? -eq 0 ] && return 0 || return 1
}
delrs() {
ipvsadm -d -t $VIP:$CPORT -r $1:$RPORT
[ $? -eq 0 ] && return 0 || return 1
}
checkrs() {
local I=1
while [ $I -le $CHKLOOP ];
do
if curl --connect-timeout 1 http://$1 &> /dev/null;
then
return 0
fi
let I++
done
return 1
}
initstatus() {
local I local COUNT=0;
for I in ${RS[*]};
do
if ipvsadm -L -n | grep "$I:$RPORT" && > /dev/null ;
then
RSSTATUS[$COUNT]=1
else
RSSTATUS[$COUNT]=0
A++
Dir[0]=$A
fi
let COUNT++
done
}
initstatus
while :;
do
let COUNT=0
for I in ${RS[*]};
do
if checkrs $I;
then
if [ ${RSSTATUS[$COUNT]} -eq 0 ];
then
addrs $I ${RW[$COUNT]}
[ $? -eq 0 ] && RSSTATUS[$COUNT]=1 && echo "`date +'%F %H:%M:%S'`, $I is back." >> $LOG
fi
else
if [ ${RSSTATUS[$COUNT]} -eq 1 ];
then
delrs $I
[ $? -eq 0 ] && RSSTATUS[$COUNT]=0 && echo "`date +'%F %H:%M:%S'`, $I is gone." >> $LOG
fi
fi
let COUNT++
done
sleep 5
done
######