30
Linux Linux 负负负负负负 负负负负负负 LVS LVS 主主主主主主 主主主主主[www.hztraining.com] 主主主主主主主主主

Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

  • Upload
    hiklhz

  • View
    1.530

  • Download
    1

Embed Size (px)

DESCRIPTION

Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

Citation preview

Page 1: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

LinuxLinux 负载均衡软件负载均衡软件LVSLVS

主讲人:高俊峰

华章培训网、 [www.hztraining.com] 华章培训网版权所有

Page 2: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

LinuxLinux 负载均衡软件负载均衡软件LVSLVS

华章培训网、 [www.hztraining.com] 华章培训网版权所有

内容概述LVS集群的体系结构以及特点

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

测试 LVS+Keepalived高可用负载均衡集群

Page 3: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

LinuxLinux 负载均衡软件负载均衡软件LVSLVS

第二讲:通过 LVS+Keepalived搭建高可用的负载均衡集群系统

主讲人:高俊峰

华章培训网、 [www.hztraining.com] 华章培训网版权所有

Page 4: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

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 上的多个服务器 .

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 4页

Page 5: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

1 、 安装 LVS 软件 ( 1 )安装前准备

安装的 LVS 负载均衡集群拓扑图:

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 5页

Page 6: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

1 、 安装 LVS 软件 ( 2 )安装操作系统需要注意的事项

Centos5.3 版本的 Linux ,内核默认支持 LVS 功能,为了方便编译安装 IPVS 管理软件,在安装操作系统时,建议选择如下这些安装包:

桌面环境: xwindows system、 GNOME desktop environment 。

开发工具: development tools、 x software development、 gnome software

、 development、 kde software development 。

系统安装完毕,可以通过如下命令检查 kernel 是否已经支持 LVS的 ipvs 模块:

[root@localhost ~]#modprobe -l |grep ipvs

/lib/modules/2.6.18-194.11.1.el5/kernel/net/ipv4/ipvs/ip_vs.ko

/lib/modules/2.6.18-194.11.1.el5/kernel/net/ipv4/ipvs/ip_vs_dh.ko

如果有类似上面的输出,表明系统内核已经默认支持了 IPVS 模块。接着就可以安装 IPVS 管理软件了。

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 6页

Page 7: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

1 、 安装 LVS 软件( 3 )在 Director Serve 上安装 IPVS 管理软件

IPVS 提供的软件包有源码方式的也有 rpm 方式的,这里介绍下源码方式安装 IPVS, 首先从 http://

www.linuxvirtualserver.org/software/ipvs.html 下载对应版本的 ipvs 源码,由于我们这里采用的操作系统为Centos5.3 版本,因此,下载对应的 ipvsadm-1.24 版本,接着进行安装:

[root@localhost ~]#tar zxvf ipvsadm-1.24.tar.gz

[root@localhost ~]#cd ipvsadm-1.24

[root@localhost ~]#make

[root@localhost ~]#make install

注意:在 make 时可能会出现错误编译信息,这是由于编译程序找不到对应内核的原因,按照如下操作就可以正常编译:

[root@localhost ~]#ln -s /usr/src/kernels/2.6.18-128.el5-i686/ /usr/src/linux

也可以下载 rpm 安装包,通过 rpm 方式进行安装:

[root@localhost ~]#rpm –ivh ipvsadm-1.24-6.1.i386.rpm

然后执行:

[root@localhost ~]# ipvsadm --help

如果看到帮助提示,表明 IPVS 已经成功安装。

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 7页

Page 8: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

1 、 安装 LVS 软件( 4 ) ipvsadm 的用法

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 8页

Page 9: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

1 、 安装 LVS 软件( 4 ) ipvsadm 的用法

举例如下:[root@localhost ~]# ipvsadm -A -t 192.168.12.135:80 -s rr -p 600

以上表示在内核的虚拟服务器列表中添加一条 192.168.12.135 的虚拟服务器记录,并且指定此虚拟服务器的服务端口为 80 ,然后指定此虚拟服务器的调度策略为轮询调度,并且在每个 real server 上的持续服务时间为 600 秒,即 10 分钟[root@localhost ~]# ipvsadm -A -t 192.168.12.188:21 -s wlc

