虚拟机搭建LVS负载均衡DR直接路由模式

在公司闲了,研究研究自己喜欢的东西,哈哈,这两天安装部署了LVS负载均衡环境,搞了很久才配置成功,不容易啊。下面是我的环境:

虚拟机A:
IP:192.168.213.129
操作系统:CentOS 6.3

虚拟机B:
IP:192.168.213.128
操作系统:Ubuntu 12.04

虚拟IP设置为:192.168.213.130

 

上面两个虚拟机我这里已经安装了Nginx1.0+PHP5.3+MYSQL5.5(测试效果的时候用到),还没安装的请自行安装。

由于只装了两个虚拟机,我这里将虚拟机A作为Directorserver,同时也作为realServer,将虚拟机B作为realServer,具体安装步骤如下:

1:安装依赖类库:

>yum -y install popt-static kernel-devel lftp  libnl*   popt*

 

2:在虚拟机A中安装LVS,即ipvsadm:

>wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
>tar -zxf ipvsadm-1.26.tar.gz
>cd ipvsadm-1.26
>make && make install

 

3:在虚拟机A创建lvsServer启动脚本:

>cd /etc/rc.d/init.d/
>vi lvsServer
#添加如下内容:
#!/bin/sh
# description: start LVS   of  Directorserver
VIP=192.168.213.130
RIP1=192.168.213.128
RIP2=192.168.213.129

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

case "$1" in
    start)
        echo " start LVS  of DirectorServer"
 # set the Virtual  IP Address and sysctl parameter
 #虚拟网络接口指的是为一个网络接口指定多个IP地址,虚拟接口是这样的 eth0:0 、 eth0:1、eth0:2
 #其实用ifconfig 为一个网卡配置多个IP地址
 /sbin/ifconfig eth1:0 $VIP broadcast $VIP netmask 255.255.255.255 up
 /sbin/route add -host $VIP dev eth1:0

 #echo "1" >/proc/sys/net/ipv4/ip_forward,通过该参数来启用包转发功能,从而使系统充当路由器。
 #参数值为1时启用ip转发,为0时禁止ip转发。注意,我们可以在单网卡或双网卡的主机上实现ip转发
        echo "1" >/proc/sys/net/ipv4/ip_forward
        
 # Clear all iptables rules.
        /sbin/iptables -F
        # Reset iptables counters.
        /sbin/iptables -Z
        # Clear all ipvsadm rules/services.
 #清除内核虚拟服务器表中的所有记录
        /sbin/ipvsadm -C


 #set LVS
 #-A 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器
 #-t 说明虚拟服务器提供的是tcp 的服务
 #-s 使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是:wlc
 #-p 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒
 /sbin/ipvsadm -A -t $VIP:80 -s rr -p 30
 
 #-a 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
 #-r 真实的服务器[Real-Server:port]
 #-g 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
 /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g 
 /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
 #Run LVS
       /sbin/ipvsadm
       ;;
    stop)
        echo "close LVS Directorserver"
        echo "0" >/proc/sys/net/ipv4/ip_forward
        /sbin/ipvsadm -C
        /sbin/ifconfig eth1:0 down
        ;;
    *)
        echo "Usage: $0 {start|stop}"  
        exit 1
esac



4:在虚拟机A创建realServer启动脚本:

>cd /etc/rc.d/init.d/
>vi realServer
#内容如下:
#!/bin/bash
#description : start realserver 
VIP=192.168.213.130
/etc/rc.d/init.d/functions
case "$1" in
    start)
        echo " start LVS  of  REALServer"
	/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
	/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 
      ;;
    stop)
        /sbin/ifconfig lo:0 down
        echo "close LVS Directorserver"
        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 "Usage: $0 {start|stop}"
        exit 1
esac


 5:在虚拟机A中设置ip地址转发功能:

 >vi /etc/sysctl.conf    #修改net.ipv4.ip_forward = 1

 

6:在虚拟机B中设置如下:

>vi /etc/sysctl.conf
#修改如下
net.ipv4.ip_forward = 1 

net.ipv4.conf.lo.arp_ignore = 1 

net.ipv4.conf.lo.arp_announce = 2 

net.ipv4.conf.all.arp_ignore = 1 

net.ipv4.conf.all.arp_announce = 2 


7:在虚拟机A启动lvsServer:

>cd /etc/rc.d/init.d/
>./lvsServer start


8:在虚拟机A启动realServer

>cd /etc/rc.d/init.d/
>./realServer start

 

9:在虚拟机B创建realServer启动脚本:

>cd /etc/init.d/
>vi realServer
#内容如下:
#!/bin/bash
#description : start realserver 
VIP=192.168.213.130
case "$1" in
    start)
        echo " start LVS  of  REALServer"
	/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
	/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 
      ;;
    stop)
        /sbin/ifconfig lo:0 down
        echo "close LVS Directorserver"
        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 "Usage: $0 {start|stop}"
        exit 1
esac

10:在虚拟机B启动realServer:

>cd /etc/init.d/
>./realServer start


11:分别在虚拟机A和B创建测试文件,在真实电脑里用浏览器访问192.168.213.130即可看到负载均衡效果。

12:在虚拟机A中查看负载状态:

>ipvsadm -lcn
#显示如下:
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:56  FIN_WAIT    192.168.213.1:60118 192.168.213.130:80 192.168.213.129:80
TCP 14:56  ESTABLISHED 192.168.213.1:60119 192.168.213.130:80 192.168.213.128:80



 

你可能感兴趣的:(分布式技术,高并发架构)