Keepalive 解决nginx 的高可用问题

简介: Keepalive 解决nginx 的高可用问题

一   说明

keepalived利用 VRRP Script 技术,可以调用外部的辅助脚本进行资源监控,并根据监控的结果实现优先动态调整,从而实现其它应用的高可用性功能

参考配置文件:

/usr/share/doc/keepalived/keepalived.conf.vrrp.localcheck

二    VRRP Script 配置

分两步实现

(一) 定义脚本

1,模块介绍

vrrp_script:自定义资源监控脚本,vrrp实例根据脚本返回值,公共定义,可被多个实例调用,定义在vrrp实例之外的独立配置块,一般放在global_defs设置块之后。通常此脚本用于监控指定应用的状态。一旦发现应用的状态异常,则触发对MASTER节点的权重减至低于SLAVE节点,从而实现 VIP 切换到 SLAVE 节点

2, 模块语法

vrrp_script <SCRIPT_NAME> {
 script <STRING>|<QUOTED-STRING>   #此脚本返回值为非0时,会触发下面OPTIONS执行
 OPTIONS 
}

(二)调用脚本

track_script:调用vrrp_script定义的脚本去监控资源,定义在VRRP实例之内,调用事先定义的vrrp_script

track_script {
 SCRIPT_NAME_1
 SCRIPT_NAME_2
}

三   定义 VRRP script

vrrp_script <SCRIPT_NAME> {         #定义一个检测脚本,在global_defs 之外配置
     script <STRING>|<QUOTED-STRING>    #shell命令或脚本路径(注意执行权限)
     interval <INTEGER>           #间隔时间,单位为秒,默认1秒
     timeout <INTEGER>            #超时时间
     weight  <INTEGER:-254..254>      #默认为0,如果设置此值为负数,当上面脚本返回值为非0时,会将此值与本节点权重相加可以降低本节点权重,即表示fall. 如果是正数,当脚本返回值为0,会将此值与本节点权重相加可以提高本节点权重,即表示 rise.通常使用负值
     fall <INTEGER>                 #执行脚本连续几次都失败,则转换为失败,建议设为2以上
     rise <INTEGER>                 #执行脚本连续几次都成功,把服务器从失败标记为成功
     user USERNAME [GROUPNAME]        #执行监测脚本的用户或组      
     init_fail                    #设置默认标记为失败状态,监测成功之后再转换为成功状态
}

四   实验

(一)架构图

(二) 步骤

66  代理服务器

1, 安装 epel源     再安装nginx

2, 停用 ipvsadm 软件  用nginx 做反向代理负载均衡

3, 修改nginx 配置文件

4,把配置文件传给  77 nginx 代理服务器

5,写脚本

脚本意思是给nginx 发信号  有nginx 就  echo$?  返回0  没有返回1

6,  给脚本加执行权限

7, 写keepalive  的配置文件

8  重启 keepalive

9  将keepalive 配置文件  拷贝给 77 代理服务器

77   代理服务器

关闭 ipvsadm

开启nginx

重启 keepalive

结果

目前正常访问

虚拟ip 飘在主   服务器上

当我们 手动关闭 主   服务器

客户机访问依旧不受影响

我们再去看   备  服务器   虚拟ip 在备上面

说明实验成功  

相关文章
|
1月前
|
负载均衡 应用服务中间件 Linux
高可用系列文章之三 - NGINX 高可用实施方案
高可用系列文章之三 - NGINX 高可用实施方案
|
7月前
|
消息中间件 缓存 应用服务中间件
Nginx系列教程(02) - 高可用与高并发介绍
Nginx系列教程(02) - 高可用与高并发介绍
76 0
|
8月前
|
应用服务中间件 nginx
服务搭建篇(四) 搭建基于Nginx + keepalived的高可用服务
比如我这里虚拟IP+nginx端口是 : 192.168.154.10:80 , 我直接访问 , 出来的是192.168.154.134服务器上的nginx , 因为我刚刚做了区分 , 所以这个时候就可以知道访问的是哪个机器的Nginx , 然后我们把134的Nginx停掉 , 然后再次访问 , 仍然可以使用 , 此时 ,出现的135的页面 , 也就是访问的是192.168.154.135的Nginx
112 0
|
1天前
|
负载均衡 应用服务中间件 开发工具
技术笔记:nginx和keeplive实现负载均衡高可用
技术笔记:nginx和keeplive实现负载均衡高可用
|
1月前
|
存储 运维 负载均衡
Heartbeat+Nginx实现高可用集群
通过Heartbeat与Nginx的结合,您可以建立一个高可用性的负载均衡集群,确保在服务器故障时仍能提供无中断的服务。这种配置需要仔细的计划和测试,以确保系统在故障情况下能够正确运行。
32 2
|
1月前
|
Kubernetes 搜索推荐 应用服务中间件
通过keepalived+nginx实现 k8s apiserver节点高可用
通过keepalived+nginx实现 k8s apiserver节点高可用
98 16
|
1月前
|
负载均衡 前端开发 应用服务中间件
NGINX高可用之keepalived+nginx主从模式+主主模式配置实践
NGINX高可用之keepalived+nginx主从模式+主主模式配置实践
242 1
|
7月前
|
应用服务中间件 Shell nginx
Nginx + keepalived 实现高可用 + 防盗链 + 动静分离(二)
Nginx + keepalived 实现高可用 + 防盗链 + 动静分离
|
7月前
|
负载均衡 NoSQL 应用服务中间件
Nginx + keepalived 实现高可用 + 防盗链 + 动静分离(一)
Nginx + keepalived 实现高可用 + 防盗链 + 动静分离
|
7月前
|
Kubernetes 应用服务中间件 Linux
suse 12 编译部署Keepalived + nginx 为 kube-apiserver 提供高可用
suse 12 编译部署Keepalived + nginx 为 kube-apiserver 提供高可用
71 0