nginx+keepalived实现七层负载

news2024/11/24 19:56:12

目录

一、部署nginx01、nginx02

二、keepalived配置(抢占模式、master- backup模式)

三、测试

四、非抢占模式(backup-backup模式)


nginx01 

11.0.1.31
nginx0211.0.1.32
虚拟IP(VIP)11.0.1.30

一、部署nginx01、nginx02

部署nginx:Nginx、keepalived安装详细步骤_keepalive 安装-CSDN博客

先部署一台,另一台直接克隆改ip就可以

二、keepalived配置(抢占模式、master- backup模式)

keepalived配置文件路径 /etc/keepalived/keepalived.conf

主机 11.0.1.31 

需要更改的参数:router_id、interface ens33、真实IP mcast_src_ip 、虚拟IP11.0.1.30、优先级priority(master需要比backup高)

global_defs {
   router_id nginx-01  #标识本节点的名称,通常为hostname
}

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

vrrp_instance VI_1 {
    state MASTER                  # 状态,主节点为MASTER,备份节点为BACKUP
    interface ens33              # 绑定VIP的网络接口,通过ifconfig查看自己的网络接口
    virtual_router_id 51          # 虚拟路由的ID号,两个节点设置必须一样,可选IP最后一段使用,相同的VRID为一个组,他将决定多播的MAC地址
    mcast_src_ip 11.0.1.31    # 本机IP地址    
    priority 100                  # 节点优先级,值范围0~254,MASTER要比BACKUP高
    advert_int 1                  # 组播信息发送时间间隔,两个节点必须设置一样,默认为1秒
    # 设置验证信息,两个节点必须一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP,两个节点设置必须一样。可以设置多个,一行写一个
    virtual_ipaddress {
        11.0.1.30
    }

    track_script {
       chk_nginx  # nginx存活状态检测脚本
    }
}

备机 11.0.1.32

global_defs {
   router_id nginx-02
}

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

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    mcast_src_ip 11.0.1.32
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        11.0.1.30
    }

    track_script {
       chk_nginx
    }
}

检测nginx存活脚本,如果nginx进程不存在,尝试启动,如果nginx启动失败(服务器宕机),杀死主机的keepalived程序。主机的keepalived被杀死后VIP将转移到备机11.0.1.32。

主备机都要有检测脚本

vi /etc/keepalived/nginx_check.sh
chmod +x /etc/keepalived/nginx_check.sh

注意许多教程的脚本是centos6的,需要注意“systemctl stop keepalived” 命令是否可以正常关闭keepalived进程。

#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    sleep 2
    counter=$(ps -C nginx --no-heading|wc -l)
    if [ "${counter}" = "0" ]; then
        systemctl stop keepalived
    fi
fi

 主机IP,此时VIP在主机上

备机IP

三、测试

VIP可以正常访问,主机正常

 

关闭主机nginx进程 

[root@nginx01 sbin]# ./nginx -s stop

访问正常

将主机11.0.1.31直接关机,再次测试 

VIP成功漂移到备机11.0.1.32 

查看备机IP,VIP漂移到备机上

重启主机后VIP重新漂移回到主机11.0.1.31 

不需要给nginx设置开机自启动,keepalived开机自启动即可,keepalived发现nginx没启动,会自动执行脚本启动nginx。

四、非抢占模式(backup-backup模式)

两台主机均为backup,谁先启动谁就是临时master

11.0.1.31 backup

global_defs {
   router_id nginx-01  #标识本节点的名称,通常为hostname
}

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

vrrp_instance VI_1 {
    state BACKUP                  # 状态,主节点为MASTER,备份节点为BACKUP
    interface ens33              # 绑定VIP的网络接口,通过ifconfig查看自己的网络接口
    virtual_router_id 51          # 虚拟路由的ID号,两个节点设置必须一样,可选IP最后一段使用,相同的VRID为一个组,他将决定多播的MAC地址
    mcast_src_ip 11.0.1.31    # 本机IP地址
    priority 100                  # 节点优先级,值范围0~254,MASTER要比BACKUP高
    advert_int 1                  # 组播信息发送时间间隔,两个节点必须设置一样,默认为1秒
    nopreempt
    # 设置验证信息,两个节点必须一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP,两个节点设置必须一样。可以设置多个,一行写一个
    virtual_ipaddress {
        11.0.1.30
    }

    track_script {
       chk_nginx  # nginx存活状态检测脚本
    }
}

