之前讲了nginx 如何实现负载均衡以及如何实现动静分离,实现系统的分布式部署,提高系统的并发性能。但是,有个问题:如果nginx 系统挂了,整个系统就都不可用了。nginx 处于整个系统非常重要的位置,nginx的高可用影响到整个系统的稳定性。如果nginx服务器宕机,后端web服务将无法提供服务,影响严重。所以如何保证nginx 的稳定和高可用非常重要,接下来就来介绍nginx + keepalived 实现系统负载均衡高可用的方案。
一、什么是负载均衡高可用
nginx作为负载均衡器,所有请求必须经过nginx 服务器,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重。
为了避免因为负载均衡服务器的宕机从而影响整个系统的问题,需要建立一个备份机。主服务器和备份服务器上都运行监控程序,通过传送心跳信息来监控对方的运行状况。当备份服务器在一定的时间内没有收到主服务器的心跳信息时,它就自动接管主服务器的服务ip,继续提供负载均衡服务;当备份服务器又从主服务器收到心跳信息时,它就释放服务ip地址,这样的主服务器就开始再次提供负载均衡服务。
二、nginx高可用方案
目前,比较流行的实现nginx高可用方案就是:keepalived+nginx实现主备方案。
1、什么是keepalived
keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。
keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
2、keepalived工作原理
keepalived是以vrrp协议为实现基础的,vrrp全称 virtual router redundancy protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将n台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(vip = virtual ip address,虚拟ip地址,该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据vrrp的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现vrrp协议的。
3、keepalived+nginx实现主备过程
keepalived + nginx 实现主备的过程,如下图所示:
从上图可以看到,主nginx健康时,系统所有的请求通过主nginx 转发到tomcat服务器集群。当主nginx 宕机后,会立马切换到备nginx ,由备nginx 提供转发服务。这样就保证系统的正常运行。
三、环境准备
1、两天nginx服务器和两台web服务器
两台nginx,一主一备:192.168.101.3和192.168.101.4
两台tomcat服务器:192.168.101.5、192.168.101.6
2、安装keepalived
分别在主备nginx上安装keepalived,这里就讲解keepalived的安装了。
3、配置虚拟ip(vip:192.168.101.100)
四、配置nginx高可用
1、配置主nginx
修改主nginx下/etc/keepalived/keepalived.conf文件,配置主nginx。
2、配置备nginx
修改备nginx下/etc/keepalived/keepalived.conf文件,配置备nginx
配置备nginx时需要注意:需要修改state为backup , priority比master低,virtual_router_id和master的值
3、测试
1、主备nginx都启动keepalived及nginx。
service keepalived start./nginx
2、启动之后,主nginx正常工作,分别查看主nginx和 备nginx的eth0设置,vip(192.168.101.100)绑定在主nginx的eth0上。
打开浏览器,访问http://192.168.101.100,可以访问,主nginx 服务器正常,系统可用。
3、将主nginx的keepalived停止或将主nginx关机(相当于模拟宕机),再次查看主nginx和 备nginx的eth0设置,vip(192.168.101.100)已经漂移到备nginx 上。
再次访问http://192.168.101.100,发现系统依然可以访问,说明主nginx 宕机之后,自动切换到备用nginx。
最后
以上,keepalived+nginx 系统高可用的解决方案介绍完了,看上去复杂,其实配置还是比较简单的。
折叠手机可能存在的问题,折叠手机未来或难以普及
别克VELITE6动力电池系统,赋予电池系统哪些核心技术?
百度VR山城首秀,“N+VR”促行业信息化发展
印刷电路板设计的基本原则
京东方为苹果供应OLED面板,韩媒:或被用作维修的备用面板
解析keepalived+nginx实现高可用方案技术
一个优质的社区崛区块链有什么关系
电气平面图设计说明
选用压敏电阻的方法
硬件小课堂|聊聊ADC那些事
无人机可以通航啦 国内首条无人机专用空域落户沈阳
智慧交通如何加入大数据分析
区块链慈善:从技术角度解决信任危机
噪声传感器的特点、应用及工作原理
iPad Air 4首次采用电源键整合Touch ID的侧面指纹方案
Microchip推出新型电容触摸式控制器 加速汽车触摸屏EMI认证
关于EMI的常见问题介绍
大幅面扫描仪技术术语:MTM (Motorised Thic
直线电机在过山车中的应用
智能化的体验何时才能普及