lvs的helloworld

本文详细介绍LVS负载均衡的NAT与DR模式配置过程,包括安装设置、规则定义及权重调整等关键步骤,并提供了健康检查脚本示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

###################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


修改权重

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

######
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值