您的位置:首页 > 运维架构 > 网站架构

LVS+Keepalived实现负载均衡高可用

2013-04-10 20:59 681 查看
使用脚本实现LVS负载均衡

环境:

3台主机

DS:192.168.100.1

RS1:192.168.100.11

RS2:192.168.100.12

VIP:192.168.100.100

安装ipvsadm

./configure --prefix=/usr/local/ipvsadm

make && make install

DS脚本如下:

#!/bin/bash

# description: start LVS of DirectorServer

VIP=192.168.100.100

RIP1=192.168.100.11

RIP2=192.168.100.12

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

logger LVS is $1

case "$1" in

start)

/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

/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

touch /var/lock/subsys/ipvsadm >/dev/null 2>&1

echo "LVS is started!"

;;

stop)

/sbin/ipvsadm -C

/sbin/ipvsadm -Z

ifconfig eth0:0 down

ifconfig eth0:1 down

route del $VIP

route del $VIP

rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1

echo "LVS is stoped"

;;

status)

if [ ! -e /var/lock/subsys/ipvsadm ];then

echo "ipvsadm has stoped"

else

echo "ipvsadm has started"

fi

;;

*)

echo "Usage: $0 {start|stop|status}"

exit 1

esac

exit 0

RS脚本如下:

#!/bin/bash

# description: Config realserver lo and apply noarp

VIP=192.168.100.100

. /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

LVS+Keepalived实现负载均衡高可用

环境:

DS1:192.168.100.1

DS2:192.168.100.2

RS1:192.168.100.11

RS2:192.168.100.12

VIP:192.168.100.100

之前已经安装ipvsadm这里不再阐述

安装keepalived

./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.xxxxx

make && make install

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/sbin/keepalived /sbin

配置keepalived.conf

DS1:

global_defs {

notification_email {

root@localhost

}

notification_email_from root@localhost

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.100.100

}

}

virtual_server 192.168.100.100 80 {

delay_loop 6

lb_algo rr

lb_kind DR

nat_mask 255.255.255.0

persistence_timeout 50

protocol TCP

real_server 192.168.100.11 80 {

weight 1

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

real_server 192.168.100.12 80 {

weight 1

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

DS2:

global_defs {

notification_email {

root@localhost

}

notification_email_from root@localhost

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.100.100

}

}

virtual_server 192.168.100.100 80 {

delay_loop 6

lb_algo rr

lb_kind DR

nat_mask 255.255.255.0

persistence_timeout 50

protocol TCP

real_server 192.168.100.11 80 {

weight 1

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

real_server 192.168.100.12 80 {

weight 1

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

两台DS都启动keepalived

/etc/init.d/keepalived start

两台RS也需要都运行上文的脚本

ipvsadm -ln 查看LVS状态

ipvsadm -lnc 查看LVS链接状态

可通过一个测试页面进行测试,代码如下(每两秒刷新一次,不缓存数据):

通过不同的客户端访问,页面会轮流出现node1和node2

<html>

<head>

<title>test</title>

<meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache"/>

<meta http-equiv="Refresh" content="2"/>

</head>

<body>this is node1或2</body>

</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: