我们搭建好的Lvs-DR群集是有一台lvs调度器的,生产环境中如果调度器出现故障,整个群集将瘫痪。通过keepalived做lvs调度器的双机热备就可以很好的解决这个问题。keepalived采用VRRP虚拟路由冗余协议,以软件的方式实现Linux服务器的多机热备功能。
案列拓扑:本次lvs+keepalived群集搭建需要两台nginx做的网站服务器和两台LVS负载均衡调度器。如下图
DR+keepalived实现web群集的负载均衡和高可用性
DR+keepalived实现web群集的负载均衡和高可用性
IP地址规划:两台nginx分别使用172.16.16.177和172.16.16.178;两台调度器分别使用172.16.16.21和172.16.16.22作为地址。
操作步骤:1、部署nginx作为群集的web服务器
1)nginx的安装部署可参考以下文http://blog.51cto.com/13434336/
2102925
2)为nginx配置VIP,此地址用作发送web响应数据包的源地址,不需要监听客户机的访问请求,所以可以配置lo:0上,并需要为本机添加一条路由记录,将访问VIP的数据限制在本地,避免通信紊乱。
DR+keepalived实现web群集的负载均衡和高可用性
DR+keepalived实现web群集的负载均衡和高可用性
3)调整/proc响应参数vim /etc/sysctl.conf,添加6行。然后执行sysctl -p更新
DR+keepalived实现web群集的负载均衡和高可用性
4)为做区分我将第二台nginx服务器的网页做了修改
DR+keepalived实现web群集的负载均衡和高可用性
(两台nginx上的配置除了网页和IP地址其余完全相同)
2、调度器配置。
1)首先为调度器的eth0网卡再配置一个地址172.16.16.172作为vip(群集地址)vim /etc/sysconfig/network-scripts/ifcfg-eth0:0(该地址用于响应群集访问,用于通信,所以配置在真实的网卡eth0上。
DR+keepalived实现web群集的负载均衡和高可用性
2)调整/proc响应参数
因为lvs负载调度器和各节点需要共用vip地址,应该关闭linux内核重定向参数响应,打开vi /etc/sysctl.conf,增加三行。执行sysctl -p更新。
DR+keepalived实现web群集的负载均衡和高可用性
3)挂载系统盘安装ipvsadm群集调度工具
DR+keepalived实现web群集的负载均衡和高可用性
4)配置负载分配策略
DR+keepalived实现web群集的负载均衡和高可用性
3、在调度器上配置keepalived。
1)安装keepalived支持软件包
DR+keepalived实现web群集的负载均衡和高可用性
2)编译安装keepalived
DR+keepalived实现web群集的负载均衡和高可用性
3)chkconfig命令设置keepalived开机自启动
DR+keepalived实现web群集的负载均衡和高可用性
4)配置keepalived。vim /etc/keepalived/keepalived.conf
DR+keepalived实现web群集的负载均衡和高可用性
DR+keepalived实现web群集的负载均衡和高可用性
DR+keepalived实现web群集的负载均衡和高可用性
修改完配置重启keepalived服务。
5)从调度器配置
router-id LVS2
state BACKUP
priority 99
其余配置项相同即可,修改完配置重启keepalived服务。
3、验证群集
1)登陆172.16.16.172
DR+keepalived实现web群集的负载均衡和高可用性
换一台电脑登陆
DR+keepalived实现web群集的负载均衡和高可用性
这就成功验证了轮询调度算法(RR)的负载均衡
2)验证lvs群集。断掉第一台nginx的网卡,然后登陆172.16.16.172。
DR+keepalived实现web群集的负载均衡和高可用性
发现仍然可以登陆,不过出现的是第二台nginx的网页。
3)在优先级为100的主调度器上通过ip addr show dev eth0查看keepalived的漂移地址。
DR+keepalived实现web群集的负载均衡和高可用性
断掉该调度器的网卡,再次查看。
DR+keepalived实现web群集的负载均衡和高可用性
查看另一台调度器
DR+keepalived实现web群集的负载均衡和高可用性
地址已经漂移到从调度器上了。再次登陆172.16.16.172。
DR+keepalived实现web群集的负载均衡和高可用性
发现依然可以登陆网站。
总结:本案例中,使用Lvs-DR搭建了负载均衡的web群集;为避免负载均衡调度器故障引发的群集瘫痪,采用keepalived实现了调度器的双机热备,成功的实现了该web群集的高可用性和高并发处理性(搭建Lvs-DR可以使用多台nginx服务器)。
文档只做实验环境中使用。