以上表示在内核的虚拟服务器列表中又添加了一条 192.168.12.188 的虚拟服务器,此虚拟服务器的服务端口为 21 ,即 FTP 服务。使用的调度策略为 wlc ,即加权最少链接算法。[root@localhost ~]# ipvsadm -a -t 192.168.12.135:80 -r 192.168.12.246:80 –g[root@localhost ~]# ipvsadm -a -t 192.168.12.135:80 -r 192.168.12.237:80 –g

以上两条设置表示在虚拟服务器 192.168.12.135 中添加两条新的 Real Server 记录,两个 Real Server的 IP 分别为192.168.12.246和 192.168.12.237 ,参数“ -g” 指定了虚拟服务器的工作模式为直接路由模式,即 DR 模式。

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 9页

Page 10: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

2 、 开始配置 LVS 集群下面通过搭建 www 服务的负载均衡实例,讲述基于 DR 模式的 LVS 集群配置。

( 1 ) Director Server 的配置

在Director Server 上配置 LVS 负载均衡集群,有两种方法:

通过 ipvsadm 命令行进行配置

通过 Redhat 提供的工具 piranha 来配置 LVS

1 )通过 ipvsadm 命令行方式配置 LVS

安装 IPVS 后,就可以配置 LVS 集群了,首先在 Director Server 上绑定一个虚拟 IP (也叫 VIP ),此 IP 用于对外提供服务,执行如下命令:

[root@localhost ~]#ifconfig eth0:0 192.168.12.135 broadcast 192.168.12.135 netmask 255.255.255.255 up

此处在 eth0 设备上绑定了一个虚拟设备 eth0:0 ,同时设置了一个虚拟 IP是 192.168.12.135 ,也就是上面我们规划的 IP 地址,然后指定广播地址也为 192.168.12.135 ,需要特别注意的是,这里的子网掩码为 255.255.255.255 。

然后给设备 eth0:0 指定一条路由,执行如下指令:

[root@localhost ~]#route add -host 192.168.12.135 dev eth0:0

[root@localhost ~]#echo "1" >/proc/sys/net/ipv4/ip_forward

指令中,参数值为 1 时启用 ip转发,为 0 时禁止 ip转发。其实在 DR 模式中,开启系统的包转发功能不是必须的,而在 NAT 模式下此操作是必须的。

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 10页

Page 11: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

2 、 开始配置 LVS 集群下面通过搭建 www 服务的负载均衡实例,讲述基于 DR 模式的 LVS 集群配置。

( 1 ) Director Server 的配置

在 Director Server 上配置 LVS 负载均衡集群,有两种方法:

通过 ipvsadm 命令行进行配置

通过 Redhat 提供的工具 piranha 来配置 LVS

1 )通过 ipvsadm 命令行方式配置 LVS

然后开始配置 ipvs ,执行如下操作:[root@localhost ~]#ipvsadm -C

[root@localhost ~]#ipvsadm -A -t 192.168.12.135:80 -s rr -p 600

[root@localhost ~]#ipvsadm -a -t 192.168.12.135:80 -r 192.168.12.246:80 -g

[root@localhost ~]#ipvsadm -a -t 192.168.12.135:80 -r 192.168.12.237:80 -g

上面操作中,第一行是清除内核虚拟服务器列表中的所有记录,第二行是添加一条新的虚拟 IP 记录。这个新的 IP是192.168.12.135 ,同时指定持续服务时间为 600 秒。第三、四行是在新加虚拟 IP 记录中添加两条新的 Real Server 记录,并且指定 LVS 的工作模式为直接路由模式。最后,启动 LVS 服务,执行如下操作:[root@localhost ~]#ipvsadm

这样, LVS在 Director Server 上的配置就完成了 .

为了管理和配置的方便,可以将上面的操作写成一个脚本文件,脚本内容如下:

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 11页

Page 12: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

2 、 开始配置 LVS 集群

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 12页

#!/bin/sh# description: Start LVS of Director serverVIP=192.168.12.135RIP1=192.168.12.246RIP2=192.168.12.237./etc/rc.d/init.d/functionscase "$1" in start) echo " start LVS of Director Server"# set the Virtual IP Address and sysctl parameter /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up echo "1" >/proc/sys/net/ipv4/ip_forward #Clear IPVS table /sbin/ipvsadm -C#set LVS/sbin/ipvsadm -A -t $VIP:80 -s rr -p 600/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 eth0:0 down ;; *) echo "Usage: $0 {start|stop}" exit 1Esac

Page 13: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

2 、 开始配置 LVS 集群

2 )通过 Redhat 提供的工具 piranha 来配置 LVS

Piranha是 REDHAT 提供的一个基于 Web的 LVS 配置软件,可以省去手工配置 LVS 的繁

琐工作,同时,也可单独提供 cluster 功能,例如,可以通过 Piranha激活 Director Server 的后备主

机,也就是配置 Director Server 的双机热备功能。

Piranha 工具的安装非常简单,下载 Piranha的 rpm 包,进行安装即可:

[root@localhost ~]#rpm –ivh piranha-0.8.2-1.i386.rpm

Piranha 安装完毕后 ,会产生 /etc/sysconfig/ha/lvs.cf文件,默认此文件是空的,可以通

过 Piranha 提供的 web界面配置此文件 ,也可以直接手动编辑此文件,编辑好的 lvs.cf文件内容类似

如下 :

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 13页

Page 14: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

2 、 开始配置 LVS 集群2 )通过 Redhat 提供的工具 piranha 来配置 LVS

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 14页

[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 # 虚拟服务的端口。send = "GET / HTTP/1.0\r\n\r\n" #给 real server 发送的验证字符串。

Page 15: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

2 、 开始配置 LVS 集群2 )通过 Redhat 提供的工具 piranha 来配置 LVS

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 15页

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.237active = 1weight = 1}}

Page 16: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

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 server 的配置

在 lvs的 DR和 TUn 模式下,用户的访问请求到达真实服务器后,是直接返回给用户的,而

不再经过前端的 Director Server ,因此,就需要在每个 Real server 节点上增加虚拟的 VIP 地址,这

样数据才能直接返回给用户,增加 VIP 地址的操作可以通过创建脚本的方式来实现,创建文件 /etc/

init.d/lvsrs ,脚本内容如下:

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 16页

Page 17: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

3 、Real server 的配置#!/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请求。

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 17页

Page 18: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

4 、在 Director 上配置冗余策略 Ldirectord在 heartbeat 中, ldirectord其实是作为它的一个插件出现的,所以它默认包含在 heartbeat 软件包

中, Ldirectord 的核心作用是监控 Real Server 节点状态,当 Real Server失效时,把它从虚拟服务器列表中删除,恢复时重新添加到列表,同时,它还能调用 ipvsadm自动创建 LVS 路由表,这点从下面要讲述的 ldirectord.cf 中可以看出,这里需要说明的是, ldirectord和 Piranha 都具有监控 Real Server 的功能,如果要通过 ldirectord监控节点状态,只需启动 ldirectord

服务,整个集群系统就可以运行起来,而无需执行上面我们配置的 LVS脚本,因为 ldirectord 会自动调用 ipvsadm创建 LVS 路由表,而我们上面讲述的利用 ipvsadm 命令行方式配置 LVS ,是为了让读者能更深入的了解 ipvsadm 的实现细节和实现机制。

如果是通过 Piranha 工具配置 LVS ,就无需使用 ldirectord, Piranha 工具对应的系统进程是 pluse ,此进程也会自动调用 ipvsadm创建 LVS 路由表,同时会利用自身的 nanny守护进程监控 real server 的状态!

ldirectord 的安装非常简单,直接通过 yum 就可以安装完成:[root@localhost root]#yum install heartbeat-ldirectord

安装完成后,默认的安装路径为 /etc/ha.d ,同时需要将模板配置文件拷贝到这个目录下,执行如下命令:[root@localhost root]# rpm -q heartbeat-ldirectord -d

/usr/share/doc/heartbeat-ldirectord-2.1.3/ldirectord.cf

/usr/share/man/man8/ldirectord.8.gz

[root@localhost root]# cp /usr/share/doc/heartbeat-ldirectord-2.1.3/ldirectord.cf /etc/ha.d

可以通过执行如下命令启动或关闭 ldirectord 服务/etc/init.d/ldirectord {start|stop}

Ldirectord 的配置文件是 /etc/ha.d/ldirectord.cf ,下面详述下这个文件每个参数的含义:

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 18页

Page 19: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

4 、在 Director 上配置冗余策略 Ldirectord

下面是需要配置的选项,注意,“ #”号后面的内容为注释:

# Global Directives

checktimeout=20 #判定 real server 出错的时间间隔。

checkinterval=10 # 指定 ldirectord 在两次检查之间的间隔时间。

fallback=127.0.0.1:80 #当所有的 real server 节点不能工作时, web 服务重定向的地址。

autoreload=yes # 是否自动重载配置文件,选 yes 时,配置文件发生变化,自动载入配置信息。