11.0.1.32 backup

global_defs {
   router_id nginx-02
}

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

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    mcast_src_ip 11.0.1.32
    priority 90
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        11.0.1.30
    }

    track_script {
       chk_nginx
    }
}

非抢占模式backup-backup模式,在此模式下,即使重启了主机11.0.1.31,VIP仍然保留在备机11.0.1.32。

在非抢占模式下,也有优先级的高低,谁先启动谁就被选举为master,不看优先级(两台抖配配置nopreempt情况下),并且不会被抢走VIP,除非master宕机,VIP漂移到backup(注意此时backup已经升级为master,而原先的master重启后已经变为backup)。

现在将11.0.1.32关机,VIP回到11.0.1.31

重新将11.0.1.32开机,发现VIP不会回到11.0.1.32,因为11.0.1.32配置了nopreempt参数,所以“不会抢11.0.1.31的VIP”

和抢占模式的配置相比,只改了两个地方:

1> 在vrrp_instance块下两个节点各增加了nopreempt指令,表示不争抢vip

2> 节点的state都为BACKUP

两个keepalived节点都启动后,默认都是BACKUP状态,双方在发送组播信息后,keepalived会自动选举一个MASTER出来(不是根据优先级)。由于两者都配置了nopreempt,所以MASTER从故障中恢复后,不会抢占vip。这样会避免VIP切换可能造成的服务延迟。

两台服务器都启用nopreempt后,必须修改角色状态统一为BACKUP,唯一的区分就是优先级。

官方对nopreempt参数解释:高优先级VRRP实例通常会抢占低优先级VRRP实例,
"nopreempt"参数将停止优先级更高的机器在抢占vip,并允许较低优先级的机器保持为master。
注意:要使nopreempt参数起作用,初始状态不能是MASTER。

https://www.cnblogs.com/lichunyang321/p/8889326.html

非抢占模式与优先级关系:

keepalived配置非抢占模式_keepalived非抢占模式-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1350323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JDBC->SpringJDBC->Mybatis封装JDBC

一、JDBC介绍 Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们…

WPF+Halcon 培训项目实战(8-9):WPF+Halcon初次开发

文章目录 前言相关链接项目专栏运行环境匹配图片WPF Halcon组件HSmartWindowControlWPF绑定读取图片运行代码运行结果 抖动问题解决运行结果 绘制矩形绘制图像会消失 绘制对象绑定事件拖动事件 前言 为了更好地去学习WPFHalcon,我决定去报个班学一下。原因无非是想…

数据结构——顺序栈与链式栈的实现

目录 一、概念 1、栈的定义 2、栈顶 3、栈底 二、接口 1、可写接口 1)数据入栈 2)数据出栈 3)清空栈 2、只读接口 1)获取栈顶数据 2)获取栈元素个数 3)栈的判空 三、栈的基本运算 四、顺序栈&…

【CISSP学习笔记】5. 安全架构和工程

该知识领域涉及如下考点,具体内容分布于如下各个子章节: 使用安全设计原理来研究、实施与管理工程过程理解安全模型的基本概念(例如 Biba、Star Model、Bell-LaPadula 等模型)基于系统安全要求选择控制措施理解信息系统 (IS) 的安…

智能对话意图分析服务接口

机器人聊天,智能助手,内容生成,智能办公,智能辅助,智能搜索 一、接口介绍 通过接收用户提出的问题、输入的图片和文档等需求,准确识别其对话意图,并触发相应的回复。同时,整合了AP…

ansible管理windows测试

一、环境介绍 Ansible管理主机: 系统: redhat7.6 Linux管理服务器需安装pywinrm插件 Windows客户端主机: 系统: Server2012R2 Windows机器需要安装或升级powershell4.0以上版本,Server2008R2默认的版本是2.0,因此必须升…

m1芯片电脑上的paragon15如何安装激活 m1芯片电脑上ntfs for mac如何安装

