keepalived详解(三)——keepalived与Nginx配合实战
今天继续给大家介绍Linux运维相关知识,本文主要内容是keepalived与Nginx服务实战。
一、实战目的与环境
今天,我们使用keepalived实现两台Nginx服务器之间的高可用主备架构,实现对Nginx服务器的主备备份,系统架构如下:
Nginx设备1:192.168.136.14
Nginx设备2:192.168.136.15
keepalived虚拟IP:192.168.136.20
二、实战配置
首先,在两台设备上分别安装Nginx和keepalived服务,keepalived和Nginx服务既可以采用源码的方式进行安装,也可以采用YUM的方式进行安装。在keepalived和Nginx安装完之后,修改keepalived配置文件,如下所示:
global_defs {
notification_email {
pzz@pzz.com
}
notification_email_from
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id 192.168.136.14
}
vrrp_script check_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance NGINX {
state MASTER
interface ens32
virtual_router_id 1
priority 100
advert_int 5
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.136.20
}
track_script {
check_nginx
}
}
另一台设备上的keepalived配置文件如下所示:
global_defs {
notification_email {
pzz@pzz.com
}
notification_email_from
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id 192.168.136.15
}
vrrp_script check_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance NGINX {
state BACKUP
interface ens32
virtual_router_id 1
priority 80
advert_int 5
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.136.20
}
track_script {
check_nginx
}
}
在备用设备上,基本上与主用设备配置相同,存在差异的地方在于priority被改为80,router_id被改为备用设备自身的IP地址,state被改为BACKUP。
然后,我们需要编写keepalived配置文件中的Nginx服务检测脚本,根据keepalived配置,脚本文件为:/etc/keepalived/nginx_check.sh内容为:
#!/bin/bash
# 2022-02-20
# by pzz
# used to realise the keepalived detection to nginx
NUM=`ps -ef| grep nginx | grep -v "grep"| grep -v "check"|wc -l`
echo $NUM
if [ $NUM -ne 2 ];then
systemctl stop keepalived
fi
该脚本两个设备完全相同。
三、效果检验
最后,我们来验证一下我们的keepalived和Nginx配置结果。当两台设备的keepalived和Nginx服务全部开启后,可以看到在主用设备上的IP地址,如下所示:
由于keepalived自身没有专门的日志,因此查看启动情况需要查看/var/log/messages文件,主用设备上该文件如下所示:
备用设备上该文件如下所示:
突然终端主用设备上的Nginx服务,期间在主机浏览器上尝试ping该架构的虚拟IP地址,如下所示:
此外,尝试访问该虚拟IP地址的Nginx服务,发现发生变动,如下所示:
主用Nginx停机前:
主用Nhinx停机后:
综上,可以看出,当主用设备的Nginx服务关闭后,备用设备能够检测到主用设备上的Nginx服务宕机,并且立即切换备用设备,使得Nginx服务提供正常,keepalived+Nginx服务配置成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
相关文章
- Nginx+Lua系列:常用Lua开发库-redis、mysql、http客户端
- <转载> nginx服务器安装及配置文件详解 https://segmentfault.com/a/1190000002797601
- Nginx配置文件nginx.conf中文详解
- Nginx进程模型
- Nginx服务器的安装和卸载
- Nginx配置文件(nginx.conf)配置详解
- Nginx的Rewrite正则表达式,匹配非某单词
- nginx服务器安装及配置文件详解
- Nginx安装详解
- LNMP详解(十五)——Nginx日志分析实战
- LNMP详解(十三)——Nginx子页面详解
- LNMP详解(十二)——Nginx URL重写实战
- LNMP详解(十)——Nginx负载分担实战
- LNMP详解(七)——Nginx反向代理配置实战
- LNMP详解(一)——Nginx详解
- ELK详解(十八)——Nginx代理Kibana实战
- ELK详解(十三)——Logstash收集Nginx日志实战
- Nginx 编译添加模块详解
- Nginx 搭建反向代理服务器过程详解
- Ubuntu16.04下KeepAlived+Nginx 布署
- 详解Nginx中HTTP的keepalive相关配置
- Nginx突破高并发的性能优化 - 运维笔记
- Nginx详解(正向代理、反向代理、负载均衡原理)
- 学习大牛笔记nginx + gunicorn + supervisor
- nginx 之 proxy_pass详解
- Nginx---反向代理,SSL支持
- 【Nginx】配置详解
- Nginx的反向代理与负载均衡
- 使用filebeat简单收集多个nginx应用服务器日志(一)
- nginx使用OpenSSL自签证书支持https
- CentOS 6.8 编译安装 Nginx 和 echo-nginx-module 模块