logfile="/var/log/ldirectord.log" # 设定 ldirectord日志输出文件路径。

quiescent=no #当选择 no 时,如果一个节点在 checktimeout 设置的时间周期内没有响应, ldirectord将会从 LVS 的路由表中直接移除 real server ,此时,将中断现有的客户端连接,并使 LVS丢掉所有的连接跟踪记录和持续连接模板,如果选择为 yes ,当某个 real server失效时, ldirectord将失效节点的权值设置为 0 ,新的连接将不能到达,但是并不从 LVS 路由表中清除此节点,同时,连接跟踪记录和程序连接模板仍然保留在 Director 上。

注意:以上几行为 ldirectord.cf文件的“全局”设置,它们可以应用到下面多个虚拟主机,下面是每个虚拟主机的配置。

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 19页

Page 20: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

4 、在 Director 上配置冗余策略 Ldirectord下面是需要配置的选项,注意,“ #”号后面的内容为注释:# Sample for an http virtual service

virtual=192.168.12.135:80 # 指定虚拟的 IP 地址和端口号,注意,在 virtual 行后面的行必须缩进 4 个空格或以一个 tab字符进行标记。real=192.168.12.246:80 gate # 指定 Real Server 服务器地址和端口,同时设定 LVS 工作模式,用 gate 表示 DR 模式, ipip 表示 TUNL 模式, masq 表示 NAT 模式。real=192.168.12.237:80 gate

fallback=127.0.0.1:80 gate

service=http # 指定服务的类型,这里是对 http 服务做负载均衡。request="index.html" #ldirectord将根据指定的 Real Server 地址,结合该选项给出的请求路径,发送访问请求,检查 Real Server 上的服务是否正常运行,确保这里给出的页面地址是可访问的,不然 ldirectord 会误认为此节点已经失效,发生错误监控现象。receive="Test Page" # 指定请求和应答字串。scheduler=rr # 指定调度算法,这里是 rr (轮叫)算法。protocol=tcp # 指定协议的类型, LVS 支持 TCP和 UDP协议。checktype=negotiate # 指定 Ldirectord 的检测类型,默认为 negotiate 。checkport=80 # 指定监控的端口号。virtualhost=www.ixdba.net # 虚拟服务器的名称,随便指定。

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 20页

Page 21: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

5 、 启动 LVS 集群服务 LVS 负载均衡管理和使用有两种方式,这里以 Piranha 工具为主进行介绍。

首先,启动每个 real server 节点的服务:

[root@localhost ~]# /etc/init.d/lvsrs start

start LVS of REALServer

然后,在 Director Server启动 pulse 服务:

[root@DR1 ~]#/etc/init.d/pulse start

[root@DR1 ~]#/ ipvsadm -L

IP Virtual Server version 1.2.0 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.12.135:http rr persistent 600

-> 192.168.12.246:http Route 1 3 22

-> 192.168.12.237:http Route 1 9 10

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 21页

Page 22: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

5 、启动 LVS 集群服务此时查看 pulse 服务的系统日志信息如下:[root@localhost ~]# tail -f /var/log/messages

Nov 22 15:52:55 lvs lvs[7031]: starting virtual service www.ixdba.net active: 80

Nov 22 15:52:55 lvs lvs[7031]: create_monitor for www.ixdba.net/RS1 running as pid 7039

Nov 22 15:52:55 lvs nanny[7039]: starting LVS client monitor for 192.168.12.135:80

Nov 22 15:52:55 lvs lvs[7031]: create_monitor for www.ixdba.net/RS2 running as pid 7040

Nov 22 15:52:55 lvs nanny[7039]: making 192.168.12.246:80 available

Nov 22 15:52:55 lvs nanny[7040]: starting LVS client monitor for 192.168.12.135:80

Nov 22 15:52:55 lvs nanny[7040]: making 192.168.12.237:80 available

从日志可以看出, pulse 服务启动了一个 www.ixdba.net 的虚拟服务,同时加载了 RS1和 RS2 两个节点,然后检测到RS1和 RS2 两个节点对应的 80 端口可用,最后启动了虚拟 IP的 80 端口,对外提供服务。日志中“ www.ixdba.net” 、“ RS1” 、“ RS2”等标识均在 Piranha 的配置文件 /etc/sysconfig/ha/lvs.cf 中定义。Pulse 服务启动完毕,通过“ ps –ef” 命令可以看到有如下进程在运行:[root@localhost ~]# ps -ef|grep nanny

/usr/sbin/nanny -c -h 192.168.12.246 -p 80 -s GET / HTTP/1.0\r\n\r\n -x HTTP -a 15 -I /

/usr/sbin/nanny -c -h 192.168.12.237 -p 80 -s GET / HTTP/1.0\r\n\r\n -x HTTP -a 15 -I /

其中, nanny 就是 Pulse 服务的守护进程,用于监控 LVS 服务节点的运行状态,类似与 ldirectord 的节点监控功能。

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 22页

Page 23: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

6 、 LVS+Keepalived 构建拓扑图

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 23页

Page 24: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

7 、安装 Keepalivedkeepalived起初是为 LVS 设计的 , 专门用来监控集群系统中各个服务节点的状态 ,后来又加入了 VRRP 的功能

, VRRP是 Virtual Router Redundancy Protocol (虚拟路由器冗余协议)的缩写, VRRP 出现的目的就是为了解决静态路由出现的单点故障问题,它能够保证网络的不间断、稳定的运行。所以, keepalived 一方面具有服务器健康检测功能,另一方面也具有 HA cluster 功能。

Keepalived 的官方站点是 http://www.keepalived.org ,可以在这里下载到各种版本,我们这里下载的是keepalived-1.1.19.tar.gz ,安装步骤如下:

[root@DR1 ~]#tar zxvf keepalived-1.1.19.tar.gz

[root@DR1 ~]#cd keepalived-1.1.19

[root@DR1 keepalived-1.1.19]#./configure --sysconf=/etc \

> --with-kernel-dir=/usr/src/kernels/2.6.18-8.el5-i686

[root@DR1 keepalived-1.1.19]#make

[root@DR1 keepalived-1.1.19]#make install

[root@DR1 keepalived-1.1.19]#ln -s /usr/local/sbin/keepalived /sbin/

在编译选项中,“ --sysconf” 指定了 Keepalived 配置文件的安装路径,即路径为 /etc/Keepalived/

Keepalived.conf ,“ --with-kernel-dir” 这是个很重要的参数,但这个参数并不是要把 Keepalived 编译进内核,而是指定使用内核源码里面的头文件,就是 include目录。如果要使用 LVS 时,才需要用到此参数,否则是不需要的。

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 24页

Page 25: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

8 、配置 Keepalived

Keepalived的配置非常简单,仅仅需要一个配置文件即可完成 HA cluster和 lvs服务节点监控功

能, Keepalived的安装已经在上面章节进行了介绍,在通过 Keepalived搭建高可用的 LVS集群实例中,主、备

Director

Server都需要安装 Keepalived软件,安装成功后,默认的配置文件路径为 /etc/Keepalived/Keepalived.conf。一个

完整的 keepalived配置文件,有三个部分组成,分别是全局定义部分、 vrrp实例定义部分以及虚拟服务器定义部分,

下面详细介绍下这个配置文件中每个选项的详细含义和用法:

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 25页

# 全局定义部分global_defs { notification_email { [email protected] # 设置报警邮件地址,可以设置多个,每行一个。注意,如果要开启邮件报警,需要开启本机的 sendmail 服务。 [email protected] } notification_email_from Keepalived@localhost # 设置邮件的发送地址。 smtp_server 192.168.200.1 # 设置 smtp server 地址。 smtp_connect_timeout 30 # 设置连接 smtp 服务器超时时间。 router_id LVS_MASTER #运行 Keepalived 服务器的一个标识。发邮件时显示在邮件标题中的信息}

Page 26: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

8 、配置 Keepalived

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 26页

#vrrp 实例定义部分vrrp_instance VI_1 {state MASTER # 指定 Keepalived 的角色, MASTER 表示此主机是主用服务器, BACKUP 表示是备用服务器。 interface eth0 #指定 HA监测网络的接口。 virtual_router_id 51 # 虚拟路由标识,这个标识是一个数字,并且同一个 vrrp 实例使用唯一的标识,即同一个vrrp_instance 下, MASTER和 BACKUP必须是一致的。priority 100 # 定义优先级,数字越大,优先级越高,在一个 vrrp_instance 下, MASTER 的优先级必须大于 BACKUP 的优先级。 advert_int 1 # 设定 MASTER与 BACKUP 负载均衡器之间同步检查的时间间隔,单位是秒。 authentication { # 设定验证类型和密码。 auth_type PASS # 设置验证类型,主要有 PASS和 AH 两种。 auth_pass 1111 # 设置验证密码,在一个 vrrp_instance 下, MASTER与 BACKUP必须使用相同的密码才能正常通信。 } virtual_ipaddress { # 设置虚拟 IP 地址,可以设置多个虚拟 IP 地址,每行一个。 192.168.12.135 }}