Paragon NTFS软件在M1芯片电脑上安装之后,最后一步会让我们“允许加载第三方内核扩展”,具体如下图所示。 图1:允许加载第三方内核扩展 按照图中提示“单击此处“,然后打开安全与隐私。接下来依次点击小锁标志进行解锁&#xff0c…

【零基础入门TypeScript】TypeScript - 概述

目录 什么是 TypeScript? TypeScript 的特点 TypeScript 和 ECMAScript 为什么使用 TypeScript? TypeScript 的组件 声明文件 JavaScript 是作为客户端语言引入的。Node.js 的发展也标志着 JavaScript 成为一种新兴的服务器端技术。然而&#xff0…

云原生十二问

一、什么是云原生? 云原生是在云计算环境中构建、部署和管理现代应用程序的软件方法。现代企业希望构建高度可扩展、灵活且具有弹性的应用程序,可以快速更新以满足客户需求。为此,他们使用现代工具和技术,这些工具和技术本质上支…

python 深度学习 记录遇到的报错问题11

本篇继python 深度学习 记录遇到的报错问题10-CSDN博客 六、ValueError: cannot convert float NaN to integer 报错: 原因:这个错误通常是因为在尝试将NaN值转换为整数时发生的。NaN表示“非数字”,它无法转换为整数。在 Python 中&#xf…

2023年度回顾:怿星科技的转型与创新

岁月不居,时节如流。随着2023年的落幕,怿星科技在这一年中不仅实现了自身的转型,还在技术创新、产品研发、行业合作和人才培养等方面取得了显著的成就。这一年,怿星科技正式完成了从服务型公司向产品型公司的战略转变,…

媒体捕捉-拍照

引言 在项目开发中,从媒体库中选择图片或使用相机拍摄图片是一个极为普遍的需求。通常,我们使用UIImagePickerController来实现单张图片选择或启动相机拍照。整个拍照过程由UIImagePickerController内部实现,无需我们关心细节,只…

让你的隧道代理HTTP使用更加顺畅高效

在数字世界的探险中,隧道代理HTTP是我们穿越网络限制的重要工具。但有时候,我们可能会遇到连接不稳定、速度慢等问题。如何让隧道代理HTTP使用更加顺畅高效?下面是一些建议和技巧。 一、选择合适的代理服务器 代理服务器的地理位置、性能和…

C#/.NET/.NET Core推荐学习书籍(23年12月更新)

前言 古人云:“书中自有黄金屋,书中自有颜如玉”,说明了书籍的重要性。作为程序员,我们需要不断学习以提升自己的核心竞争力。以下是一些优秀的C#/.NET/.NET Core相关学习书籍,值得.NET开发者们学习和专研。书籍已分类…

查看证书有效期的命令

后面的证书是我们当时创建证书的路径 cfssl-certinfo -cert /opt/etcd/certs/etcd.pem

服务雪崩简单的介绍

定义 服务雪崩效应是一种因“服务提供者的不可用”(原因)导致“服务调用者不可用”(结果),并将不可用逐渐放大的现象。如下图所示: 上图中, A为服务提供者, B为A的服务调用者, C和D是B的服务调用者. 当A的…

精确率(Precision,P),召回率(Recall,R)以及F1值(F1-score,F1)

狗狗识别系统的例子: 假设我们有两个集合: 实际狗狗的集合(实际真正是狗狗的图片):A我们识别为狗狗的集合(我们认为是狗狗的图片):B 精确率(Precision,P&am…

LeetCode刷题--- 第 N 个泰波那契数

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述动…

【十三】【动态规划】1745. 分割回文串 IV、132. 分割回文串 II、516. 最长回文子序列,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略,它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题,并将每个小问题的解保存起来。这样,当我们需要解决原始问题的时候,我们就可以直接利…

半年没发过文章,这个博主竟然...

目 录 前言这半年去干了什么?考研求职山东电建移动 论文大创课余 未来公务员继续考研就业 结语 前言 第一次写这样的记录性的文章,这篇文章可能不会有太过于华丽的辞藻,但是它将展现我个人的真实经历和内心感受。在过去的时间里,我…