您的位置:首页 > 其它

LVS+keepalived负载均衡实战

2015-08-31 18:39 183 查看
http://blog.chinaunix.net/space.php?uid=20639775&do=blog&id=154518

LVS+keepalived负载均衡实战

---------------------这里非常感谢田逸老师的文档,在我学习lvs的时候给了我很大的帮助!

一、为什么要使 用负载均衡技术?
1、系统高可用性
2、 系统可扩展性
3、 负载均衡能力
LVS+keepalived能很好的实现以上的要求,LVS提 供负载均衡,keepalived提供健康检查,故障转移,提高系统的可用性!采用这样的架构以后 很容易对现有系统进行扩展,只要在后端添加或者减少realserver,只要更改lvs的 配置文件,并能实现无缝配置变更!

二、LVS+Keepalived介绍
1、 LVS
LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。目前有三种IP负 载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。
2、 keepalived
Keepalived 是运行在lvs 之上,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败 切换,提高系统的可用性

三、LVS+keepalived负载均衡架构图



四、LVS+keepalived的安装和配置
1. 配置环境
System OS:CentOS release 5.4
Software:ipvsadm-1.24.tar.gz, keepalived-1.1.19.tar.gz
2. 信息列表
名称

IP

LVS-Master

192.168.1.112

LVS-BACKUP

192.168.1.113

LVS-VIP

192.168.1.115

Realserver1

192.168.1.105

Realserver2

192.168.1.103

Realserver3

192.168.1.104

3. 安装lvs

分别在backup lvs和master lvs上安装

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

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

tar zxvf ipvsadm-1.24.tar.gz

cd ipvsadm-1.24

make && make install

4. 安装keepalived

分别在backup lvs和master lvs上安装

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 --prefix=/usr/local/keepalived

make

make install

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

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

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

mkdir /etc/keepalived

5. 配置keepadlived
LVS-Master的配置文件如下
[root@linux5 ~]# cat /etc/keepalived/keepalived.conf

global_defs {

notification_email {

jimo291@gmail.com #email 通知

}

notification_email_from jimo291@gmail.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS1 # 设置lvs的id,在一个网络内应该是唯一的

}

vrrp_sync_group test { #设置vrrp组

group {

loadbalance

}

}

vrrp_instance loadbalance {

state MASTER #设置lvs的状态,报错MASTER和BACKUP两种,必须大写

interface eth0 #设置对外服务的接口

lvs_sync_daemon_inteface eth0 #设置lvs监听的接口

virtual_router_id 51 #设置虚拟路由表示

priority 180 #设置优先级,数值越大,优先级越高

advert_int 5 #设置同步时间间隔

authentication { #设置验证类型和密码

auth_type PASS

auth_pass 1111

}

virtual_ipaddress { #设置lvs vip

192.168.1.115

}

}

virtual_server 192.168.1.115 80 {

delay_loop 6 #健康检查时间间隔

lb_algo rr #负载均衡调度算法

lb_kind DR #负载均衡转发规则

#persistence_timeout 20 #设置会话保持时间,对bbs等很有用

protocol TCP #协议

real_server 192.168.1.105 80 {

weight 3 #设置权重

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 192.168.1.103 80 {

weight 3

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 192.168.1.104 80 {

weight 3

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

LVS-backup的配置文件如下

global_defs {

notification_email {

jimo291@gmail.com

}

notification_email_from jimo291@gmail.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS2

}

vrrp_sync_group test {

group {

loadbalance

}

}

vrrp_instance loadbalance {

state BACKUP

interface eth0

lvs_sync_daemon_inteface eth0

virtual_router_id 51

priority 150

advert_int 5

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.115

}

}

virtual_server 192.168.1.115 80 {

delay_loop 6

lb_algo rr

lb_kind DR

#persistence_timeout 20

protocol TCP

real_server 192.168.1.105 80 {

weight 3

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 192.168.1.103 80 {

weight 3

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 192.168.1.104 80 {

weight 3

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

6. Realserver的配置
三台客户端的脚本都一样!
cat /etc/rc.d/init.d/realserver.sh

#!/bin/bash

# description: Config realserver lo and apply noarp

SNS_VIP=192.168.1.115

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

case "$1" in

start)

ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

/sbin/route add -host $SNS_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 $SNS_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. 测试
1) 首先测试各个readserver,确定各个readserver都能正常访问,测试realserver.sh脚本,看启动后 能不能绑定lvs vip,停止后能不能去除绑定的vip
2) 测试lvs能否进行负载均衡转发,利用ipvsadm命令查看,如果想只当当前的 请求转发到哪个服务器去了,可以用ipvsadm加选项来查看,其完整形式为:ipvsadm –lcn | grep 192.168.1.115
3) 停掉主lvs看lvs backup是否接管!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: