lvs-keepalived_Heartbeat_centos

...

http://sheriy.com/2011/11/14/lvs-keepalived-and-haproxy-heartbeat-difference/

 

lvs的是通过vrrp协议进行数据包转发的,提供的是4层的负载均衡。特点是效率高,只要你机器网卡抗的住就不是问题。
haproxy可以提供4层或7层的数据转发服务,能做到7层的好处是可以根据服务所处的状态等进行负载。以上两者只是实现了负载均衡,但是他们本身是明显的单点故障,因此需要使用双机软件做热备,来保证高可用性。keepalived可以通过检测vrrp数据包来切换,因此更适合与lvs搭配。而heartbeat更适于和haproxy搭配。这样就出现了这两个应用比较多也比较经典的负载均衡的高可用性方案了。

 

http://www.xtgly.com/1221.htm

 

部署:
LVS-MASTER : 192.168.1.2
LVS-BACKUP : 192.168.1.3
LVS-VIP : 192.168.1.4
Realserver-1 : 192.168.1.5
Realserver-2 : 192.168.1.6

1. 系统采用最小化安装

2. 安装ipvsadm
# yum install ipvsadm

3. 安装keepalived前提
# yum install -y wget
# yum install -y gcc gcc-c++ make
# yum install -y openssl-devel kernel-devel

4. 安装keepalived
# wget http://www.keepalived.org/software/keepalived-1.2.1.tar.gz
# ln -s /usr/src/kernels/2.6.18-194.26.1.el5-i686 /usr/src/linux
# tar zxvf keepalived-1.2.1.tar.gz
# cd keepalived-1.2.1
# ./configure
(注意这个步骤要看到以下字样才是正常的)
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
# make && make install

5. 配置
# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
# mkdir /etc/keepalived
# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
# cp /usr/local/sbin/keepalived /usr/sbin/
# chkconfig --add keepalived
# chkconfig --level 2345 keepalived on

# vi /etc/keepalived/keepalived.conf

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
! Configuration File for keepalived
 
global_defs {
   notification_email {
         fjcyz@qq.com<script type="text/javascript">
/* <![CDATA[ */
(function(){try{var s,a,i,j,r,c,l=document.getElementById("__cf_email__");a=l.className;if(a){s='';r=parseInt(a.substr(0,2),16);for(j=2;a.length-j;j+=2){c=parseInt(a.substr(j,2),16)^r;s+=String.fromCharCode(c);}s=document.createTextNode(s);l.parentNode.replaceChild(s,l);}}catch(e){}})();
/* ]]> */
</script>
   }
   notification_email_from fjcyz@qq.com<script type="text/javascript">
/* <![CDATA[ */
(function(){try{var s,a,i,j,r,c,l=document.getElementById("__cf_email__");a=l.className;if(a){s='';r=parseInt(a.substr(0,2),16);for(j=2;a.length-j;j+=2){c=parseInt(a.substr(j,2),16)^r;s+=String.fromCharCode(c);}s=document.createTextNode(s);l.parentNode.replaceChild(s,l);}}catch(e){}})();
/* ]]> */
</script>
   smtp_server 127.0.0.1
  # smtp_connect_timeout 30
   router_id LVS_DEVEL
}
 
vrrp_instance VI_1 {
    state MASTER # 备份LB将MASTER改为BACKUP
    interface eth0
    virtual_router_id 51
    priority 100 # 优先级,备份LB值改为比这个值小
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.4 # 多个VIP换行写
    }
}
 
virtual_server 192.168.1.4 80 {
    delay_loop 6 #每隔6秒查询realserver状态
    lb_algo wrr # LVS 算法
    lb_kind DR # LVS模式 DR是直接路由
    persistence_timeout 60 #同一IP连接60秒内分配到同一台realserver
    protocol TCP #TCP协议检测realserver状态
 
    real_server 192.168.1.5 80 {
        weight 3 #权重
        TCP_CHECK {
        connect_timeout 10 #10秒无响应超时
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.1.6 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

6. Realserver主机上执行以下脚本

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash
 
VIP=192.168.1.4
 
. /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

7. 检查测试
主备LB上执行
# service keepalived start
# ipvsadm -ln
检查ipvsadm是否服务正常

再把主LB执行
# service keepalived stop
查看备LB是否会自动接管VIP

另外就是做Realserver停止服务的测试,具体就不详说了.

=======================================================================

 

http://blog.onovps.com/archives/centos-lvs-keepalived.html

 

LVS IP信息:

1
2
3
4
5
主LVS:192.168.1.2
备LVS:192.168.1.3
虚拟IP:192.168.1.6
应用服务器1:192.168.1.12
应用服务器2:192.168.1.13


查看内核是否支持LVS模块:

1
2
3
4
5
6
7
8
9
10
11
12
13
modprobe -l |grep ipvs
/lib/modules/2.6.18-274.17.1.el5/kernel/net/ipv4/ipvs/ip_vs.ko
/lib/modules/2.6.18-274.17.1.el5/kernel/net/ipv4/ipvs/ip_vs_dh.ko
/lib/modules/2.6.18-274.17.1.el5/kernel/net/ipv4/ipvs/ip_vs_ftp.ko
/lib/modules/2.6.18-274.17.1.el5/kernel/net/ipv4/ipvs/ip_vs_lblc.ko
/lib/modules/2.6.18-274.17.1.el5/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko
/lib/modules/2.6.18-274.17.1.el5/kernel/net/ipv4/ipvs/ip_vs_lc.ko
/lib/modules/2.6.18-274.17.1.el5/kernel/net/ipv4/ipvs/ip_vs_nq.ko
/lib/modules/2.6.18-274.17.1.el5/kernel/net/ipv4/ipvs/ip_vs_rr.ko
/lib/modules/2.6.18-274.17.1.el5/kernel/net/ipv4/ipvs/ip_vs_sed.ko
/lib/modules/2.6.18-274.17.1.el5/kernel/net/ipv4/ipvs/ip_vs_sh.ko
/lib/modules/2.6.18-274.17.1.el5/kernel/net/ipv4/ipvs/ip_vs_wlc.ko
/lib/modules/2.6.18-274.17.1.el5/kernel/net/ipv4/ipvs/ip_vs_wrr.ko


根据内核版本下载安装相应的ipvsadm:

1
2
3
4
5
6
ln -s /usr/src/kernels/2.6.18-274.17.1.el5-x86_64/ /usr/src/linux
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make
make install


也可使用yum直接安装:

1
yum install ipvsadm


安装Keepalived:

1
2
3
4
5
6
7
wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz
tar zxvf keepalived-1.1.19.tar.gz 
cd keepalived-1.1.19
./configure --sysconf=/etc/ --with-kernel-dir=/usr/src/kernels/2.6.18-274.17.1.el5-x86_64/
make
make install
ln -s /usr/local/sbin/keepalived /sbin/keepalived


主LVS配置keepalived:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
! Configuration File for keepalived
 
global_defs {
   notification_email {
     admin@onovps.com
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
 
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.6
    }
}
 
virtual_server 192.168.1.6 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP
 
    real_server 192.168.1.12 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
 
    real_server 192.168.1.13 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    } 
}


启动keepalived,同时会在主LVS绑定VIP:

1
2
3
4
5
6
/etc/init.d/keepalived start
ip add show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:e7:cc:3b brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/24 brd 192.168.1.255 scope global eth0
    inet 192.168.1.6/32 scope global eth0


查看当前LVS参数:

1
2
3
4
5
6
7
ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.6:http rr
  -> 192.168.1.12:http            Route   1      0          0         
  -> 192.168.1.13:http            Route   1      0          0


复制主keepalived到备LVS,修改以下参数:

1
2
state BACKUP
priority 90


应用服务器增加虚拟VIP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
VIP=192.168.1.6
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $SNS
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
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


测试LVS故障切换,停止主LVS上keepalived服务:

1
/etc/init.d/keepalived stop


查看备LVS已经接管为主LVS:

1
2
3
4
5
tail -n 10 /var/log/message
Jul 14 20:30:28 centos5 Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Jul 14 20:30:29 centos5 Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Jul 14 20:30:29 centos5 Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.
Jul 14 20:30:29 centos5 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.1.6


应用服务器故障测试,停止其中之一httpd服务:

1
/etc/init.d/httpd stop


查看keepalved日志已将出错服务器移除并邮件报警:

1
2
3
4
tail -n 10 /var/log/message
Jul 14 21:36:18 centos5 Keepalived_healthcheckers: TCP connection to [192.168.1.12:80] failed !!!
Jul 14 21:36:18 centos5 Keepalived_healthcheckers: Removing service [192.168.1.12:80] from VS [192.168.1.6:80]
Jul 14 21:36:18 centos5 Keepalived_healthcheckers: Remote SMTP server [127.0.0.1:25] connected.

 

1
2
3
4
5
6
ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.6:http rr
  -> 192.168.1.13:http            Route   1      0          0

...

 

 

 http://www.wenzizone.cn/?p=287

keepalived程序因为他的配置简单,维护容易而广为各位linuxer使用,蚊子自然也不会放过这么好的一款软件了,关于keepalived的做lvs高可用的文章已经满google都是了,蚊子自然就不在这里赘述了。蚊子这篇文章讲述的是如何只使用两台机器使用keepalived搭建web服务的高可用负载均衡

之前在蚊子的《lvs+HA+squid搭建稳定上网服务》一篇文章中,介绍了使用heartbeatlvs和squid来搭建双机高可用负载均衡的上网服务器,有兴趣的朋友可以对比一下现在这篇和上篇。

一、试验环境

vmware6.0 
linux01 192.168.211.128  CentOS release 5.3 (Final) 
linux02 192.168.211.129  CentOS release 5.3 (Final) 
web:httpd-2.2.3-31.el5.centos 
keepalived版本:keepalived-1.1.19.tar.gz

二、安装程序

1、keepalived的安装

首先到http://www.keepalived.org/download.html下载最新的keepalived程序

# tar zxvf keepalived-1.1.19.tar.gz 
# cd keepalived-1.1.19 
# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.18-128.el5-i686 
# make 
# make install

# cp keepalived/etc/init.d/keepalived.rh.init /etc/init.d/keepalived 
# chmod +x /etc/init.d/keepalived 
# cp keepalived/etc/init.d/keepalived.sysconfig /etc/sysconfig/keepalived

2、web的安装

因为蚊子只是为了实现功能,所以只使用了centos自己的apache,如果默认系统没有按照httpd,使用

# yum –y install httpd

3、ipvsadm的安装

ipvsadm的安装也很简单,如果系统默认没有,则使用

# yum –y install ipvsadm

以上两个步骤在两台机器上是一样的。

三、 配置部分

1、linux01上的配置

1.1、keepalived的配置

编辑/etc/keepalived/keepalived.conf

# vi /etc/keepalived/keepalived.conf ,添加如下内容

! Configuration File for keepalived

global_defs { 
   notification_email { 
     admin@example.com 
   } 
   notification_email_from admin@example.com 
   smtp_server 127.0.0.1 
   smtp_connect_timeout 30 
   router_id linux01 
}

vrrp_instance VI_1 {                               #定义一个实例 
    state BACKUP                                    #设置为backup,然后通过priority控制哪台提升为主
    interface eth0 
    virtual_router_id 51 
    priority 100 
    nopreempt                                          #在priority高的这台设置这个参数,方便当主恢复后 
    advert_int 1                                        #可以自动接管 
    authentication { 
        auth_type PASS 
        auth_pass 1111 
    } 
    virtual_ipaddress { 
        192.168.211.110 dev eth0 label eth0:0                #这里使用label标签启用eth0:0 
    } 
}

virtual_server 192.168.211.110 80 {                        #这里往下是定义LVS 
    delay_loop 6 
    lb_algo rr 
    lb_kind DR 
    nat_mask 255.255.255.0 
    protocol TCP

    real_server 127.0.0.1 80 {                            #其中一台是本地web服务 
        weight 1 
        TCP_CHECK { 
            connect_timeout 3 
        } 
    } 
    real_server 192.168.211.129 80 {             #另一台的web服务 
        weight 1 
        TCP_CHECK { 
            connect_timeout 3 
        } 
    }   
}

1.2、web配置

web使用apache默认的配置,唯一修改的就是添加了自己的index.html文件,为了方便之后的测试

# echo “linux01”>/var/www/html/index.html

1.3、关于本机启动回环地址

众所周知,要是用lvs的dr模式,必须在realserver上启动回环地址,所以,搭建两台机器的负载均衡,当然就得在本机也启动相应的回环地址,才能实现所要的功能,脚本如下

# vi /usr/local/bin/startlo

#!/bin/sh

VIP=192.168.211.110

case "$1" in 
  stop) 
        # close lo:0 interface

        echo $"Close lo:0 interface" 
        /sbin/route del -host $VIP dev lo:0 
        /sbin/ifconfig lo:0 down 
        echo "0">/proc/sys/net/ipv4/conf/all/arp_announce 
        echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore 
        echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce 
        echo "0">/proc/sys/net/ipv4/conf/lo/arp_ignore 
        ;; 
  start) 
        # start lo:0 interface

        echo $"Start lo:0 interface" 
        /sbin/ifconfig lo:0 $VIP/32 broadcast $VIP up 
        /sbin/route add -host $VIP dev lo:0 
        echo "2">/proc/sys/net/ipv4/conf/all/arp_announce 
        echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore 
        echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce 
        echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore 
        ;; 
  *) 
        echo $"Usage: $0 (start|stop)" 
        exit 1 
        ;; 
esac

但由于keepalived不像heartbeat里有ldirectord来控制回环地址的启动和停止,所以我们需要人为的判断应该在哪台机器上启动回环地址,所以蚊子就写了下面的一个脚本,

# vi /usr/local/bin/check_interface

#!/bin/bash 

#作者:蚊子 

#脚本说明: 
#本脚本用于判断当前server是否是master 
#如果当前server不是master,则启动回环地址 
#否则停止回环地址 

#VIP_interface请根据自己的情况自行设定,这个是VIP接口 
#lo_interface请根据自己的情况自行设定,是回环地址接口

VIP_interface="eth0:0" 
lo_interface="lo:0"

i=10

while [ $i != 0 ] 
do 
    /sbin/ifconfig |grep $VIP_interface &>/dev/null 
    retval=$? 
    if [ ! $retval -eq 0 ];then 
        /sbin/ifconfig |grep $lo_interface &>/dev/null 
        retval=$? 
        if [ ! $retval -eq 0 ];then 
            /usr/local/bin/startlo start 
        fi 
    else 
        /sbin/ifconfig |grep $lo_interface &>/dev/null 
        retval=$? 
        if [ $retval -eq 0 ];then 
            /usr/local/bin/startlo stop 
        fi 
    fi 
    i=10 
    sleep 10 
done

2、linux02上的配置

2.1、keepalived的配置

具体的配置这里就不给出了,请参考linux01上的配置,唯一的区别

A、priority的值小于linux01上值,蚊子设置为50 
B、在vrrp_instance VI_1的配置中不用设置nopreempt   
C、修改realserver部分的ip为本机和另外一台server的ip地址

2.2、web的配置

apache的配置和linux01一样使用默认配置,同意是编辑默认的index.html文件

# echo “linux02”>/var/www/html/index.html

2.3、本地回环地址的设置

这部分内容和linux01上的一样,相关脚本可以拷贝过来直接使用

四、启动测试

到此,一切准备就绪就可以测试了

首先将所有需要的脚本设置可执行权限。依次启动相应的服务

A、# /etc/init.d/httpd start 
B、# /usr/local/bin/check_interface & 
C、# /etc/init.d/keepalived start

如果没有任何报错,说明服务已经启动,keepalived的日志存放在/var/log/messages中,如果有错误,请自行查看

测试1:当前状态下测试负载均衡情况

方法:打开ie浏览器,输入http://192.168.211.110,然后不断用ctrl+F5强制刷新,可以看到网页内容在linux01和linux02中切换

测试2:停止linux01的keepalive,测试负载均衡情况

方法:

A、/etc/init.d/keepalived stop 
然后等待几秒可以看到linux01上的lo:0地址已经启动,而linux02上的lo:0已经停止

