一、  现状

目前网站的负载均衡和高可用性是通过DNS 轮询来实现的,这种方式不符合当前标准做法.

二、  目标

用业界标准的LVS 替换当前的DNS 轮询.

三、  总体方案

3.1、系统设计

本方案将在5台服务器上实现具备负载均衡和高可用性的LVS, 使用的转发模式为直接路由, 使用的连接分配模式为源地址哈希(SH). 其中两台服务器作为负载均衡器,以实现高可用性, 另外三台服务器作为Real Server 提供 WEB 服务, 以实行负载均衡.
另外还将配置简单的GUI, 以实现对LVS的简单监控.
LVS 群集配置完成后, 需要在我们的DNS 服务器上配置相应的DNS 记录.
 
                         
 3-1

3.2、方案描述

Ø 本方案将在不增加任何硬件设备的条件下进行, 因此将把负载均衡器安装在两台提供其它服务的服务器上.
Ø 为达到很好的性能我们选用直接路由这种转发模式
Ø 为达到切实的负载均衡我们选用最少连接数这种连接分配模式.
Ø 使用成熟的LVS解决方案Ultramonkeykeepalived 也是不错的选择).

3.3、负载分析

Ø 负载均衡器的系统负载: CPU 和内存使用量都很低
Ø 负载均衡器的网络负载: 网络流量很低
因此负载均衡器可以跟其它服务共用一台服务器的资源

3.4、冗余设计

       我们选用的这种配置(如图3-1所示)本身就具备冗余能力.

3.5IP 地址分配

功能类别        内网IP地址    公网 IP 地址    IP of lo:0 /VIP
WEB服务器1      192.168.1.1                   1.1.1.6
WEB服务器2      192.168.1.2                   1.1.1.6
WEB服务器3      192.168.1.3                   1.1.1.6
负载均衡器1     192.168.1.4    1.1.1.4 
   负载均衡器2     192.168.1.5    1.1.1.5

3.6、安装应用软件时,必须有设备名称,软件版本,安装目录

设备名称              软件                                              安装目录
web-svr-001         arptables-noarp-addr (rpm )      --
web-svr-002         同上                                               --
web-svr-003         同上                                               --
lb-svr-mst              heartbeat                                        --
                              heartbeat-ldirectord                       --
                              heartbeat-pils                                --
                              heartbeat-stonith                          --
                              ipvsadm                                        --
                              libnet                                            --
                              perl-Authen-SASL                       --
                              perl-Digest-HMAC                     --
                              perl-Digest-SHA1                       --
                              perl-IO-Socket-SSL                    --
                              perl-ldap                                      --
                              perl-Mail-IMAPClient                  --
                              perl-Net-DNS                              --
                              perl-Net-SSLeay                          --
                              perl-Parse-RecDescent                 --
                              (以上是rpm)                        
                              libart_lgpl                             /usr/local/libart
                              rrd-tool                                /usr/local/rrd-tool  
                              lvs-rrd                                 /var/www/html/lvs-rrd
                              (以上为tarball)
lb-svr-slv               同上                                    同上

四、  实施步骤

4.1施工计划与时间

计划安排
预计完成时间(分钟)
主要负责人
获取跟配置LVS相关的信息
30
邹可见
配置负载均衡器
60
邹可见
配置后端WEB 服务器
30
邹可见
验证LVS 集群
30
邹可见
配置LVS集群监控工具
30
邹可见
检查LVS集群监控工具的运行状况
15
邹可见
修改DNS记录
15
邹可见
再次验证LVS 集群
30
邹可见

4.2操作步骤(详细到命令级别)

预估花费时间
预计开始时间-完成时间
实际开始时间-完成时间
4小时
待定
 
 
 
1)  登录到将建立集群的每台服务器上,执行 uname –n 获取主机名。
 
2)  登录到将作为负载均衡器的两台服务器上,执行LB/script/install.sh 安装相关软件包并拷贝配置文件到/etc/ha.d目录下。

3)  修改其中一台负载均衡器上的/etc/ha.d 目录下的配置文件,并将修改后的配置文件拷贝到另外一台负载均衡器的/etc/ha.d目录下。

4)  启动两台负载均衡器上的/etc/init.d/heartbeat 服务:/etc/init.d/heartbeat start

5)  查看两台负载均衡器上的 /var/log/lvs.log 文件,确认它们工作正常。

6)  登录到三台后端WEB服务器上,执行RS/script/install.sh 安装相关软件包并进行配置,
RS/config/mytest.html 文件拷贝到 各台机的apache 文档目录下。

7)   Master 负载均衡器上执行 ipvsadm –L –n 确认 LVS 已经将三台后端WEB服务器加入到 Real Server Pool 中。
 
8)在两台负载均衡器上运行LB/script/install_mon.sh 安装监控软件lvs-rrd
 
9)修改lvs-rrd 的配置脚本 graph-lvs.sh lvs.rrd.update
 
10) 修改DNS配置,将[url]www.domain.com[/url]映射到VIP上。
 
11)在Master 负载均衡器上执行 ipvsadm –L –n 检查LVS 分发HTTP 请求的情况。

五、应急和回滚方案

5.1.本方案可能会引起的风险,包括极限风险和应变措施

风险:LVS 不稳定导致无法正常访问[url]www.domain.com[/url]
应变措施:修改DNS 配置,恢复使用DNS 轮询。

5.2、明确采用应急方案条件

在修改DNS 配置并且配置生效后,如果无法正常访问[url]www.domain.com[/url],必须立即回滚。

六、测试及验收

6.1施工人员测试方案

1、操作步骤详细到命令行级别
      查看LVS的连接情况: ipvsadm –L –n
      查看LVS的吞吐量情况: ipvsadm –L –n –rate
      查看LVS的统计信息: ipvsadm –L –n –stat
      如果上述步骤都返回正常信息,则检查LVS监控页面是否正常。
   WEB 浏览器中打开如下页面,检查是否能够看到LVS集群中各个服务器的 active connection inactive connection 情况。
2、明确结果正常或异常的条件
     如果看到三台WEB服务器的active connection 大体相同,则表示LVS 正常。
    反之,如果三台WEB服务器的active connection在很长一段时间内都相差悬殊,则需要作调整。
 
附:附件里面是排版工整的本文原件,和相关脚本。