Nginx+Keepalived高可用集群
一、Keepalived简介
1) Keepalived软件主要是实现网站、数据库、业务系统高可用性、自动切换的,主要是基于类似交换机制OSI七层模型:3(网络层)、4(传输层)、7层(应用层)来实现健康检查的,当监测到其中一台服务器宕机或者异常,能够切换到另外一台。
2) Keepalived软件程序主要的功能有两个:
- 健康检测
基于类似交换机制OSI七层模型:3(网络层:IP)、4(传输层:IP+PORT)、7层(应用层:FTP、HTTP APP)来实现健康检查;
- VRRP漂移
基于VRRP(虚拟路由冗余协议)路由协议来实现两台主机之间高可用,其中包括:MASTER和BACKUP,当MASTER宕机,能够自动化切换至BACKUP,从而让用户持续的访问;
二、Nginx+Keepalived高可用集群
背景:keepalived高可用仅仅是针对N台机器实现的高可用,与我们发布的服务无关,也就是说当你的nginx服务挂了,keepalived并不会去漂移,而是当keepalived这个软件宕机或者服务异常时,它才会去实现高可用VIP漂移;那么如何让它与nginx服务关联呢?
- 使用SHELL编程脚本+keepalived实现Nginx高可用关联
一般在企业中,通常会让keepalived自动去读取shell脚本,实现故障自动切换。操作步骤如下:
编写shell脚本,在keepalived主配置中定义检测nginx模块,定义好后在VIP模块内调用函数即可。
Keepalived主配置如下:
global_defs { notification_email { support@163.com support@163.com } notification_email_from wgkgood@163.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } # 监控Nginx进程 vrrp_script chk_nginx { script "/data/sh/auto_check_nginx_status.sh" interval 2 weight 2 } # VIP1 vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 151 priority 100 advert_int 5 nopreempt authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.2.188 } # 调用chk_nginx模块 track_script { chk_nginx } }

shell脚本如下:
#!/bin/bash #2020年8月10日16:40:13 #from mr.pan #auto check nginx web status ############################### CHECK_NGINX=$(ps -ef |grep nginx |grep -v auto_check_nginx_status |grep -aivc grep) if [ $CHECK_NGINX -eq 0 ];then systemctl stop keepalived fi

上述配置完成后,启动nginx服务,重启keepalived服务。
/usr/local/nginx/sbin/nginx
systemctl restart keepalived
#可通过日志查看Keepalived详情
tail -fn 30 /var/log/messages

至此已经可以实现nginx+keepalived高可用了。

浙公网安备 33010602011771号