前面我们已经介绍了这个方案的设备安装连接,以及负载均衡器的配置问题。下面,在配置好的负载均衡器以及服务器上面进行一下测试,那么具体的代码相关内容都进行了总结。
多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;反之亦然。表1为某运行环境lvs负载均衡器的输出截取对比。
Lvs_1 的ipvsadm输出(部分) |
Lvs_2 的ipvsadm输出(部分) |
IP Virtual Server version Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 61.128.10.4:9000 wlc persistent 50 -> 61.128.10.16:9000 Route 200 4607 139 -> 61.128.10.17:9000 Route 200 4611 154 -> 61.128.10.5:9000 Route 100 2306 65 -> 61.128.10.8:9000 Route 100 2307 89 ……………………………… TCP 61.128.20.124:http wlc persistent 30 -> 61.128.20.98:http Route 100 0 0 -> 61.128.20.93:http Route 100 0 0 -> 61.128.20.81:http Route 100 0 0 -> 61.128.20.82:http Route 100 0 0 |
IP Virtual Server version Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 61.128.10.4:9000 wlc persistent 50 -> 61.128.10.16:9000 Route 100 0 0 -> 61.128.10.17:9000 Route 100 0 0 -> 61.128.10.5:9000 Route 100 0 0 -> 61.128.10.8:9000 Route 100 0 0 …………………………… TCP 61.128.20.124:http wlc persistent 20 -> 61.128.20.98:http Route 100 821 1437 -> 61.128.20.93:http Route 100 823 1562 -> 61.128.20.82:http Route 100 823 1336 -> 61.128.20.81:http Route 100 825 1033 |
表1多vrrp_instance负载均衡器转发输出对比(注意观察ActiveConnInActConn的值)
现在,我们来停掉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的可用性。自定义服务可以通过在客户端执行telnet61.135.93.1003000及telnet61.135.93.1004000来初步验证。