Keepalived+Nginx搭建主从高可用并带nginx检测
2021/6/6 7:20:53
本文主要是介绍Keepalived+Nginx搭建主从高可用并带nginx检测,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Keepalived+Nginx搭建主从高可用并带nginx检测
应用环境:部分时候,WEB访问量一般,或者测试使用,利用Keepalived给Nginx做高可用即可满足要求。
测试环境:
搭建步骤:
1. 安装软件
在Nginx-A和Nginx-B上:
~]# yum install keepalived nmap -y //nmap提供nmap命令,后面的Nginx检测脚本里会用到
2. 配置Nginx-A
[root@nginx-a ~]# vim /etc/keepalived/keepalived.conf //配置好的内容如下
! Configuration File for keepalived global_defs { router_id Nginx-A } vrrp_script chk_nginx { ## chk_nginx名字可以自定义,与下面的track_script段中的名字要一致 script "/opt/chk_nginx.sh" ## chk_nginx.sh的内容下面给出 interval 2 weight 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 138.138.82.222 } track_script { chk_nginx } }
保存,退出;
[root@nginx-a ~]# vim /opt/chk_nginx.sh //新建Nginx检测脚本,内容如下
[root@nginx-a ~]# chmod +x /opt/chk_nginx.sh //给脚本添加执行权限
#!/bin/sh # check nginx server status NGINX=/usr/sbin/nginx PORT=80 nmap localhost -p $PORT | grep "$PORT/tcp open" #echo $? if [ $? -ne 0 ];then $NGINX -s stop $NGINX sleep 3 nmap localhost -p $PORT | grep "$PORT/tcp open" [ $? -ne 0 ] && /etc/init.d/keepalived stop fi
说明:该脚本的意义就是先检测Nginx是否已经开启默认的80端口:
如果存在80端口,一切正常;
如果不存在80端口,就执行if段中的语句:先关一下Nginx,在启动Nginx,等待3秒,再次检测80端口,如果还不存在,则杀死keepalived,
这样一来,访问就走另外一台安装keepalived的上WEB端。(如果两台都出问题,那只能呵呵了)
[root@nginx-a ~]# service keepalived start //启动keepalived
[root@nginx-a ~]# chkconfig keepalived on //加入开机启动
3. 配置Nginx-B
[root@nginx-b ~]# vim /etc/keepalived/keepalived.conf //配置好的内容如下
! Configuration File for keepalived global_defs { router_id Nginx-B } vrrp_script chk_nginx { ## 同Nginx-A script "/opt/chk_nginx.sh" interval 2 weight 2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 80 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 138.138.82.222 } track_script { chk_nginx } }
保存,退出;
[root@nginx-b ~]# vim /opt/chk_nginx.sh // 脚本内容同Nginx-A ,见上面
[root@nginx-b ~]# chmod +x /opt/chk_nginx.sh //给脚本添加执行权限
[root@nginx-b ~]# service keepalived start //启动keepalived
[root@nginx-b ~]# chkconfig keepalived on //加入开机启动
4. 测试
找一台客户端执行命令:
~]# while true; do curl 138.138.82.222 ;sleep 1;done
测试成功,达到了两台nginx高可用,并能够健康检测nginx(这里实际检测80端口,实际意义可作一样)。
结束.
附上另一种检测脚本:
#!/bin/bash if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ] then /usr/local/nginx/sbin/nginx sleep 5 if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ] then killall keepalived fi fi
这篇关于Keepalived+Nginx搭建主从高可用并带nginx检测的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-03-29fail2ban nginx
- 2024-03-18install nginx proxy manager
- 2024-01-2444从零开始用Rust编写nginx,命令行参数的设计与解析及说明
- 2024-01-22比Nginx更好用的Gateway!
- 2024-01-17nginx daemon off
- 2023-12-30Nginx Vhost Traffic Status 是什么意思-icode9专业技术文章分享
- 2023-12-26使用nginx搭建creates.io镜像(稀疏索引)
- 2023-11-18centos7编译安装Nginx教程。
- 2023-11-02nginx启动命令和停止命令
- 2023-10-25Centos7系统Nginx负载均衡如何安装和配置?