B、打开ie浏览器,输入http://192.168.211.110,然后不断用ctrl+F5强制刷新,可以看到网页内容在linux01和linux02中切换

测试3:开启linux01上的keepalived,观察linux01是否切换回master

方法:启动keepalived程序,使用ifconfig观察linux01上已经启动了eth0:0接口,同时lo:0接口停止,linux02上eth0;0接口停止,同时lo:0接口启动

 

 

 

http://yezi.iteye.com/blog/78450

研究了两天的时间终于磕磕绊绊的把lvs配置完成了,下面把过程记录下来备忘。系统环境如下

  1. server1:192.168.10.165  vip server    linux rhel rs3 kernal 2.4.21-37
  2. server2:192.168.10.162  apache+resin  linux rhel rs4 kernal 2.6.9-22
  3. server3:192.168.10.131  apache+resin  linux rhel rs4 kernal 2.6.9-22  
  4. vip:192.168.10.100   
  5. port:7001  

下面的安装是在vip server上进行的

1、查看自己的操作系统的内核 #uname -a

2、as3一般用的是2.4.21-37.EL的内核,这个内核已经包括了ipvs的补丁,进行如下的操作就可以3、下面建立一个指向,为了保证ipvsadm安装

  1.     # modprobe ip_vs   
  2.     # cat /proc/net/ip_vs   
  3.     出现如下的提示   
  4.     IP Virtual Server version 1.0.8 (size=65536)   
  5.     Prot LocalAddress:Port Scheduler Flags   
  6.         -> RemoteAddress:Port Forward Weight ActiveConn InActConn   
  7.     从提示中我们可以看到,安装了1.0.8的内核,这里我们需要ipvsadm 1.21-10的版本  

 

  1. # rpm -q kernel-source     
  2.         kernel-source-2.4.21-37.EL   
  3. # cd /usr/src   
  4. # ln -s linux-2.4.21-37.EL linux  

4、重新编译和安装ipvsadm

  1. # rpmbuild --rebuild ipvsadm-1.21-10.src.rpm   
  2. 重新编译的rpm文件一般会放到/usr/src/redhat/RPMS/i386下,安装该rpm文件   
  3. # rpm -vih ipvsadm-1.21-10.i386.rpm   
  4. 安装完成后可以通过ipvsadm命令查看是否安装成功   
  5. # ipvsadm   
  6.     IP Virtual Server version 1.0.8 (size=65536)   
  7.     Prot LocalAddress:Port Scheduler Flags   
  8.         -> RemoteAddress:Port           Forward Weight ActiveConn InActConn   

接下来配置VIP服务器

5、配置VIP脚本

接下来重新启动一下 reboot / init 6,启动后运行刚才的脚本,会出现下面的显示,说明配置成功了!

  1. IP Virtual Server version 1.0.8 (size=65536)   
  2. Prot LocalAddress:Port Scheduler Flags   
  3.   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn   
  4. TCP  192.168.8.100:7001 rr   
  5.   -> 192.168.36.108:7001          Route   1      0          0            
  6.   -> 192.168.8.162:7001           Route   1      0          0  

 

