Haproxy是一个高性能的TCP/HTTP复杂均衡服务器软件,速度快,可靠性高。可以轻松支持几十万的并发连接,而且支持Session。这也是OpenStack的高可用搭建比较推荐的配置组合。
上一篇我们已经将基于haproxy+keepalived的iserver负载均衡和高可用搭建完毕,这一篇我们就进行一下故障模拟
1、刷新http://10.0.0.200:8090/iserver/manager/services 我们可以看到会来回切换不同的iserver机器,这是实现了负载均衡的功能。
因为我们的负载均衡方式为roundrobin,也就是让所有的节点轮流上场,当然,也有source,该方式主要是当集群的节点数量不变,来自某个Ip的用户,会始终被Haproxy分配到固定的一个节点上,这也就解决了session问题。
更多blance调度方式参考:
故障模拟
1、当两个负载均衡节点的keepalived服务都正常,我们可以通过外部ping命令来获得正确的输出结果。
C:\Users\Administrator>ping 10.0.0.200 -t 正在 Ping 10.0.0.200 具有 32 字节的数据: 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64
2、当我们讲VIP1的keepalived服务停止掉
我们可以看到,该机器的eth0的虚拟IP已经没有了
root@vip1:~# service keepalived stop
* Stopping keepalived keepalived [ OK ]
root@vip1:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:d6:af:8c brd ff:ff:ff:ff:ff:ff
inet 10.0.0.10/24 brd 10.0.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fed6:af8c/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:0c:29:d6:af:96 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:0c:29:d6:af:a0 brd ff:ff:ff:ff:ff:ff
查看ping输出信息
我们可以看到,不到1s中,就能重新ping通,系统已经连接的VIP2的备用节点。
C:\Users\Administrator>ping 10.0.0.200 -t 正在 Ping 10.0.0.200 具有 32 字节的数据: 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64 请求超时。 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64 来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64
查看VIP2的网络信息
我们看到,虚拟IP已经飘到VIP2机器上了。
root@vip2:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:cc:37:03 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.9/24 brd 10.0.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.0.0.200/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fecc:3703/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:0c:29:cc:37:0d brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:0c:29:cc:37:17 brd ff:ff:ff:ff:ff:ff