Page 27: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

8 、配置 Keepalived

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 27页

# 虚拟服务器定义部分virtual_server 192.168.12.135 80 { # 设置虚拟服务器,需要指定虚拟 ip 地址和服务端口, ip与端口之间用空格隔开。 delay_loop 6 # 设置健康检查时间,单位是秒。 lb_algo rr # 设置负载调度算法,这里设置为 rr ,即轮询算法。 lb_kind DR # 设置 LVS 实现负载均衡的机制,可以有 NAT、 TUN和 DR三个模式可选。persistence_timeout 50 # 会话保持时间,单位是秒,这个选项对于动态网页是非常有用的,为集群系统中 session共享提供了一个很好的解决方案。有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话保持时间。需要注意的是,这个会话保持时间,是最大无响应超时时间,也就是说用户在操作动态页面时,如果在 50 秒内没有执行任何操作,那么接下来的操作会被分发到另外节点,但是如果一直在操作动态页面,则不受 50 秒的时间限制。 protocol TCP # 指定转发协议类型,有tcp和 udp 两种。

Page 28: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

8 、配置 Keepalived

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 28页

real_server 192.168.12.246 80 { # 配置服务节点 1 ,需要指定 real server 的真实 IP 地址和端口, ip与端口之间用空格隔开。weight 3 # 配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值的大小可以为不同性能的服务器分配不同的负载,可以对性能高的服务器设置较高的权值,而对性能较低的服务器设置相对较低的权值,这样就合理的利用和分配了系统资源。 TCP_CHECK { #realserve 的状态检测设置部分,单位是秒 connect_timeout 10 #10 秒无响应超时 nb_get_retry 3 # 重试次数 delay_before_retry 3 #重试间隔 } }

real_server 192.168.12.237 80 { # 配置服务节点 2 weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }}

Page 29: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

华章培训 www.hztraining.com

8 、配置 Keepalived

在配置 Keepalived.conf 时,需要特别注意配置文件的语法格式,因为 Keepalived 在启动时并不检测配置文件的正确性

,即使没有配置文件, Keepalived 也照样能启动起来,因而配置文件一定要正确。

在默认情况下, Keepalived 在启动时会查找 /etc/Keepalived/Keepalived.conf 配置文件,如果你的配置文件放在了其它路径下,可以通过“ Keepalived -f” 参数指定你所在的配置文件路径即可。

Keepalived.conf 配置完毕后,将此文件拷贝到备用 Director Server 对应的路径下,然后做两个简单的修改即可 :

将“ state MASTER” 更改为“ state BACKUP”

将 priority 100 更改为一个较小的值,这里改为“ priority 80”

最后,还要配置集群的 Real server 节点,以达到与Director Server 相互广播通信并忽略 arp 的目的,脚本的内容已经在上面进行介绍,这里不做解释。

9 、启动 Keepalived+lvs 集群系统在主、备 Director Server 上分别启动 Keepalived 服务,可以执行如操下作:

[root@DR1 ~]#/etc/init.d/Keepalived start

接着在两个 Real server 上执行如下脚本:

[root@rs1~]#/etc/init.d/lvsrs start

至此, Keepalived+lvs 高可用的 LVS 集群系统已经运行起来了。

通过 LVS+Keepalived搭建高可用的负载均衡集群系统

第 29页

Page 30: Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)

本套课程总共 43 集,讲解的核心是 linux 下的集群技术,主要介绍linux 下的高可用集群、存储集群、负载均衡集群的应用案例,同时也附带了与集群相关的其它技术课题,比如运维监控方面、网络存储方面等 . 本套视频已经由华章培训网制作发行,视频免费观看地址如下 :http://v.youku.com/v_show/id_XMjUyODI4MjM2.html 注意:在优酷上传视频,由于在上传时,优酷自动压缩了视频大小,所以清晰度不是很高,但是我们的正版视频是高清 wmv 格式的。

全套视频课程内容简介:http://www.ixdba.net/a/os/linux/2011/0325/1180.html 全套视频课程购买地址 :http://product.china-pub.com/3501607

联系作者:QQ: 397824870Email:[email protected]

后记