1. Linux 负载均衡软件
LVS
主讲人:高俊峰
华章培训网、 [ www.h ztrain in g .c o m ] 华章培训网版权所有
2. Linux 负载均衡软件
LVS
内容概述
LVS 集群的体系结构以及特点
通过 LVS+Keepalived 搭建高可用的负载均衡集群系统
测试 LVS+Keepalived 高可用负载均衡集群
华章培训网、 [ www.h ztrain in g .c o m ] 华章培训网版权所有
3. Linux 负载均衡软件
LVS
第二讲:通过 LVS+Keepalived 搭建高可用的负载均衡集
群系统
主讲人:高俊峰
华章培训网、 [ www.h ztrain in g .c o m ] 华章培训网版权所有
4. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系
统
1 、 安装 LVS 软件
( 1 )安装前准备
操作系统:统一采用 Centos5.3 版本,地址规划如下:
更详细的信息如下图所示:
图中的 VIP 指的是虚拟 IP 地址,还可以叫做 LVS 集群的服务 IP ,在 DR 、 TUN 模式中,数
据包是直接返回给用户的,所以,在 Director Server 上以及集群的每个节点上都需要设置这个地址
。此 IP 在 Real Server 上一般绑定在回环地址上,例如 lo:0 ,同样,在 Director Server 上,虚拟 IP
绑定在真实的网络接口设备上,例如 eth0:0 。
各个 Real Server 可以是在同一个网段内,也可以是相互独立的网段,还可以是分布在
internet 上的多个服务器 .
华章培训 www.hztraining.com 第 4页
14. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系
统
2 、 开始配置 LVS 集群
2 )通过 Redhat 提供的工具 piranha 来配置 LVS
[root@localhost ~]# more /etc/sysconfig/ha/lvs.cf
serial_no = 18 # 序号。
primary = 192.168.12.25 # 指定主 Director Server 的真实 IP 地址,是相对与有备用的 Director Server 而言的,也就是给
Director Server 做 HA Cluster 。
service = lvs # 指定双机的服务名。
backup_active = 0 # 是否激活备用 Director Server 。“ 0” 表示不激活,“ 1” 表示激活。
backup = 0.0.0.0 # 这里指定备用 Director Server 的真实 IP 地址,如果没有备用 Director Server ,可以用“ 0.0.0.0” 代
替。
heartbeat = 0 # 是否开启心跳, 1 表示开启, 0 表示不开启。
heartbeat_port = 539 # 指定心跳的 UDP 通信端口。
keepalive = 5 # 心跳间隔时间,单位是秒。
deadtime = 10 # 如果主 Director Server 在 deadtime( 秒 ) 后没有响应,那么备份 Director
Server 就会接管主 Director Server 的服务。
network = direct # 指定 LVS 的工作模式, direct 表示 DR 模式, nat 表示 NAT 模式, tunnel 表示 TUNL 模式。
debug_level = NONE # 定义 debug 调试信息级别。
virtual www.ixdba.net{ # 指定虚拟服务的名称。
active = 1 # 是否激活此服务。
address = 192.168.12.135 eth0:0 # 虚拟服务绑定的虚拟 IP 以及网络设备名。
port =华章培训 # 虚拟服务的端口。
80 www.hztraining.com 第 14页
send = "GET / HTTP/1.0rnrn" # 给 real server 发送的验证字符串。
15. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系
统
2 、 开始配置 LVS 集群
2 )通过 Redhat 提供的工具 piranha 来配置 LVS
expect = "HTTP" # 服务器正常运行时应该返回的文本应答信息,用来判断 real server 是否工作正常。
use_regex = 0 # expect 选项中是否使用正则表达式, 0 表示不使用, 1 表示使用。
load_monitor = none #LVS 中的 Director Server 能够使用 rup 或 ruptime 来监视各个 real server 的负载状态。该选项有
3 个可选值, rup 、 ruptime 和 none ,如果选择 rup ,每个 real server 就必须运行 rstatd 服务。如果选择了 ruptime ,每个
real server 就必须运行 rwhod 服务。
scheduler = rr # 指定 LVS 的调度算法。
protocol = tcp # 虚拟服务使用的协议类型。
timeout = 6 #real server 失效后从 lvs 路由列表中移除失效 real server 所必须经过的时间,以秒为单位。
reentry = 15 # 某个 real server 被移除后,重新加入 lvs 路由列表中所必须经过的时间,以秒为单位。
quiesce_server = 0 # 如果此选项为 1. 那么当某个新的节点加入集群时,最少连接数会被重设
为零,因此 LVS 会发送大量请求到此服务节点,造成新的节点服务阻塞,
建议设置为 0 。
server RS1 { # 指定 real server 服务名。
address = 192.168.12.246 # 指定 real server 的 IP 地址。
active = 1 # 是否激活此 real server 服务。
weight = 1 # 指定此 real server 的权值,是个整数值,权值是相对于所有 real server 节点而言的,权值高的 real
server 处理负载的性能相对较强。
}
server RS2 {
address = 192.168.12.237
active = 1
weight = 1
华章培训 www.hztraining.com 第 15页
}
}
16. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系
统
2 、 开始配置 LVS 集群
2 )通过 Redhat 提供的工具 piranha 来配置 LVS
编辑完成 , 然后启动 pulse 服务 , 即启动 lvs 服务
[root@localhost ~]#service pulse start
同理,此种方式下也要启用系统的包转发功能:
[root@localhost ~]#echo "1" >/proc/sys/net/ipv4/ip_forward
到此为止, Piranha 工具方式配置 Director Server 完毕。
3 、 Real ser ver 的配置
在 lvs 的 DR 和 TUn 模式下,用户的访问请求到达真实服务器后,是直接返回给用户的,而不再
经过前端的 Director Server ,因此,就需要在每个 Real server 节点上增加虚拟的 VIP 地址,这样数据才
能直接返回给用户,增加 VIP 地址的操作可以通过创建脚本的方式来实现,创建文件 /etc/init.d/lvsrs ,
脚本内容如下:
华章培训 www.hztraining.com 第 16页
17. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系
统
3 、 Real ser ver 的配置
#!/bin/bash
VIP=192.168.12.135
/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
sysctl -p
#end
此操作是在回环设备上绑定了一个虚拟 IP 地址,并设定其子网掩码为 255.255.255.255 ,与 Director
Server 上的虚拟 IP 保持互通,然后禁止了本机的 ARP 请求。
由于虚拟 ip ,也就是上面的 VIP 地址,是 Director Server 和所有的 Real server 共享的,如果有 ARP 请求
VIP 地址时, Director Server 与所有 Real server 都做应答的话,就出现问题了,因此,需要禁止 Real server 响应
ARP 请求。而 lvsrs 脚本的作用就是使 Real Server 不响应 arp 请求。
华章培训 www.hztraining.com 第 17页