LVS+Keepalived 双机热备
LVS+Keepalived 双机热备
- Keepalived案例分析
- Keepalived工具介绍
- Keepalived工具介绍
- 一、功能特点
- 一、理解Keepalived实现原理
- 实验报告
- 资源列表
- 一、安装keepalived以及ipvsadm
Keepalived案例分析
- 企业应用中,单台服务器承担应用存在单点故障的危险
- 单点故障一旦发生,企业服务将发生中断,造成极大的危害
Keepalived工具介绍
- 转为LVS和HA设计的一款健康检查工具
- 支持故障自动切换
Keepalived工具介绍
一、功能特点
- 1.健康检查:Keepalived能够定期对服务器或应用进行健康检查,确保服务的正常运行。通过端口检查、URL检查等多种方式,Keepalived能及时发现并响应故障。
- 2.故障自动切换:当检测到主服务器或服务出现故障时,Keepalived能够自动将业务切换到备份服务器,保证服务的连续性和高可用性。这种自动切换机制极大地减少了人工干预的需要,降低了故障恢复的时间。
一、理解Keepalived实现原理
Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能

VRRP(虚拟路由冗余协议)是针对服务器的一种备份解决方案
- 由多台服务器组成一个热备组,通过共用的虚拟IP地址对外提供服务
- 每个热备组内同时只有一台主服务器提供服务,其他路由器处于冗余状态
- 若当前在线的服务器失效,则其他服务器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
实验报告
资源列表
| 主机 | 操作系统 | IP | 配置 |
|---|---|---|---|
| lb01 | CentOS7 | 192.168.72.131 | 2C4G |
| lb02 | CentOS7 | 192.168.72.132 | 2C4G |
| web01 | CentOS7 | 192.168.72.133 | 2C4G |
| web02 | CentOS7 | 192.168.72.134 | 2C4G |
systemctl stop firewalld
systemctl disable firewalld
- 关闭内核安全机制
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
- 修改主机名
hostnamectl set-hostname lb01
hostnamectl set-hostname lb02
hostnamectl set-hostname web01
hostnamectl set-hostname web02
- CentOS7已经停止维护了,这里我用的是华为源
# 阿里
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 网易
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
# 华为
curl -o /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-anon.repo
- 配置web节点
yum -y install httpd
# 第一次启动服务可以使用 --now 立即启动服务
systemctl enable httpd --nowecho 'This is web01' > /var/www/html/index.html
echo 'This is web02' > /var/www/html/index.html
一、安装keepalived以及ipvsadm
# 加载 ip_vs 模块
modprobe ip_vs# 查看 ip_vs 版本信息
cat /proc/net/ip_vsyum install ipvsadm keepalived -y
- 配置lb
[root@lb01 ~]#
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {router_id LB01
}vrrp_instance VI_1 {state MASTER # 两个 DS,一个为 MASTER 一个为 BACKUPinterface ens33 # 当前 IP 对应的网络接口,通过 ifconfig 查询virtual_router_id 62 # 虚拟路由 ID(0-255),在一个 VRRP 实例中主备服务器 ID 必须一样priority 100 # 优先级值设定:MASTER 要比 BACKUP 的值大advert_int 1 # 通告时间间隔:单位秒,主备要一致authentication { # 认证机制,主从节点保持一致即可auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.200 # VIP,可配置多个}
}# web 配置
virtual_server 192.168.72.200 80 {delay_loop 3 # 设置健康状态检查时间lb_algo rr # 调度算法,这里用了 rr 轮询算法lb_kind DR # 这里测试用了 Direct Route 模式#persistence_timeout 50 # 持久连接超时时间,注意添加此项配置客户端连续请求时,请求到同一节点protocol TCPreal_server 192.168.72.133 80 {weight 1TCP_CHECK {connect_timeout 10 retry 3 # 旧版本为 nb_get_retry delay_before_retry 3 # 重试间隔3秒 connect_port 80}}real_server 192.168.72.134 80 {weight 1TCP_CHECK {connect_timeout 10retry 3delay_before_retry 3connect_port 80}}
}
# 将文件推送到 lb02
[root@lb01 ~]# scp /etc/keepalived/keepalived.conf root@192.168.72.132:/etc/keepalived/
# 修改 lb02
[root@lb02 ~]#
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {router_id LB02
}vrrp_instance VI_1 {state BACKUP # 两个 DS,一个为 MASTER 一个为 BACKUPinterface ens33 # 当前 IP 对应的网络接口,通过 ifconfig 查询virtual_router_id 62 # 虚拟路由 ID(0-255),在一个 VRRP 实例中主备服务器 ID 必须一样priority 90 # 优先级值设定:MASTER 要比 BACKUP 的值大advert_int 1 # 通告时间间隔:单位秒,主备要一致authentication { # 认证机制,主从节点保持一致即可auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.200 # VIP,可配置多个}
}# web 配置
virtual_server 192.168.72.200 80 {delay_loop 3 # 设置健康状态检查时间lb_algo rr # 调度算法,这里用了 rr 轮询算法lb_kind DR # 这里测试用了 Direct Route 模式#persistence_timeout 50 # 持久连接超时时间,注意添加此项配置客户端连续请求时,请求到同一节点protocol TCPreal_server 192.168.72.133 80 {weight 1TCP_CHECK {connect_timeout 10 retry 3 # 旧版本为 nb_get_retry delay_before_retry 3 # 重试间隔3秒 connect_port 80}}real_server 192.168.72.134 80 {weight 1TCP_CHECK {connect_timeout 10retry 3delay_before_retry 3connect_port 80}}
}
- lb节点
# 调整 proc 响应参数
## 对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核的重定向参数响应
## 数据包的入接口和路由后的指定的出接口是同一个接口,所以需要关闭重定向
echo 'net.ipv4.conf.all.send_redirects = 0' >> /etc/sysctl.conf
echo 'net.ipv4.conf.default.send_redirects = 0' >> /etc/sysctl.conf
echo 'net.ipv4.conf.ens33.send_redirects = 0' >> /etc/sysctl.conf
sysctl -p# 启动keepalived
systemctl start keepalived
systemctl enable keepalived
- web节点
[root@web01 ~]# vi dr.sh
#!/bin/bash
SNS_VIP=192.168.72.200
case "$1" in
start)ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP/sbin/route add -host $SNS_VIP dev lo:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announcesysctl -p >/dev/null 2>&1echo "RealServer Start OK";;
stop)ifconfig lo:0 downroute del $SNS_VIP >/dev/null 2>&1echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "RealServer Stoped";;
*)echo "Usage: $0 {start|stop}"exit 1
esac
exit 0
[root@web01 ~]# sh dr.sh start
RealServer Start OK
for i in $(seq 1 300);do curl 192.168.72.200 ;sleep 1;done
相关文章:
LVS+Keepalived 双机热备
LVSKeepalived 双机热备 Keepalived案例分析Keepalived工具介绍Keepalived工具介绍一、功能特点 一、理解Keepalived实现原理实验报告资源列表一、安装keepalived以及ipvsadm Keepalived案例分析 企业应用中,单台服务器承担应用存在单点故障的危险单点故障一旦发生…...
Web Image scr图片从后端API获取基本实现
因系统开发中需求,会有页面显示图片直接从后端获取后显示,代码如下: 后端: /*** 获取图片流* param response* param fileName*/RequestMapping(value"getImgStream",method RequestMethod.GET)public void getImgStr…...
2024音频剪辑指南:探索四大高效工具!
音频剪辑不仅仅是技术活,更是一种艺术创作,它能够让声音更加生动、更具感染力。今天,我们就来探索几款优秀的音频剪辑工具。 福昕音频剪辑 链接:www.pdf365.cn/foxit-clip/ 福昕音频剪辑是一款界面简洁、操作直观的音频编辑软件…...
“CSS”第一步——WEB开发系列13
CSS (Cascading Style Sheets,层叠样式表),是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式(字体、间距和颜色等)的计算机语言,CSS 文件扩展名为 .css。 一、什么是 CSS&a…...
IEEE802网络协议和标准
IEEE802网络协议和标准 802委员会IEEE 802介绍现有标准 IEEE 802.3介绍物理媒介类型MAC子层与LLC子层主要内容通讯标准POE供电标准802.3af、802.3at、802.3btIEEE802.3af的工作过程:IEEE802.3af主要供电参数:IEEE802.3af的分级参数:为什么会有…...
vulnhub靶机 DC-9(渗透测试详解)
一、靶机信息收集 1、靶机下载 https://download.vulnhub.com/dc/DC-9.zip 2、靶机IP扫描 3、探测靶机主机、端口、服务版本信息 4、靶机目录扫描 二、web渗透测试 1、访问靶机IP 查看页面功能点,发现一个搜索框和登录框 2、测试一下是否存在sql注入 查看当前数…...
javaweb的新能源充电系统pf
TOC springboot339javaweb的新能源充电系统pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。在互联网诞生之前,地域位置往往是人们思想上不可跨域…...
如何在桌面同时展示多个窗口
一、实现2分屏显示 win箭头 二、实现3分屏显示 1. 在实现2分屏显示的基础上,再次点击箭头图标,这次选择屏幕的上方或下方。 2. 点击后,第三个窗口将会出现在你选择的区域。现在,你可以在三个窗口之间自由切换,提高工…...
The Sandbox 游戏制作教程(第 5 部分):创建基于分类的系统
欢迎回到我们的系列,我们将记录 The Sandbox Game Maker 的 “On-Equip”(装备)功能的多种用途。 如果你刚加入 The Sandbox,装备功能是 “可收集组件”(Collectable Component)中的一个多功能工具&#x…...
HTML浏览器缓存(Browser Cache)
介绍: 浏览器缓存是Web缓存中最直接、最常见的一种形式。当浏览器首次请求某个资源时,如果服务器响应中包含了缓存控制指令(如Cache-Control、Expires等),浏览器就会将这些资源存储在本地缓存中。后续请求相同资源时&a…...
短剧APP系统,推动短剧市场发展
近年来,短剧作为一直火爆的新兴行业,凭借着剧情进奏、爽、时长短等优势,深受大众欢迎,成为了大众碎片化时间的解压神器。 目前,随着短剧市场的快速发展,各个类型的短剧层出不穷,也推动了短剧AP…...
嵌入式 | 嵌入式 Linux 系统使用摄像头
点击上方"蓝字"关注我们 01、引言 >>> 在嵌入式 Linux 系统使用摄像头 俗话说“眼见为实”,这或许是为什么近年来摄像头在嵌入式系统上快速增长的原因。它们被用于不同的场景,如: 远程监控:典型的例子是闭路电视,监控人员在监视环境(或许你所在的大楼…...
C 开源库之cJSON
cJSON简介 CJSON库是一个用于解析和生成JSON数据的C语言库。 它提供了一组函数,使得在C语言中操作JSON数据变得简单而高效。 您可以使用CJSON库来解析从服务器返回的JSON数据,或者将C语言数据结构转换为JSON格式以进行传输。 cJSON 使用 官网地址&…...
ROW_NUMBER(), RANK(), DENSE_RANK() SQL排序函数图文详解
ROW_NUMBER(), RANK(), DENSE_RANK() ROW_NUMBER(): 为结果集中的每一行分配唯一的连续编号。即使有重复的值,ROW_NUMBER() 也会为它们分配不同的序号。 SELECT column_name, ROW_NUMBER() OVER (ORDER BY column_name) AS row_num FROM table_name;2. RANK(): 对结…...
Spring IoCDI(下)—DI的尾声
我们之前学习了控制反转IoC,接下来就开始学习依赖注入DI的细节。 依赖注入是一个过程,是指IoC容器在创建Bean时,去提供运行时所依赖的资源,而资源指的就是对象。我们使用 Autowired 注解,完成依赖注入的操作。简单来说…...
仕考网:考外省公务员可以调回本地吗?
一般情况下,公务员岗位是固定不可随意更换的,因为每个职位都对应特定的职责和要求。一旦考到外地的岗位,想要调回本地几乎是不可能的。因为这样的操作可能导致职位空缺,进而需要通过公共招聘流程来填补,而不是简单地从…...
《工厂模式在软件开发中的深度剖析与应用》
工厂模式 在软件开发的领域中,设计模式充当着解决常见问题的高效且可复用的策略角色。其中,工厂模式作为创建对象的重要设计模式,具有不可小觑的应用价值。接下来,我们将深入探讨简单工厂模式、工厂方法模式和抽象工厂模式。 一…...
双向通信之Websocket
介绍 Websocket是一种在单个TCP连接上进行全双工通信的协议。与传统的HTTP协议不同,websocket允许客户端与服务器之间的双向通信,可以在同一条连接上进行多次消息的快速传递。我之前在做一个线上刷题网站的时候,需要设计一个社区讨论模块&am…...
git学习使用碰到的问题1
本来在B站上看到的关于stash的使用时视频末尾讲到git stash drop 编号 会删除暂存记录 确实也是这么回事,但是末尾说到git stash pop 编号时up主说在恢复工作进度的时候我们可以直接删除掉这个工作记录可以直接使用 git stash pop stash{0} 使用完以后却出现了如上图…...
JavaScript初级——Math
一、Math 和其他的对象不同,它不是一个构造函数。它属于一个工具类,不用创建对象,里边封装了数学运算相关的属性和方法。 比如: Math.PI 表示圆周率。 二、Math.abs() —— 可以用来计算一个数的绝对值。 三…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...
