SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Linux 负载均衡软件
            LVS
                主讲人:高俊峰




华章培训网、 [ www.h ztrain in g .c o m ] 华章培训网版权所有
Linux 负载均衡软件
            LVS
      内容概述
      LVS 集群的体系结构以及特点

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

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




华章培训网、 [ www.h ztrain in g .c o m ] 华章培训网版权所有
Linux 负载均衡软件
            LVS
     第二讲:通过 LVS+Keepalived 搭建高可用的负载均衡集
                    群系统
                主讲人:高俊峰




华章培训网、 [ www.h ztrain in g .c o m ] 华章培训网版权所有
通过 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页
通过 LVS+Keepalived 搭建高可用的负载均衡集群系
                                 统
1 、 安装 LVS 软件
   ( 1 )安装前准备

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




华章培训            www.hztraining.com   第 5页
通过 LVS+Keepalived 搭建高可用的负载均衡集群系
                                  统
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 管理软件
了。



华章培训                         www.hztraining.com                     第 6页
通过 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页
通过 LVS+Keepalived 搭建高可用的负载均衡集群系
                                 统
1 、 安装 LVS 软件
( 4 ) ipvsadm 的用法




华章培训                www.hztraining.com   第 8页
通过 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页
通过 LVS+Keepalived 搭建高可用的负载均衡集群系
                                       统
2 、 开始配置 LVS 集群
下面通过搭建 www 服务的负载均衡实例,讲述基于 DR 模式的 LVS 集群配置。

( 1 ) Director Ser ver 的配置

在 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 模式下此操作是必须的。

    华章培训                               www.hztraining.com                                         第 10页
通过 LVS+Keepalived 搭建高可用的负载均衡集群系
                                       统
2 、 开始配置 LVS 集群
下面通过搭建 www 服务的负载均衡实例,讲述基于 DR 模式的 LVS 集群配置。

( 1 ) Director Ser ver 的配置

在 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 上的配置就完成了 .
为了管理和配置的方便,可以将上面的操作写成一个脚本文件,脚本内容如下:
    华章培训                               www.hztraining.com                    第 11页
通过 LVS+Keepalived 搭建高可用的负载均衡集群系
                                          统
   2 、 开始配置 LVS 集群
#!/bin/sh
# description: Start LVS of Director server
VIP=192.168.12.135
RIP1=192.168.12.246
RIP2=192.168.12.237
./etc/rc.d/init.d/functions
case "$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
通过 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页
通过 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 发送的验证字符串。
通过 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页
}
}
通过 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页
通过 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页
通过 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页
通过 LVS+Keepalived 搭建高可用的负载均衡集群系
                                        统
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 文件的“全局”设置,它们可以应用到下面多个虚拟主机,下面是每个
虚拟主机的配置。
  华章培训                              www.hztraining.com                第 19页
通过 LVS+Keepalived 搭建高可用的负载均衡集群系
                                       统
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      # 虚拟服务器的名称,随便指定。

  华章培训                                 www.hztraining.com                    第 20页
通过 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 -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

华章培训                           www.hztraining.com                   第 21页
通过 LVS+Keepalived 搭建高可用的负载均衡集群系
                                       统
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.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页
通过 LVS+Keepalived 搭建高可用的负载均衡集群系
                                  统
6 、 LVS+Keepalived 构建拓扑图




 华章培训            www.hztraining.com   第 23页
通过 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页
通过 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页
通过 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页
通过 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页
通过 LVS+Keepalived 搭建高可用的负载均衡集群系
                                          统
    8 、 配置 Keepalived
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
      }
    }
}

      华章培训                            www.hztraining.com               第 28页
通过 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页
后记
         本套课程总共 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 : 397824870
Email:dba.gao@gmail.com

Weitere ähnliche Inhalte

Was ist angesagt?

Lvs基本原理和配置课件
Lvs基本原理和配置课件Lvs基本原理和配置课件
Lvs基本原理和配置课件
galen700
 
高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用
redhat9
 
九州通 Tsm重新配置文档(2008 11 10)
九州通 Tsm重新配置文档(2008 11 10)九州通 Tsm重新配置文档(2008 11 10)
九州通 Tsm重新配置文档(2008 11 10)
heima911
 
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
redhat9
 
Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版
redhat9
 
Pm 04 华胜天成openstack实践汇报-20120808
Pm 04 华胜天成openstack实践汇报-20120808Pm 04 华胜天成openstack实践汇报-20120808
Pm 04 华胜天成openstack实践汇报-20120808
OpenCity Community
 
Apache配置文件说明
Apache配置文件说明Apache配置文件说明
Apache配置文件说明
wensheng wei
 
Mysql proxy cluster
Mysql proxy clusterMysql proxy cluster
Mysql proxy cluster
Yiwei Ma
 
