`
haoningabc
  • 浏览: 1444295 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

lvs的helloworld

lvs 
阅读更多
###################lvs#############

LVS-NAT:地址转换
三台服务器测试
192.168.139.161
192.168.139.193
192.168.139.194

参考http://www.cnblogs.com/MacoLee/p/5856858.html
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

[root@LVS ~]# ipvsadm -A -t 192.168.139.161:80 -s rr #定义一个集群服务
[root@LVS ~]# ipvsadm -a -t 192.168.139.161:80 -r 192.168.139.193 -m #添加RealServer并指派调度算法为NAT
[root@LVS ~]# ipvsadm -a -t 192.168.139.161:80 -r 192.168.139.194 -m #添加RealServer并指派调度算法为NAT
[root@LVS ~]# ipvsadm -L -n #查看ipvs定义的规则列表

错测试几次,发现是平均切换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.csdn.net/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

######
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics