heshao2005 发表于 2018-12-30 06:57:30

DR+keepalived实现web群集的负载均衡和高可用性

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



页: [1]
查看完整版本: DR+keepalived实现web群集的负载均衡和高可用性