Apache服务器配置全攻略
Apache服务器配置全攻略Apache服务器配置全攻略
Apache服务器配置全攻略
Yiwei Ma
 

Was ist angesagt? (19)

Lvs基本原理和配置课件
Lvs基本原理和配置课件Lvs基本原理和配置课件
Lvs基本原理和配置课件
 
高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用
 
九州通 Tsm重新配置文档(2008 11 10)
九州通 Tsm重新配置文档(2008 11 10)九州通 Tsm重新配置文档(2008 11 10)
九州通 Tsm重新配置文档(2008 11 10)
 
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
 
Debian 套件打包教學指南 v0.19 - 繁體中文翻譯
Debian 套件打包教學指南 v0.19 - 繁體中文翻譯Debian 套件打包教學指南 v0.19 - 繁體中文翻譯
Debian 套件打包教學指南 v0.19 - 繁體中文翻譯
 
Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版
 
Pm 04 华胜天成openstack实践汇报-20120808
Pm 04 华胜天成openstack实践汇报-20120808Pm 04 华胜天成openstack实践汇报-20120808
Pm 04 华胜天成openstack实践汇报-20120808
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍
 
Ansible 101
Ansible 101Ansible 101
Ansible 101
 
Kafka in Depth
Kafka in DepthKafka in Depth
Kafka in Depth
 
Rsync服务器架设方法.v0.1b
Rsync服务器架设方法.v0.1bRsync服务器架设方法.v0.1b
Rsync服务器架设方法.v0.1b
 
-Nginx book
 -Nginx book -Nginx book
-Nginx book
 
06.web sphere培训 实践
06.web sphere培训 实践06.web sphere培训 实践
06.web sphere培训 实践
 
Openstack网络规划
Openstack网络规划Openstack网络规划
Openstack网络规划
 
Apache配置文件说明
Apache配置文件说明Apache配置文件说明
Apache配置文件说明
 
Mysql proxy cluster
Mysql proxy clusterMysql proxy cluster
Mysql proxy cluster
 
Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档
 
Apache服务器配置全攻略
Apache服务器配置全攻略Apache服务器配置全攻略
Apache服务器配置全攻略
 
基于Fuel的超融合一体机
基于Fuel的超融合一体机基于Fuel的超融合一体机
基于Fuel的超融合一体机
 

Andere mochten auch (8)

Developments in linux
Developments in linuxDevelopments in linux
Developments in linux
 
Cloud learning
Cloud learningCloud learning
Cloud learning
 
0 mq the guide
0 mq   the guide0 mq   the guide
0 mq the guide
 
Karla jackson4 hw499-01-project4
Karla jackson4 hw499-01-project4Karla jackson4 hw499-01-project4
Karla jackson4 hw499-01-project4
 
Karla jackson4 hw499-01-project8
Karla jackson4 hw499-01-project8Karla jackson4 hw499-01-project8
Karla jackson4 hw499-01-project8
 
Karla jackson4 hw499-01-project8
Karla jackson4 hw499-01-project8Karla jackson4 hw499-01-project8
Karla jackson4 hw499-01-project8
 
Larena3 0架构与关键技术
Larena3 0架构与关键技术Larena3 0架构与关键技术
Larena3 0架构与关键技术
 
Karla jackson4 hw499-01-project5
Karla jackson4 hw499-01-project5Karla jackson4 hw499-01-project5
Karla jackson4 hw499-01-project5
 

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

Sery lvs+keepalived
Sery lvs+keepalivedSery lvs+keepalived
Sery lvs+keepalived
colderboy17
 
第一讲 My sql初步
第一讲 My sql初步第一讲 My sql初步
第一讲 My sql初步
hjl888666
 
Varnish简介
Varnish简介Varnish简介
Varnish简介
fangdeng
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
OpenCity Community
 
Svn安裝與使用簡易教學
Svn安裝與使用簡易教學Svn安裝與使用簡易教學
Svn安裝與使用簡易教學
Ray Wei
 
X64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newX64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 new
Yiwei Ma
 
高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用
redhat9
 
Appserv setup
Appserv setupAppserv setup
Appserv setup
Ht Wang
 
P6 服务器安装与配置
P6 服务器安装与配置P6 服务器安装与配置
P6 服务器安装与配置
epst
 
Mysql mmm安装指南(翻译)
Mysql mmm安装指南(翻译)Mysql mmm安装指南(翻译)
Mysql mmm安装指南(翻译)
Yiwei Ma
 
Sql Cluster Tech Net 0401(Pm)
Sql Cluster Tech Net 0401(Pm)Sql Cluster Tech Net 0401(Pm)
Sql Cluster Tech Net 0401(Pm)
bigqiang zou
 
为10g rac cluster添加节点
为10g rac cluster添加节点为10g rac cluster添加节点
为10g rac cluster添加节点
maclean liu
 
