负载均衡器都转发用户请求,其主要用意在于提高资源的利用率。
一、多vrrp_instance负载均衡需求描述
本方案要实现一个web及自定义的tcp服务的负载均衡.其中web为3个站点,运行在同一个服务器上,以虚拟机的方式实现;自定义的tcp服务,使用两个端口号,运行在不同的服务器上。
在这个环境中,共有14个服务器:2个负载均衡器(分别命名为 lvs-1、lvs-2),4个web服务器,4个运行自定义端口为3000 tcp服务的服务器,以及4个运行自定义端口为4000 tcp服务的服务器。本方案仍然使用负载均衡的DR模式,为了有效地使用紧缺的ip地址资源,我们只需要使用2个vip地址就可达到目的----web服务使用一个vip, 后面2个服务共用一个vip。为了更清楚地理解前面的描述,表1、2对整个需求进行了汇总。
Web服务支持的3个站点均为动态网站,其运行环境为apache加php,因为涉及帐号登录,因此负载均衡过程必须启用会话保持。这里把3个站点整合到一个物理服务器上,既能保持服务配置的一致性,又能最大限度的利用资源。关于动态站点及apache虚拟的配置,请参看其他章节的内容。
二、负载均衡多vrrp负载集群部署
参照"cdn缓存服务器集群部署"操作步骤,多vrrp_instance集群的部署也按真实服务器和负载均衡器2个环节来处理。
● 真实服务器上进行的操作
1、 编写负载均衡客户端配置脚本。本例中有3组真实服务器,每组服务器使用相同的lvs客户端配置脚本。配置脚本除了vip而外,其余的部分与本章其他部分所列的lvs客户端配置脚本完全相同。关于3个组vip地址使用情况,请看参表6-4,表6-5。
2、 检验lvs客户端配置脚本的正确性。
● 负载均衡器上的操作
1、 负载均衡器lvs_1
(1) 安装ipvsadm。方法如前文所叙。
(2) 安装keepalived。方法如前文所叙。
(3) 新增配置文件 /etc/keepalived/keepalived.conf。为了跟第二个lvs负载均衡器做比较,我在后面把2个配置文件放在一个表格里(表3),方便查看。
2、 负载均衡器lvs_2
(1)安装ipvsadm。方法如前文所叙。
(2)安装keepalived。方法如前文所叙。
(3)新增配置文件 /etc/keepalived/keepalived.conf。
三、多vrrp_instance负载均衡集群功能测试
在进行测试之前,需要把lvs客户端、负载均衡器(keepalived)、各真实服务器上的服务都启动,并逐个检验其正确性,具体的检查方法可参照本章前面的内容,不再赘述。
● 健康检查功能(故障隔离)测试
多vrrp_instance健康检查功能(故障隔离)测试的方法与单vrrp_instance相同。因多vrrp_instance所涉及的服务较多(本案3个),因此需要多花些时间逐个测试。如果多vrrp_instance涉及的服务很多,则可采用随机抽样的方式进行测试,通过观察lvs负载均衡器的转发状态(ipvsadm)及lvs负载均衡器的系统日志了解健康检查测试的有效性。
● 负载均衡器失败切换
本案的多vrrp_instance负载均衡环境正常运行后,每个lvs负载均衡器都有MASTER和BACKUP两种状态,每一个lvs负载均衡器都承担转发任务。当我们在每个lvs负载均衡器上执行ipvsadm时,其输出结果正好交错的,即lvs-1上如果有非0输出时,则lvs_2相对应的项为0;反之亦然。表4为某运行环境lvs负载均衡器的输出截取对比。
现在,我们来停掉lvs_1的keepalived进程,观察lvs_2的系统日志,将会发现vrrp_instance(VI_WEB)从BACKUP状态变成MASTER.于是lvs_2负载均衡器有了两个 MASTER状态;另外lvs_2的ipvsadm的输出字段 "ActiveConn "的值将全部变成非零。同样,当我们启动lvs_1的keepalived进程、关闭lvs_2的keepalived进程,则lvs_1的状态都是MASTER,所有的转发请求都被转移到lvs_1。
在上述lvs_1和lvs_2手动切换过程中,我们可以通过在客户端浏览器地址栏输入站点名(dns解析域名到lvs的vip),来验证lvs的可用性。自定义服务可以通过在客户端执行 telnet 61.135.93.100 3000 及 telnet 61.135.93.100 4000 来初步验证。
相关信息: