nginx两台负载均衡服务器之间使用keepalived实现高可用
目录
- 高可用HA
- keepalived实现高可用
- VRRP协议
- 单VIP架构
- VIP飘移
- 脑裂
- 双VIP架构(互为主从)
- keepalived监控 、执行脚本
- notify
高可用HA
单点故障:某个重要的功能只有一份,如果他出现问题,会导致全局不能使用
“高可用性”(High Availability,缩写为HA)用于描述系统或服务在面临故障、硬件或软件问题时能够继续正常运行的能力。高可用性的目标是最大程度地减少系统中断或停机时间,确保用户可以随时访问服务或应用程序。
三个经典的高可用软件:hearbeat、keepalived、HAproxy
keepalived实现高可用
keepalived两大核心功能:
1、loadbalance 负载均衡:ipvs -> LVS软件在Linux内核里已经安装
2、high-avaliability 高可用:vrrp协议(虚拟路由冗余协议)
keepalived启动之后会有三个进程:
父进程: 内存管理,子进程管理等
子进程: VRRP子进程
子进程: healthchecker子进程,查看各自服务器的健康状况
出错了可以看日志:
/var/log/messages
两台负载均衡器上都需要安装nginx,使用nginx做七层负载均衡,
VRRP协议
virtual router redundancy protocol 虚拟路由冗余协议
一组路由器协同工作,担任不同工作,担任不同角色,有master角色,也有backup角色
master角色的路由器(的接口)承担实际的数量流量转发任务
backup路由器监听master路由器的状态,并在master路由器发生故障时,接替其工作,从而保证业务流量的平滑切换
vrrp协议工作在网络层
vrrp协议使用固定的组播地址224.0.0.18进行发送
帧的组播地址:目的地址 - 01:00:5E:00:00:12
第8位为1,代表这个mac地址是一个广播地址
vrrp协议的工作原理:
- 所有的路由器或服务器发生vrrp宣告报文,进行选举,必须是相同vrid和认证密码,优先级高的服务器或路由器会被选举为master
- master定时发生vrrp通告报文,以便向backup路由器告知自己的存活情况,默认时间间隔是1秒
- 接收master设备发送的vrrp通告报文,判断master设备的状态是否正常。如果超过1秒没有收到vrrp报文,就认为master挂了,开始重新选举新的master,vip会飘移到新的master上
单VIP架构
LB2:192.168.232.165
-
在两台LB上安装keepalived
yum install keepalived -y
-
修改主LB的配置文件
cd /etc/keepalived/ vim keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr#vrrp_strict # 注释这一行vrrp_garp_interval 0vrrp_gna_interval 0 }vrrp_instance VI_1 {state MASTER # 主LBinterface ens33virtual_router_id 58 # 虚拟路由器idpriority 120 # 优先级(0~255)advert_int 1 # 宣告消息的间隔事件为1秒authentication { # 认证auth_type PASSauth_pass 1111}virtual_ipaddress { # VIP192.168.232.111} }
-
修改从LB的配置文件
cd /etc/keepalived/ vim keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0 }vrrp_instance VI_1 {state BACKUP # 从LBinterface ens33virtual_router_id 58priority 100 # 优先级要比主LB小advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.232.111} }
-
配置完成之后刷新服务
service keepalived restart
这个时候就可以在主LB服务器上看到VIP,而从LB服务器上没有这个VIP。VIP在哪一个服务器上,就由哪一个服务器对外提供服务
VIP飘移
master挂了(或keepalived服务关闭),VIP就会飘移到slave上,这个时候就可以在从LB上看到这个VIP。如果master恢复,VIP就会飘会主LB上(优先级更高)
脑裂
多台机器出现同一个VIP
脑裂出现的原因:
1、vrid(虚拟路由id)不一样
2、网络通信有问题(防火墙组织了vrrp报文的通信)
3、认证密码不一样
双VIP架构(互为主从)
双VIP的架构可以实现负载均衡
只要将以下代码加入主LB的配置文件,作为第二个VIP的从服务器
vrrp_instance VI_2 {state BACKUPinterface ens33virtual_router_id 59priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.232.112}
}
将以下代码加入从LB的配置文件,作为第二个VIP的主服务器
vrrp_instance VI_2 {state BACKUPinterface ens33virtual_router_id 59priority 120advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.232.112}
}
这个时候就可以在主LB上看到192.168.232.111这个VIP,在从LB上看到192.168.232.112
完成高可用之后就可以在DNS服务器里添加这两个IP的记录了
keepalived监控 、执行脚本
Keepalived 可以通过检查状态来了解当前主服务器和备用服务器的状态
keepalived的基础是nginx服务,nginx服务停止了,就会检测为状态异常
实例:监控本机的nginx进程是否运行,如果nginx进程不运行就立马将优先级降低30
如何判断nginx是否运行
1、pidof nginx
2、查看kiilall -0 nginx
这条命令的返回值
-
编写监控nginx脚本,授予可执行权限,也可以直接写在keepalived里
mkdir /nginx cd /nginx vim check_nginx.sh#!/bin/bash if /usr/sbin/pidof nginx &>/dev/null ;thenexit 0 elseexit 1 fichmod +x check_nginx.sh
-
在keepalived里定义并调用监控脚本
# 在global_defts部分后面加: # 定义监控脚本chk_nginx # 当脚本执行返回值为1时才会执行下面权重值-30的操作 vrrp_script chk_nginx {script "/nginx/check_nginx.sh"interval 1 # 每隔一秒执行weight -30 # 返回值为0时就把优先级-30 }#主LB在vrrp_instance VI_1中添加,从在VI_2中添加: # 调用监控脚本 track_script {chk_nginx }
是master的那个vrrp实例调用vrrp监控脚本
notify
notify脚本是当本节点服务器成为某个角色的时候,就会去执行某个脚本
# 状态改变为master后执行的脚本
notify_master "/mail/master.sh"# 状态改变为backup后执行的脚本
notify_backup "/mail/backup.sh"# vrrp停止后执行的脚本
notify_stop "/mail/stop.sh"
相关文章:

nginx两台负载均衡服务器之间使用keepalived实现高可用
目录 高可用HAkeepalived实现高可用VRRP协议单VIP架构VIP飘移脑裂双VIP架构(互为主从)keepalived监控 、执行脚本notify 高可用HA 单点故障:某个重要的功能只有一份,如果他出现问题,会导致全局不能使用 “高可用性”…...

如何将Express项目部署到Vercel
什么是Vercel? 想必好多前端同学都知道Vercel吧!如果还不了解的同学也没关系,好好看这篇文章,认识认识Vercel,我想对你部署项目有一定帮助。 Vercel 是一个云平台,用于托管和部署静态网站、前端应用程序以…...

Java作业3
1.下面代码的运行结果是(C) public static void main(String[] args){String s;System.out.println("s"s);}A.代码编程成功,并输出”s” B.代码编译成功,并输出”snull” C.由于String s没有初始化,代码不…...

ARM编程模型-寄存器组
Cortex A系列ARM处理器共有40个32位寄存器,其中33个为通用寄存器,7个为状态寄存器。usr模式和sys模式共用同一组寄存器。 通用寄存器包括R0~R15,可以分为3类: 未分组寄存器R0~R7分组寄存器R8~R14、R13(SP) 、R14(LR)程序计数器PC(R15)、R8_fiq-R12_fir为快中断独有 在不同模…...

C++ string
目录 string类介绍访问:[ ] 遍历迭代器遍历范围for遍历 容量相关:修改相关:编码表的了解写时拷贝的了解string的模拟 STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库&a…...

百亿级访问量,如何做缓存架构设计
说在前面 在40岁老架构师 尼恩的读者社区(50)中,最近有小伙伴拿到了一线互联网企业如阿里、网易、有赞、希音、百度、网易、滴滴的面试资格,遇到一几个很重要的面试题:: 分布式缓存系统,如何架构?百亿级访…...

