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高可用了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探