keepalived+nginx主从切换

本文介绍了如何利用keepalived和nginx搭建高可用系统,当nginx宕机时,系统能自动进行主从切换,确保服务不间断。详细配置包括nginx安装、keepalived的安装与配置,以及故障检测和恢复的脚本设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、整体架构
目的:使用keepalived+nginx实现niginx高可用,宕机自动重启
在这里插入图片描述
二、环境信息
主nginx 10.20.90.128
从nginx 10.20.90.129
虚IP 10.20.90.132
三、安装nginx
nginx的下载安装 可参考https://www.cnblogs.com/taiyonghai/p/6728707.html
注:要远程访问时,需要将nginx对应的端口开发

四、在安装nginx的每台机器上安装keepalived(以下涉及的命令直接复制使用即可)
<1>下载keepalived安装包 http://www.keepalived.org/download.html
<2> 将下载好的keepalived安装包 放到linux /usr/local目录下
<3> 解压上传的包:tar -zxvf keepalived的tar包
在这里插入图片描述
<4> 配置安装位置,在这步之前需要安装 openssl 和 openssl-devel yum分别安装
yum install openssl 和 yum install openssl-devel
<5> cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived
安装成功显示
在这里插入图片描述
<6> make&& make install
<7>为了方便统一管理,将解压编译好的keepalived 配置文件进行地方修改
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
<8>设置开机启动keepalived
chkconfig keepalived on
<9> 启动 service keepalived start
停止 service keepalived stop
重启 service keepalived restart

五、nginx脚本,新建nginx_check.sh脚本放到/etc/keepalived下
脚本内容:
#!/bin/bash
A=ps -C nginx –no-header |wc -l
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ ps -C nginx --no-header |wc -l -eq 0 ];then
killall keepalived
fi
fi
注:脚步放到linux服务器后执行检验一下,如果报错:
-bash: ./nginx_check.sh: /bin/bash^M: bad interpreter: No such file or directory
说明脚本文件格式有误,需将dos改位unix,具体操作:
<1>在linux系统上查看nginx_check.sh的格式
vi nginx_check.sh
<2>在vi的命令行,输入
:set ff
会输出 该文件的文件格式 ,例如:fileformat=dos
<3>如果要将其格式转换成 unix,可以输入命令
:set ff=unix
<4>然后输入命令保存退出,这个时候文件格式已经转换成了 unix
:wq

六、修改keepalived的conf文件
<1> Nginx主机修改/etc/keedalived/keedalived.conf文件
! Configuration File for keepalived
vrrp_script chk_nginx {
script “/etc/keepalived/nginx_check.sh” #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
interval 2 #检测时间间隔
weight 20 #如果条件成立的话,则权重 20
}
vrrp_instance VI_1 {
state MASTER #表示主机
interface ens33
virtual_router_id 80
priority 100 #优先级大于从机
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}

将 track_script 块加入 instance 配置块

track_script {
    chk_nginx #执行 Nginx 监控的服务
}
virtual_ipaddress {
	10.20.60.132   #虚ip
}

}
<2> Nginx从机修改/etc/keedalived/keedalived.conf文件
! Configuration File for keepalived
vrrp_script chk_nginx {
script “/etc/keepalived/nginx_check.sh” #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
interval 2 #检测时间间隔
weight 20 #如果条件成立的话,则权重 20
}
vrrp_instance VI_1 {
state BACKUP #表示从机
interface ens33
virtual_router_id 80
priority 80 #优先级小于主机
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}

将 track_script 块加入 instance 配置块

track_script {
    chk_nginx #执行 Nginx 监控的服务
}
virtual_ipaddress {
	10.20.60.132
}

}
七、运行效果
直接访问虚ip 10.20.60.132,会到主128上,如果128宕机,会自动切到129上,128再重新启动后会自动切到128上。
在这里插入图片描述
128宕机后,访问自动切到129
在这里插入图片描述

可参考:https://www.cnblogs.com/920913cheng/p/10484786.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值