(数字图像处理MATLAB+Python)第十一章图像描述与分析-第三、四节:几何表述和形状描述
文章目录 一:几何描述(1)像素间几何关系A:邻接与连通B:距离 (2)像素间几何特征A:位置B:方向C:尺寸 (3)程序 二:形状描述&a…...

20230901工作心得:IDEA列操作lambda表达式加强版用法
今天是中小学开学时间,亦是9月的开始,继续努力。 今日收获较大的有四个地方,先说这四点。 1、IDEA列操作 使用场景:需要批量将Excel表格里的数据插入到数据库中,此时需要写大量的insert SQL语句。 比如像这样的&am…...

macOS Sonoma 14beta 7(23A5337a)更新发布,附黑/白苹果系统镜像
系统介绍(镜像请前往黑果魏叔官网下载) 黑果魏叔8 月 31 日消息,苹果今日向 Mac 电脑用户推送了 macOS 14 开发者预览版 Beta 7 更新(内部版本号:23A5337a),本次更新距离上次发布隔了 8 天。 …...

QT基础教程之九Qt文件系统
QT基础教程之九Qt文件系统 文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库,提供了跨平台的文件操作能力。Qt 通过QIODevice提供了对 I/O 设备的抽象,这些设备具有读写字节块的能力。下面是 I/O 设备的类图(Qt5)&#…...

