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

1,804 views

Published on

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

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,804
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
16
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. Linux 负载均衡软件 LVS 主讲人:高俊峰华章培训网、 [ www.h ztrain in g .c o m ] 华章培训网版权所有
  2. 2. Linux 负载均衡软件 LVS 内容概述 LVS 集群的体系结构以及特点 通过 LVS+Keepalived 搭建高可用的负载均衡集群系统 测试 LVS+Keepalived 高可用负载均衡集群华章培训网、 [ www.h ztrain in g .c o m ] 华章培训网版权所有
  3. 3. Linux 负载均衡软件 LVS 第二讲:通过 LVS+Keepalived 搭建高可用的负载均衡集 群系统 主讲人:高俊峰华章培训网、 [ www.h ztrain in g .c o m ] 华章培训网版权所有
  4. 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页
  5. 5. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统1 、 安装 LVS 软件 ( 1 )安装前准备安装的 LVS 负载均衡集群拓扑图:华章培训 www.hztraining.com 第 5页
  6. 6. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统1 、 安装 LVS 软件 ( 2 )安装操作系统需要注意的事项 Centos5.3 版本的 Linux ,内核默认支持 LVS 功能,为了方便编译安装 IPVS 管理软件,在安装操作系统时,建议选择如下这些安装包:装 桌面环境: xwindows system 、 GNOME desktop environment 。。 开发工具: development tools 、 x software development 、 gnomesoftware 、 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 管理软件了。华章培训 www.hztraining.com 第 6页
  7. 7. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统1 、 安装 LVS 软件( 3 )在 Director Ser ve 上安装 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 已经成功安装。华章培训 www.hztraining.com 第 7页
  8. 8. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统1 、 安装 LVS 软件( 4 ) ipvsadm 的用法华章培训 www.hztraining.com 第 8页
  9. 9. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统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 模式。 华章培训 www.hztraining.com 第 9页
  10. 10. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统2 、 开始配置 LVS 集群下面通过搭建 www 服务的负载均衡实例,讲述基于 DR 模式的 LVS 集群配置。( 1 ) Director Ser ver 的配置在 Director Server 上配置 LVS 负载均衡集群,有两种方法:负 通过 ipvsadm 命令行进行配置 通过 Redhat 提供的工具 piranha 来配置 LVS1 )通过 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 模式下此操作是必须的。 华章培训 www.hztraining.com 第 10页
  11. 11. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统2 、 开始配置 LVS 集群下面通过搭建 www 服务的负载均衡实例,讲述基于 DR 模式的 LVS 集群配置。( 1 ) Director Ser ver 的配置在 Director Server 上配置 LVS 负载均衡集群,有两种方法:负 通过 ipvsadm 命令行进行配置 通过 Redhat 提供的工具 piranha 来配置 LVS1 )通过 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 上的配置就完成了 .为了管理和配置的方便,可以将上面的操作写成一个脚本文件,脚本内容如下: 华章培训 www.hztraining.com 第 11页
  12. 12. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 2 、 开始配置 LVS 集群#!/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 1 www.hztraining.com 第 12页Esac
  13. 13. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统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 文件内容类似如下 : 华章培训 www.hztraining.com 第 13页
  14. 14. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 2 、 开始配置 LVS 集群 2 )通过 Redhat 提供的工具 piranha 来配置 LVS[root@localhost ~]# more /etc/sysconfig/ha/lvs.cfserial_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( 秒 ) 后没有响应,那么备份 DirectorServer 就会接管主 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. 15. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 2 、 开始配置 LVS 集群 2 )通过 Redhat 提供的工具 piranha 来配置 LVSexpect = "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 节点而言的,权值高的 realserver 处理负载的性能相对较强。}server RS2 {address = 192.168.12.237active = 1weight = 1 华章培训 www.hztraining.com 第 15页}}
  16. 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. 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 ,与 DirectorServer 上的虚拟 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页
  18. 18. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统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 ,下面详述下这个文件每个参数的含义: www.hztraining.com 第 18页
  19. 19. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统4 、在 Director 上配置冗余策略 Ldirectord下面是需要配置的选项,注意,“ #” 号后面的内容为注释:# Global Directiveschecktimeout=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 文件的“全局”设置,它们可以应用到下面多个虚拟主机,下面是每个虚拟主机的配置。 华章培训 www.hztraining.com 第 19页
  20. 20. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统4 、在 Director 上配置冗余策略 Ldirectord下面是需要配置的选项,注意,“ #” 号后面的内容为注释:# Sample for an http virtual servicevirtual=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 gatefallback=127.0.0.1:80 gateservice=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 # 虚拟服务器的名称,随便指定。 华章培训 www.hztraining.com 第 20页
  21. 21. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统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 -LIP Virtual Server version 1.2.0 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 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华章培训 www.hztraining.com 第 21页
  22. 22. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统5 、启动 LVS 集群服务此时查看 pulse 服务的系统日志信息如下:[root@localhost ~]# tail -f /var/log/messagesNov 22 15:52:55 lvs lvs[7031]: starting virtual service www.ixdba.net active: 80Nov 22 15:52:55 lvs lvs[7031]: create_monitor for www.ixdba.net/RS1 running as pid 7039Nov 22 15:52:55 lvs nanny[7039]: starting LVS client monitor for 192.168.12.135:80Nov 22 15:52:55 lvs lvs[7031]: create_monitor for www.ixdba.net/RS2 running as pid 7040Nov 22 15:52:55 lvs nanny[7039]: making 192.168.12.246:80 availableNov 22 15:52:55 lvs nanny[7040]: starting LVS client monitor for 192.168.12.135:80Nov 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.0rnrn -x HTTP -a 15 -I //usr/sbin/nanny -c -h 192.168.12.237 -p 80 -s GET / HTTP/1.0rnrn -x HTTP -a 15 -I /其中, nanny 就是 Pulse 服务的守护进程,用于监控 LVS 服务节点的运行状态,类似与 ldirectord 的节点监控功能。 华章培训 www.hztraining.com 第 22页
  23. 23. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统6 、 LVS+Keepalived 构建拓扑图 华章培训 www.hztraining.com 第 23页
  24. 24. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统7 、 安装 Keepalived keepalived 起初是为 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 时,才需要用到此参数,否则是不需要 华章培训的。 www.hztraining.com 第 24页
  25. 25. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 8 、 配置 Keepalived Keepalived 的配置非常简单,仅仅需要一个配置文件即可完成 HA cluster 和 lvs 服务节点监控功能, Keepalived 的 安装已经在上面章节进行了介绍,在通过 Keepalived 搭建高可用的 LVS 集群实例中,主、备 Director Server 都需要安装 Keepalived 软件,安装成功后,默认的配置文件路径为 /etc/Keepalived/Keepalived.conf 。一个完整的 keepalived 配置文 件,有三个部分组成,分别是全局定义部分、 vrrp 实例定义部分以及虚拟服务器定义部分,下面详细介绍下这个配置文件 中每个选项的详细含义和用法:# 全局定义部分global_defs { notification_email { dba.gao@gmail.com # 设置报警邮件地址,可以设置多个,每行一个。注意,如果要开启邮件报警,需要开启本机的sendmail 服务。 ixdba@163.com } notification_email_from Keepalived@localhost # 设置邮件的发送地址。 smtp_server 192.168.200.1 # 设置 smtp server 地址。 smtp_connect_timeout 30 # 设置连接 smtp 服务器超时时间。 router_id LVS_MASTER # 运行 Keepalived 服务器的一个标识。发邮件时显示在邮件标题中的信息} 华章培训 www.hztraining.com 第 25页
  26. 26. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 8 、 配置 Keepalived#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 }} 华章培训 www.hztraining.com 第 26页
  27. 27. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 8 、 配置 Keepalived# 虚拟服务器定义部分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 两种。 华章培训 www.hztraining.com 第 27页
  28. 28. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 8 、 配置 Keepalivedreal_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 } }} 华章培训 www.hztraining.com 第 28页
  29. 29. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统8 、 配置 Keepalived 在配置 Keepalived.conf 时,需要特别注意配置文件的语法格式,因为 Keepalived 在启动时并不检测配置文件的正确性,即使没有配置文件, Keepalived 也照样能启动起来,因而配置文件一定要正确。 在默认情况下, Keepalived 在启动时会查找 /etc/Keepalived/Keepalived.conf 配置文件,如果你的配置文件放在了其它路径下,可以通过“ Keepalived -f” 参数指定你所在的配置文件路径即可。 Keepalived.conf 配置完毕后,将此文件拷贝到备用 Director Server 对应的路径下,然后做两个简单的修改即可 :: 将“ state MASTER” 更改为“ state BACKUP”s 将 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 集群系统已经运行起来了。 华章培训 www.hztraining.com 第 29页
  30. 30. 后记 本套课程总共 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:dba.gao@gmail.com

×