康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)
Yiwei Ma
 

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

Sery lvs+keepalived
Sery lvs+keepalivedSery lvs+keepalived
Sery lvs+keepalived
 
Ruby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuRuby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for Ubuntu
 
第一讲 My sql初步
第一讲 My sql初步第一讲 My sql初步
第一讲 My sql初步
 
Varnish简介
Varnish简介Varnish简介
Varnish简介
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
 
8, lamp
8, lamp8, lamp
8, lamp
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接
 
1~60
1~601~60
1~60
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
 
Svn安裝與使用簡易教學
Svn安裝與使用簡易教學Svn安裝與使用簡易教學
Svn安裝與使用簡易教學
 
X64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newX64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 new
 
高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用
 
Appserv setup
Appserv setupAppserv setup
Appserv setup
 
P6 服务器安装与配置
P6 服务器安装与配置P6 服务器安装与配置
P6 服务器安装与配置
 
Mysql mmm安装指南(翻译)
Mysql mmm安装指南(翻译)Mysql mmm安装指南(翻译)
Mysql mmm安装指南(翻译)
 
twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決
 
Sql Cluster Tech Net 0401(Pm)
Sql Cluster Tech Net 0401(Pm)Sql Cluster Tech Net 0401(Pm)
Sql Cluster Tech Net 0401(Pm)
 
为10g rac cluster添加节点
为10g rac cluster添加节点为10g rac cluster添加节点
为10g rac cluster添加节点
 
康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)
 
为什么上网浏览要用Shadowsocks?
为什么上网浏览要用Shadowsocks?为什么上网浏览要用Shadowsocks?
为什么上网浏览要用Shadowsocks?
 

Mehr von hik_lhz (6)

Log4c developersguide
Log4c developersguideLog4c developersguide
Log4c developersguide
 
D bus specification
D bus specificationD bus specification
D bus specification
 
自动生成 Makefile 的全过程详解!
自动生成 Makefile 的全过程详解!自动生成 Makefile 的全过程详解!
自动生成 Makefile 的全过程详解!
 
Considerations when implementing_ha_in_dmf
Considerations when implementing_ha_in_dmfConsiderations when implementing_ha_in_dmf
Considerations when implementing_ha_in_dmf
 
8 集群
8 集群8 集群
8 集群
 
Memcached内存分析、调优、集群
Memcached内存分析、调优、集群Memcached内存分析、调优、集群
Memcached内存分析、调优、集群
 

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

  • 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页
  • 5. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 1 、 安装 LVS 软件 ( 1 )安装前准备 安装的 LVS 负载均衡集群拓扑图: 华章培训 www.hztraining.com 第 5页
  • 6. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 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 管理软件 了。 华章培训 www.hztraining.com 第 6页
  • 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. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 1 、 安装 LVS 软件 ( 4 ) ipvsadm 的用法 华章培训 www.hztraining.com 第 8页
  • 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. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 2 、 开始配置 LVS 集群 下面通过搭建 www 服务的负载均衡实例,讲述基于 DR 模式的 LVS 集群配置。 ( 1 ) Director Ser ver 的配置 在 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 模式下此操作是必须的。 华章培训 www.hztraining.com 第 10页
  • 11. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 2 、 开始配置 LVS 集群 下面通过搭建 www 服务的负载均衡实例,讲述基于 DR 模式的 LVS 集群配置。 ( 1 ) Director Ser ver 的配置 在 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 上的配置就完成了 . 为了管理和配置的方便,可以将上面的操作写成一个脚本文件,脚本内容如下: 华章培训 www.hztraining.com 第 11页
  • 12. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 2 、 开始配置 LVS 集群 #!/bin/sh # description: Start LVS of Director server VIP=192.168.12.135 RIP1=192.168.12.246 RIP2=192.168.12.237 ./etc/rc.d/init.d/functions case "$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. 通过 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. 通过 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页
  • 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. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 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 文件的“全局”设置,它们可以应用到下面多个虚拟主机,下面是每个 虚拟主机的配置。 华章培训 www.hztraining.com 第 19页
  • 20. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 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 # 虚拟服务器的名称,随便指定。 华章培训 www.hztraining.com 第 20页
  • 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 -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 华章培训 www.hztraining.com 第 21页
  • 22. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 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.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. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 6 、 LVS+Keepalived 构建拓扑图 华章培训 www.hztraining.com 第 23页
  • 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. 通过 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. 通过 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. 通过 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. 通过 LVS+Keepalived 搭建高可用的负载均衡集群系 统 8 、 配置 Keepalived 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 } } } 华章培训 www.hztraining.com 第 28页
  • 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. 后记 本套课程总共 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 : 397824870 Email:dba.gao@gmail.com