OpenCV(十八):图像直方图
目录 1.直方图统计 2.直方图均衡化 3.直方图匹配 1.直方图统计 直方图统计是一种用于分析图像或数据的统计方法,它通过统计每个数值或像素值的频率分布来了解数据的分布情况。 在OpenCV中,可以使用函数cv::calcHist()来计算图像的直方图。 calcHist(…...

mac pro 查看隐藏文件夹
在Mac上查看隐藏文件夹可以使用以下方法: 使用终端: 打开终端应用程序,位于“应用程序”文件夹的“实用工具”子文件夹中。 在终端中,输入以下命令,然后按回车键: defaults write com.apple.finder AppleS…...

软件测试/测试开发丨Selenium 高级定位 Xpath
点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27036 一、xpath 基本概念 XPATH是一门在XML文档中查找信息的语言 XPATH使用路径表达式在XML文档中进行导航 XPATH的应用非常广泛,可以用于UI自…...

各类注意力机制Attention——可变形注意力
目录 《Attention is all you need 》稀疏Attention残差Attention通道注意力空间注意力时间注意力可变形注意力 《Attention is all you need 》 稀疏Attention 残差Attention 通道注意力 空间注意力 时间注意力 实际上序列类任务也属于时间注意力,比如transformer…...

桥接模式:连接抽象与实现
欢迎来到设计模式系列的第八篇文章!在之前的几篇文章中,我们已经学习了许多常见的设计模式,今天我们将继续探讨另一个重要的设计模式——桥接模式。 桥接模式简介 桥接模式是一种结构型设计模式,它主要用于将抽象部分与实现部分…...

同步推送?苹果计划本月推出 iOS17和iPadOS17,你的手机支持吗?
据报道,苹果公司计划在本月推出 iOS 17 和 iPadOS 17 正式版更新。与去年不同的是,这次更新将同时发布,而不是分别发布。根据彭博社的一位消息人士马克・古尔曼的说法,苹果公司认为 iOS 17 和 iPadOS 17 的第八个测试版已经非常接…...

方案展示 | RK3588开发板Linux双摄同显方案
iTOP-RK3588开发板使用手册更新,后续资料会不断更新,不断完善,帮助用户快速入门,大大提升研发速度。 RK3588开发板载4路MIPI CAMERA摄像头接口、MIPI CSI DPHY的4.5Gbps、2.5Gops的MIPI CSI CPHY,四路同时输入…...

数据库-多表设计
概述: 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本分为三种: 一对…...

一个简单的文件系统(MinixFS)实现解析
1. Minix文件系统概要 Minix file system 是 Andrew S. Tanenbaum 在 1980 年代发明的文件系统, 并随着 Minix 操作系统一起于 1987 年发布。 Linus 编写 Linux 内核第一个版本的时候, 使用的也是 Minix FS, Linux 至今依然提供了对 Minix FS 的支持。Minix FS 结构简单, 易于…...

地图投影-2亚当斯方形
说明 亚当斯方形 II 投影显示了一个方形的世界。它是 Oscar S. Adams 于 1925 年提出的两种投影之一。该投影为等角投影,但方形的四个角除外。在 Adams 最初的设计中,该投影将赤道和中央经线显示为方形的对角线。 此投影的一个有利属性是可以进行细分或…...

atcoder库中类欧(类欧几里得算法)floor_sum用法
https://atcoder.jp/contests/practice2/tasks/practice2_c 求 ∑ i 0 N − 1 f l o o r ( ( A i B ) / m ) \sum_{i 0}^{N - 1} floor((A \times i B) / m) ∑i0N−1floor((AiB)/m) 直接使用即可: ansfloor_sum(n, m, A, B); //注意顺序...

后端面试话术集锦第 十一 篇:mybatis面试话术
这是后端面试集锦第十一篇博文——mybatis面试话术❗❗❗ 1. 介绍下mybatis,说说它的优缺点是什么? Mybatis是一个半ORM(对象关系映射)的持久层框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程…...

SpringBoot运维实用篇、打包、运行、高级配置、多环境开发、日志
文章目录 SpringBoot运维实用篇YW-1.SpringBoot程序的打包与运行程序打包程序运行SpringBoot程序打包失败处理命令行启动常见问题及解决方案SpringBoot项目快速启动(Linux版) YW-2.配置高级YW-2-1.临时属性设置YW-2-2.配置文件分类YW-2-3.自定义配置文件…...

springdoc-openapi-ui 整合 knife,多模块分组,脚手架
pom文件: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.o…...

04-MySQL02
1、什么是索引下推? 索引下推(index condition pushdown )简称ICP,在Mysql5.6的版本上推出,用于优化查询。 需求: 查询users表中 "名字第一个字是张,年龄为10岁的所有记录"。 SELECT * FROM u…...

实现跨境电商测评和采退、LU卡、LU货最安全的系统方案
首先你要有一个稳定的测评环境系统,这个是做自养号退款、撸货、撸卡的基础。测评环境系统有很多,从早期的虚拟机,模拟机,云手机,VPS等等。这些系统方案先不说成本高,最重要的是成功率很低,所以一…...

软件生命周期及流程
软件生命周期: 软件生命周期(SDLC,Systems Development Life Cycle)是软件开始研制到最终被废弃不用所经历的各个阶段. 需求分析阶段--输出需求规格说明书(原型图) 测试介入的晚--回溯成本高 敏捷开发模型: 从1990年…...

nginx使用详解
文章目录 一、前言二、nginx使用详解2.1、nginx特点2.2 静态文件处理2.3 反向代理2.4 负载均衡2.5 高级用法2.5.1 正则表达式匹配2.5.2 重定向 三、总结 一、前言 本文将详细介绍nginx的各个功能使用,主要包括 二、nginx使用详解 2.1、nginx特点 高性能ÿ…...

YOLOV7 添加 CBAM 注意力机制
用于学习记录 文章目录 前言一、CBAM1.1 models/common.py1.2 models/yolo.py1.3 yolov7/cfg/training/CBAM.yaml2.4 CBAM 训练结果图 前言 一、CBAM CBAM: Convolutional Block Attention Module 1.1 models/common.py class ChannelAttention(nn.Module):def __init__(sel…...

【SpringSecurity】七、SpringSecurity集成thymeleaf
文章目录 1、thymeleaf2、依赖部分3、定义Controller4、创建静态页面5、WebSecurityConfigurerAdapter6、权限相关7、当用户没有某权限时,页面不展示该按钮 1、thymeleaf 查了下读音,leaf/li:f/,叶子,前面的单词发音和时间time一…...