nginx单机部署时,一旦宕机就会导致整个服务的不可用,导致雪崩式效应。集群式部署是解决单点式雪崩效应的有效方案,本文将在centos环境下,结合Keepalived搭建高可用的nginx集群。,
,当客户端请求服务器时,若利用nginx作为代理,则会首先访问nginx服务器,再通过nginx服务器转发到对应的服务器上。上述架构图的原理是:nginx-01和nginx-02是两台nginx服务器,其中nginx-01作为主服务器,通过keepalived与nginx-02形成一个小集群,同时还可以与nginx-03、nginx-04…nginx-n等多台服务器构成集群。当nginx-01因为某些原因宕机而停止服务时,其它nginx服务器会选举一个进行替代,使整个服务保持正常的运行。,Keepalived是一款基于vrrp协议的高可用集群软件,通过虚拟IP(VIP)对外提供服务,能够实时监控集群中服务器的运行状态并自动进行故障隔离,这些服务器都启动着相同的服务,当主服务器发生故障时,会自动将虚拟IP漂移到备份服务器,从而实现业务高可用。,1.需要两台nginx服务器,2.需要keepalived,3.需要虚拟ip,分别在了两台虚拟机上,利用yum指令安装keepalived,指令如下:,可以利用下述指令确认是否安装成功,成功的话则会显示版本号,具体如下:,
,若非特别指定安装目录,则在centos的安装路径如下:,由于是主从配置,在主服务器中,找到keepalived.conf的文件,进行替换,该文件存储于/etc/keepalived路径下,找到后替换为如下内容:,备份服务器的keepalived.conf替换为:,文件保存为bash类型,命名为:nginx_check.sh,也可以自定义文件名称,脚本内容如下:,脚本可根据喜好来自定义文件夹存放,我这里存放于/usr/local/src/nginx_check.sh,注意一点的是,脚本存放的路径必须与keepalived.conf中配置的脚本文件路径一致。脚本路径更改,则keepalived.conf中的路径也要修改。,分别在两台服务器上执行如下指令:,查看keepalived进程是否运行,,若运行成功,则会出现以下界面:,
,在主服务器和从服务器上,分别利用nginx启动命令启动nginx服务,在nginx安装目录下执行如下指令:,1测试方案如下,(1)关闭主服务器上的nginx,在nginx安装目录下执行如下指令:,(2)访问虚拟ip,在外部浏览器输入:,若能正常弹出nginx欢迎页面,则表明集群搭建成功,主服务器nginx宕机后,从服务器会代替服务。,1.本文利用两台服务器模拟nginx集群状态,当nginx master宕机后,从服务器会代替服务;,2.模拟集群关键三要素:keepalived、监测脚本、虚拟ip;,3.在某些情况下,需要为脚本添加可执行权限,指令如下:,1.https://www.bilibili.com/video/BV1zJ411w7SV?t=85&p=1,2.https://juejin.cn/post/6844903956192182285,3.https://juejin.cn/post/6844903929738854413,4.https://juejin.cn/post/6844903585449246733,