cpp 代码
  1. #!/bin/sh   
  2. #create in 20070509 by yezi   
  3. # description: start LVS   of  Directorserver   
  4. VIP=192.168.8.100   
  5. RIP1=192.168.8.162   
  6. RIP2=192.168.8.131   
  7. #RIPn=192.168.0.128~254   
  8. GW=192.168.8.254   
  9.   
  10. . /etc/rc.d/init.d/functions   
  11.   
  12. case "$1" in   
  13.     start)   
  14.         echo " start LVS  of DirectorServer"  
  15.        # set the Virtual  IP Address   
  16.        /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up   
  17.        /sbin/route add -host $VIP dev eth0:0   
  18.        #Clear IPVS table   
  19.        /sbin/ipvsadm -C   
  20.       #set LVS   
  21.       /sbin/ipvsadm -A -t $VIP:7001 -s rr   
  22.       /sbin/ipvsadm -a -t $VIP:7001 -r $RIP1:7001 -g   
  23.       /sbin/ipvsadm -a -t $VIP:7001 -r $RIP2:7001 -g   
  24.       #/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g   
  25.       #Run LVS   
  26.       /sbin/ipvsadm   
  27.       #end   
  28.       ;;   
  29.     stop)   
  30.         echo "close LVS Directorserver"  
  31.         /sbin/ipvsadm -C   
  32.       ;;   
  33.     *)   
  34.         echo "Usage: $0 {start|stop}"  
  35.         exit 1   
  36. esac  

接下来配置realserver

6、配置realserver脚本

  1. #!/bin/bash    
  2. #description : start realserver     
  3. VIP=192.168.8.100   
  4. /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up   
  5. /sbin/route add -host $VIP dev lo:0   
  6. echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore   
  7. echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce   
  8. echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore   
  9. echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce   
  10. sysctl -p   
  11. #end  

分别在两台realserver上运行该脚本,然后重新启动resin和apache,至此配置已经完成了,下面来看看测试的过程

首先在vip server上打开控制台,你会看见lvs的列表:

cpp 代码
  1. # ipvsadm -Ln   
  2. IP Virtual Server version 1.0.8 (size=65536)   
  3. Prot LocalAddress:Port Scheduler Flags   
  4.   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn   
  5. TCP  192.168.8.100:7001 rr   
  6.   -> 192.168.8.131:7001           Route   1      0          0            
  7.   -> 192.168.8.162:7001           Route   1      0          0  

从这里我们可以看到有两台realserver在后台提供转发后的访问,打开浏览器,输入http://192.168.8.100:7001/xxx,浏览器会返回你访问的web的结果,在打开另外一个浏览器输入同样的地址,返回同样的结果,然后回到控制台看看情况:

  1. IP Virtual Server version 1.0.8 (size=65536)   
  2. Prot LocalAddress:Port Scheduler Flags   
  3.   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn   
  4. TCP  192.168.8.100:7001 rr   
  5.   -> 192.168.8.131:7001           Route   1      0          1            
  6.   -> 192.168.8.162:7001           Route   1      0          1    

发现InActConn变成了1,表示两个服务器都接收到了转发,同时还可以打开apache的log,会发现刚才的web访问已经发送到两台realserver了,表明配置成功了!

ipvsadm命令

下面看看lvs控制台的基本命令

添加一个Service
  1. # ipvsadm -A -t 192.168.8.100:80 -s rr      
  2. rr:表示轮询的方法,缺省为wcl  
添加一个realserver
  1. # ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.180:80 -g    
  2. -a:添加一个realserver   
  3. -r:realserver的地址   
  4. -g:缺省参数   
修改realserver
  1. # ipvsadm -e -t 192.168.8.100:80 -r 192.168.8.180:80 -w 100   
  2. -e:修改-r参数的realserver   
  3. -w:lvs转发通道的处理能力 

 

 

 

posted @ 2012-08-30 10:15  陳聽溪  阅读(465)  评论(0)    收藏  举报