首页 > 系统相关 >Keepalived-Nginx实现高可用

Keepalived-Nginx实现高可用

时间:2024-12-14 15:33:31浏览次数:5  
标签:脚本 优先级 可用 Keepalived Nginx vrrp MASTER nginx BACKUP

master机器配置文件:
======================================================================
! Configuration File for keepalived

# 全局配置
global_defs {
# 路由ID,不能重复,通常为 hostname
router_id master
}

# keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
# 如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。
# 如果脚本执行结果非0,并且weight配置的值小于 0,则优先级相应的减少。
# 其他情况,维持原本配置的优先级,即配置文件中priority对应的值。
vrrp_script chk_nginx {
# 检测 nginx 状态的脚本路径
script "/etc/keepalived/nginx_check.sh"
# #每2秒运行一次上面的脚本
interval 2
# 失败一次,将自己的优先级-20,如果MASTER的priority=100,BACKUP的priority=70
# 那么MASTER要失败2次后变为60,低于BACKUP的70,MASTER节点会降级为BACKUP,而BACKUP节点升级为MASTER
weight -20
}

# 定义实例
vrrp_instance VI_1 {
# 可选值为 MASTER 或者 BACKUP
state MASTER
# 网卡名称,与本机 IP 地址所在的网卡名称相同
interface enp0s8
# 虚拟路由的ID,MASTER和BACKUP必须是一致的。
virtual_router_id 71
# 定义优先级,数字越大,优先级越高,MASTER的优先级必须大于BACKUP的优先级
priority 100
# 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔,单位为秒
advert_int 1
# 设置验证类型和密码,两个节点必须一致
authentication {
# 认证方式,此处PASS表示为密码
auth_type PASS
# 生产环境设置6位随机密码
auth_pass 123456
}

# 设置虚拟IP地址
virtual_ipaddress {
192.168.56.250
}

# 执行脚本
track_script {
# 对应vrrp_script配置的脚本
chk_nginx
}
}

 

backup机器配置文件:
======================================================================
! Configuration File for keepalived

global_defs {
# 路由ID,不能重复,通常为 hostname
router_id backup
}

vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}

# 定义实例
vrrp_instance VI_1 {
# 可选值为 MASTER 或者 BACKUP
state BACKUP
interface enp0s8
virtual_router_id 71
# 定义优先级,数字越大,优先级越高,MASTER的优先级必须大于BACKUP的优先级
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}

# 设置虚拟IP地址
virtual_ipaddress {
192.168.56.250
}

track_script {
chk_nginx
}
}

sh脚本内容:
======================================================================
#!/bin/bash
# keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
# 如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。
# 如果脚本执行结果非0,并且weight配置的值小于 0,则优先级相应的减少。
# 其他情况,维持原本配置的优先级,即配置文件中priority对应的值。
result=`pidof nginx`
if [ ! -z "${result}" ];
then
exit 0
else
exit 1
fi


参考:https://blog.csdn.net/u014644574/article/details/132345116

 

命令参考:
======================================================================
ip a
查看所有ip,包含虚拟ip

ip addr
只看到已夺取的ip

 

[遇到错误]虚拟 ip 没有生成。
======================================================================
(1)、两条主机的时间不同,将两台主机时间改为一致即可。
(2)、virtual_router_id 设置问题(同局域网别的集群占用)。

参考:
http://clovemfong.blog.51cto.com/3297559/1201791/
http://www.2cto.com/Article/201204/126118.html


2、定义的 vrrp_script 脚本未执行
原因及解决方法:
采用 service 或 systemctl 命令启动任务时,会出现这个问题。只要改为 keepalived -f keepalived.conf 启动服务即可。
需要给脚本增加执行权限

标签:脚本,优先级,可用,Keepalived,Nginx,vrrp,MASTER,nginx,BACKUP
From: https://www.cnblogs.com/xuxiaobo/p/18606793

相关文章

  • docker搭建nginx-php环境
    首先,创建一个Dockerfile文件,内容如下:FROMphp:7.4-fpmRUNsed-i's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g'/etc/apt/sources.listRUNsed-i's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g'/etc/apt/sources.list#安装NginxRUNapt-ge......
  • nginx reload时对http keepalive连接的处理
    现象nginx在reload时,会对httpkeepalive的连接进行close操作。抓包可以看见client收到了一个fin报文。 nginx的worker也不会长时间留着shutdown状态,而是立刻退出。 4层的tcp监听上的连接,会使worker一直保留在shutdown状态。直到连接断开后,进程退出。代码分析一见函数......
  • nginx-docker.yml
    version:'3'services:nginx:image:nginx:latestcontainer_name:nginx1restart:alwaysports:-"80:80"-"7080:7080"-"1180:1180"volumes:-/usr/local/nginx/html:/usr/share/ng......
  • 卓越效能,极简运维,阿里云 Serverless高可用架构
    方案概览业务的持续稳定可服务,决定着企业对客户的服务质量,是企业发展的基础。应用部署的高可用架构和弹性能力对于业务的稳定与发展起着至关重要的作用,但企业同时需要考虑资源维护成本和费用成本。本方案采用云上的Serverless架构,原生支持弹性伸缩、按量付费和服务托管,减少企业手......
  • 中高级运维工程师运维面试题(二)之NGINX
    这里写目录标题前言基础知识1.什么是NGINX?2.NGINX的基本架构是怎样的?3.如何配置NGINX以支持HTTPS?高级配置4.如何配置NGINX的负载均衡?5.如何实现URL重写和重定向?6.如何配置NGINX的缓存?性能优化7.如何优化NGINX的并发性能?安全性8.如何保护NGINX......
  • 结合 Docker,快速掌握 Nginx 2 大核心用法
    Nginx是流行的服务器,一般用它对静态资源做托管、对动态资源做反向代理。Docker是流行的容器技术,里面可以跑任何服务。那Docker+Nginx如何结合使用呢?我们来试一下:首先要下载Docker,直接安装DockerDesktop就行:它是用来管理容器和镜像的:安装它之后,docker命令也就可......
  • ServiceMesh 5:异常重试和超时保护提升服务可用性
    ★ServiceMesh系列1背景在复杂的互联网场景中,不可避免的会出现请求失败或者超时的情况。从程序的的响应结果来看,一般是Response返回5xx状态的错误;从用户的角度去看,一般是请求结果不符合预期,即操作失败(如转账失败、下单失败、信息获取不到等)。偶发的不可避免的5xx请求错误,产......
  • 负载均衡,高可用,监控服务搭建总结
    LVS-NAT 1.装ipvsadm包 2.配置内核参数开启路由转发功能:/etc/sysctl.conf 3.搭建lvs-nat负载均衡服务(添加虚拟服务器和真实服务器)LVS-DR 1.装ipvsadm和network-scripts包 2.调整内核参数设置arp_ignore和arp_annunce 3.配置虚拟网卡,实现共享ip:/etc/s......
  • nginx设置接口超时不生效问题
    nginx设置接口超时不生效问题只需在http,server,location,这三个任意一处地方设置proxy_read_timeout600s;即可参数值单位有s-秒,m-分钟,h-小时,不写单位默认为秒若不生效,可能是用restart命令重启nginx,配置文件未生效,此时可以先将nginx停止,再重新启动即可此时如果还不行,就不是ng......
  • Nginx location proxy_pass 后面的url 加与不加/的区别
    这里我们分4种情况讨论这里我们请求的网站为:192.168.1.123:80/static/a.html整个配置文件是server{port80,servername192.168.1.123location/static{proxy_pass192.168.2.321:81}location/static{proxy_pass192.1......