今天继续给大家介绍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
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
另一台设备上的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
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
在备用设备上,基本上与主用设备配置相同,存在差异的地方在于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
1
2
3
4
5
6
7
8
9
该脚本两个设备完全相同。
三、效果检验
最后,我们来验证一下我们的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
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_40228200/article/details/123024276