Chinaunix首页 | 论坛 | 博客
  • 博客访问: 70226
  • 博文数量: 39
  • 博客积分: 177
  • 博客等级: 入伍新兵
  • 技术积分: 240
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-20 11:10
文章分类

全部博文(39)

文章存档

2012年(39)

我的朋友

分类:

2012-04-06 11:37:51

原文地址:lvs负载均衡 作者:unixsly

最重要的是了解ipvsadm命令的使用,先例举些例子:

首先说明,lvs负载均衡的3中模式,(DR,NAT,隧道) DR模式网上说是最有效率的.

ipvsadm命令,例如:

# ipvsadm -A -t 192.168.1.202:80 -s rr
# ipvsadm -a -t 192.168.1.202:80 -r 192.168.1.203:80 -g
# ipvsadm -a -t 192.168.1.202:80 -r 192.168.1.204:80 -g
# ipvsadm -S

-s rr 表示使用轮询方式,具体的还有 rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq 这么多种,常用的还有wrr.
-a 表示往一个服务内增加一个real server
-r 指定real server的IP地址
-w 表示权重
-g 表示使用DR方式,-m表示NAT方式,-i表示tunneling方式。
不知道这些参数什么意思的话也可以直接使用ipvsadm -h查看

# ipvsadm -S  保存LVS节点配置
# ipvsadm -C  清除LVS节点配置
# ipvsadm -Z  zero counters in a service or all services

然后就不一一说明了,两个shell脚本就搞定lvs负载均衡.

环境:

Virtual IP: 192.168.1.202
LVS IP:    192.168.1.201
Real IP1: 192.168.1.203
Real IP2: 192.168.1.204

安装ipvsadm,yum -y install ipvsadm 的版本就很新了,如果要手动编译,请先运行

ln -s /usr/src/kernels/2.6.18-8.el5-i686 /usr/src/linux

后再编译,我的内核是2.6.18-8.el5-i686,只要是2.6内核就OK,如果不知道自己的是多少cd /usr/src/kernels 可以看到具体的版本信息,uname -a也可以.没上面的语句会提示出错,没错就 make && make install

lvs-dr.sh 这个就是转发器脚本,放在lvs服务器上运行.

#!/bin/bash
#Realserver
RIP1=192.168.1.203
RIP2=192.168.1.204
#Vip
VIP=192.168.1.202

/etc/rc.d/init.d/functions

case "$1" in

start)
       echo " Starting lvs director ..."
       # Set Vip
       /sbin/ipvsadm --set 30 5 60
       /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
       /sbin/route add -host $VIP dev eth0:0
       echo "1" >/proc/sys/net/ipv4/ip_forward
       /sbin/ipvsadm -C

       # Set Lvs Realserver
       /sbin/ipvsadm -A -t $VIP:80 -s wrr -p 3
       /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g -w 1
       /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g -w 1
       /sbin/ipvsadm -S
       touch /var/lock/subsys/ipvsadm >/dev/null 2>&1
       echo "Ipsvsadm started ..."
       /sbin/ipvsadm -ln
       ;;
stop)
       echo "Stoping ipsvsadm ..."
       echo "0" >/proc/sys/net/ipv4/ip_forward
       /sbin/ipvsadm -C
       /sbin/ipvsadm -Z
       /sbin/ifconfig eth0:0 down
       #route del eth0:0
       rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
       echo "Ipvsadm Stoped"
       ;;
status)
       if [ ! -e /var/lock/subsys/ipvsadm ];then
       echo "Ipvsadm stoped"
       exit 1
       else
       echo "Ipvsadm OK"
       fi
       ;;
*)
       echo "Usage: $0 {start|stop|status}"
       exit 1
esac
exit 0
 

lvs-real.sh 这个脚本放到realserver上运行,运行后ifconfig就可以看到效果.

#!/bin/bash

VIP=192.168.1.202

/etc/rc.d/init.d/functions

case "$1" in
start)
       ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
       /sbin/route add -host $VIP dev lo:0
       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
       sysctl -p >/dev/null 2>&1
       echo "RealServer Start OK"

       ;;
stop)
       ifconfig lo:0 down
       route del $VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac

exit 0

# ipvsadm -ln 查看是否已经配置正确

# ipvsadm -L -c   显示LVS 目前的连接

阅读(665) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~