Linux 运维知识梳理(6)高可用服务

article/2025/11/4 15:59:14

一、高可用介绍

1、HA 高可用

​高可用 HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指通过设计,减少系统服务不可用的时间。假设系统一直能够提供服务,我们说系统的可用性是 100%。如果系统每运行 100 个时间单位,会有 1 个时间单位无法提供服务,我们说系统的可用性是 99%。很多公司的高可用目标是 4 个 9,也就是 99.99%,这就意味着,系统的年停机时间为 0.876 个小时。

描述通俗叫法可用性级别年度停机时间
基本可用性2个999%87.6小时
较高可用性3个999.9%8.8小时
具有故障自动恢复能力的可用性4个999.99%53分钟
极高可用性5个999.999%5分钟

实现高可用的核心点:

  • 冷备:服务器不启用(域名不解析),使用的时候再开启,需要手动切换。操作费力耗时。
  • 热备:服务器在等待状态(监控主服务器状态),一旦主宕机,备就接管,自动切换。

实现热备,引入 VIP(Virtual IP)的切换

在这里插入图片描述

通过 VIP 的方式,切换主备服务器

  1. 默认 VIP 绑定在主服务器(master)

  2. master 不可用,就切换 VIP 到备份服务器(backup)

  3. 用户可以使用到连续性更好的服务,通过 VIP 访问服务器

2、keepalived 介绍

​Keepalived 软件起初是专为 LVS 负载均衡软件设计的,用来管理并监控 LVS 集群系统中各个服务节点的状态,后来又加入了可以实现高可用的 VRRP 功能。因此,Keepalived 除了能够管理 LVS 软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件

3、keepalived 组成和原理

Keepalived 软件主要是通过 VRRP 协议实现高可用功能的。

VRRP 是 Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,VRRP 出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。

​虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将 N 台提供相同功能的路由器组成一个路由器组,这个组里面有一个 master 和多个 backup,master 上面有一个对外提供服务的 vip(该路由器所在局域网内其他机器的默认路由为该vip),master 会发组播,当 backup 收不到 vrrp 包时就认为 master 宕掉了,这时就需要根据 VRRP 的优先级来选举一个 backup 当master。这样的话就可以保证路由器的高可用了。

Keepalived 的功能体系结构,大致分两层:用户空间(user space)和内核空间(kernel space)

内核空间:

主要包括 IPVS(IP虚拟服务器,用于实现网络服务的负载均衡)和 NETLINK(提供高级路由及其他相关的网络功能)两个部份。

用户空间:

WatchDog:负载监控 checkers 和 VRRP 进程的状况
VRRP Stack:负载均衡器之间的失败切换 FailOver,如果只用一个负载均衡器,则 VRRP 不是必须的。
Checkers:负责真实服务器的健康检查 healthchecking,是 keepalived 最主要的功能。换言之,可以没有 VRRP Stack,但健康检查 healthchecking 是一定要有的。
IPVS wrapper:用户发送设定的规则到内核 ipvs 代码
Netlink Reflector:用来设定 vrrp 的 vip 地址等。

在这里插入图片描述

keepalived 主要使用三个模块,分别是 core、check 和 vrrp。

  • core 模块为 keepalived 的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。

  • check 负责健康检查,包括常见的各种检查方式。

  • vrrp 模块是来实现 VRRP 协议的。

4、keepalived 安装

master 和 backup 主机都需要进行安装

yum -y install keepalived

keepalived 需要使用的目录和文件:

文件或者目录作用
/etc/keepalived/keepalived.conf生效的配置文件
/usr/sbin/keepalived二进制文件
/usr/lib/systemd/system/keepalived.service服务器管理脚本
/var/log/messages日志信息

5、keepalived 配置

vim /etc/keepalived/keepalived.conf

示例配置文件说明

! Configuration File for keepalived
# 发送邮件的配置
global_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_DEVEL
}
# vrrp 协议的配置
vrrp_instance VI_1 {# 工作模式state MASTER# 监听的网卡interface eth0# 虚拟路由 id 需要和备服务器一致virtual_router_id 51# 权重 优先级priority 100# vrrp 包的发送周期 1sadvert_int 1# 权限验证authentication {auth_type PASSauth_pass 1111}# 需要绑定切换的 VIPvirtual_ipaddress {192.168.200.16192.168.200.17192.168.200.18}
}
····

二、实现主机 HA

主机名称服务器IP角色
server01192.168.17.102master
server02192.168.17.101backup
vip192.168.17.200虚拟IP

1、修改配置

  • 主服务器配置
! Configuration File for keepalived
global_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_DEVEL
}
vrrp_instance VI_1 {state MASTER# 改为本机的网卡名称interface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}# master 默认只需要修改使用 VIP 即可virtual_ipaddress {192.168.17.200}
}
  • 备服务器配置
! Configuration File for keepalived
global_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_DEVEL
}
vrrp_instance VI_1 {# 修改工作模式为备state BACKUP# 改为本机的网卡名称interface ens33virtual_router_id 51# 优先级要低于 masterpriority 99advert_int 1authentication {auth_type PASSauth_pass 1111}# 注意修改 VIPvirtual_ipaddress {192.168.17.200}
}

2、启动

分别按照顺序启动主、备服务器的 keepalived

systemctl start keepalived.service && systemctl enable keepalived.service

查看主备服务器的网卡信息

# 需要通过 ip a 命令查看  分别在 server01 和 server02 查看
shell > ip a

3、模拟服务器不可用 VIP 切换

服务器整机不可用,常见于服务器断网,或者断电关机等。

方法一:模拟主服务器断电关闭

# 关闭主服务器,VIP 所在服务器
shell > poweroff

方法二:模拟主服务器断网

# 关闭 VIP 所在服务器的网卡,使其不能够联网
shell > service network stop

通过以上实验检测,发现当主服务器整机不可用时,VIP 会自动切换到备用服务器

三、实现服务 HA

通过 keepalived 可以直接实现主服务器整机不可用,实现 VIP 的切换。保证用户可以通过 VIP 进行访问服务。

但是实际情况下,往往并不是服务器整机不可用,只是对应的服务或者软件不可用。

比如说:nginx 提供的 web 服务,nginx 进程关闭,服务就不可用了,所以就需要检测当 nginx 不可用时,就切换 VIP。

实现过程分析:

  1. VIP 实际是由 keepalived 进行绑定的,所以当 nginx 服务不可用时,就关闭当前机器的 keepalived 即可,释放 VIP。进而绑定到其他备用服务器。

  2. 编写服务检测脚本,实现检测 nginx 是否可用,不可用则关闭当前所在主机的 keepalived。

  3. 在 keepalived 配置中调用检测服务脚本。

1、检测脚本

主备服务器都要添加此脚本

touch /etc/keepalived/check_nginx.sh
chmod +x /etc/keepalived/check_nginx.sh

脚本内容:

#!/bin/bashnginx_status=`ps -C nginx --no-header | wc -l`
if [ $nginx_status -eq 0 ];thensystemctl stop keepalived.service
fi

2、修改配置

在多台服务器中配置 keepalived 定时触发检测 nginx 的脚本模块

# 在 vrrp_instance 外上面定义
vrrp_script check_nginx {# 调用脚本地址script /etc/keepalived/check_nginx.sh#检测间隔时间interval 3
}
# 在 vrrp_instance 里调用
track_script {# 上面定义的名称check_nginx
}

3、模拟宕机实现服务切换

以上案例已经实现了当服务不可用时,VIP 自动切换到可用服务器。

  1. 将域名解析到 vip 上
  2. 用户访问域名
  3. 关闭主服务器的 nginx,master 的 keepalived自动关闭
  4. vip 漂移到备用服务器上
  5. 用户使用无影响

四、keepalived的配置补充

脑裂(裂脑):vip 出现在了多台机器上。网络不通畅,禁用了数据包,主备服务器没法通讯,造成备服务器认为主服务器不可用,绑定VIP,主服务器VIP不会释放。

解决方案:

①双备或者多备模式 BACKUP 通过 priority 权重来区分谁的优先级更高

②单播(定向广播)的方式 (一些特定环境禁用了组播方式)

③时间不同步 服务器时间校时

1、非抢占模式

①nopreempt

在主备服务器的配置文件,vrrp_instance段中

②设置state工作模式为BACKUP

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

2、单播模式

一些特定环境下不允许发送组播,造成备服务器无法收到 vrrp 包,可能会造成脑裂现象。可以通过单播的方式解决。

单播示例配置:注意此语法在 keepalived1.2.11 版本以上支持

unicast_src_ip 192.168.1.21 ##(本地IP地址)

unicast_peer {

​ 192.168.1.22 ##(对端IP地址)此地址一定不能忘记

}

主服务器server01配置

#在vrrp_instace段中加入
#本地IP
unicast_src_ip 192.168.17.102
unicast_peer {#对象IP  发送vrrp包给备服务器192.168.17.101
}

备服务器server02配置

#在vrrp_instace段中加入
#本地IP
unicast_src_ip 192.168.17.101
unicast_peer {#对象IP  发送vrrp包给备服务器192.168.17.102
}

tcpdump抓vrrp包的方式:

shell > tcpdump vrrp -n

http://chatgpt.dhexx.cn/article/EMMA6cyU.shtml

相关文章

批量去除PDF的水印(完全免费)

在这里给大家推荐一款好用的软件,帮助去除PDF的水印 具体步骤: 1.选择一个PDF,并将想要删除的水印添加到水印待去除列表 2.点击下一步,便可生成相应的文件,保存即可

可以一键去除水印的工具哪个好

我们平时不管是阅读自媒体文章还是其他的逛微博,看到的很多图片都是有水印的存在的,如果是自己需要的图片,看起来就不是很好看,当做素材使用的话也会影响视觉效果,那可以一键去除水印的工具哪个好呢? 1、既…

烦人的Windows桌面水印——一键去除工具

相信大多数使用过Windows的小伙伴都遇见过这个问题,当Windows未激活或者使用预览版时,桌面右下角竟然会有水印,就像下面这样:   有强迫症的我肯定受不了的,于是找到了一款非常好用的软件,–>官网传送…

​在线去水印软件网站​

地址:在线去水印软件网站 软件界面如图所示。 把有多余人或物的图片添加在图片去水印的栏目,通过工具把将要去除的部位圈出,然后按“开始去水印”并下载保存文件即可获得去水印后的图片啦,过程30秒钟即可搞定。 能够1:1的无损实现…

PS去除水印

PS去除水印五种方法 方法一 裁剪法 适用范围 水印位于图片边缘, 删除后对图片无影响 操作步骤 C键 → \rightarrow →选中裁剪区域 方法二 色阶法 适用范围 文件上不透明水印 操作步骤 灰色水印:套索工具 → \rightarrow →框中水印 → \righ…

只需一键,即可快速去除图片水印!

现在有很多朋友都会到网上找一些好看的图片保存下来,但是很多时候我们找到的图片都是带有水印的,虽然水印很小,但是看起来也不美观。别担心,今天我将分享一个简单又便捷的图片去水印方法给大家,有需要的小伙伴赶紧看看…

批量去水印

批量去水印是个邪恶的技术,以老赵的衣橱为例子就更邪恶了。之所以以衣橱为例子而不以时尚网为例子,是标题需要。实际上,时尚网的水印批量去除效果更佳。闲话少说,摆原理,上图片(代码就不上了)。…

去除网络图片水印

目录 1 问题描述2 解决方法2.1 原理分析2.2 详细步骤与测试 1 问题描述 在网络上看到的图片经常有水印,如CSDN中的图片就是带有水印的,如下图所示,如果直接复制粘贴到Word,看着非常不好。 本文就是要解决此问题的,让…

视频如何去水印-免费视频水印去除工具

前面跟大家分享了“视频转音频”和“网上下载视频”的方法,很多小伙伴们都有一个问题,就是从网上下载的视频有没有“水印”。 那么这个视频下载的方式,是直接下载的原视频,所以如果原视频有“水印”,下载下来的视频也…

去水印的工具-去水印工具在线使用

我们说的水印是指:是来着平台、作者出于强调平台出处、创作者目的,对图片、视频加的水印。不过,水印的存在会影响整体的观感。如果你想将这些素材用于个人收藏、二次创作,这就需要进行去水印的处理。 今天给大家介绍2个关于图片去…

Photoshop去除图片水印

环境:Adobe Photoshop CC 2019 1.首先使用ps打开需要操作的图片,commandj 复制图层 2.点击矩形选框工具 ,框中需要去除的水印 3.选中色彩范围项,用取色工具(鼠标左键)抽取水印文字的颜色,预览图…

图片在线去水印-一键图片去除水印工具

我们经常会看到喜欢的图片带了水印,这让很多人很无奈,不得不舍弃喜欢的图片。今天小编教大家两个方法,即便是有水印的图片也可以用软件处理掉。那么怎么去水印呢?接下来详细为大家介绍去水印的详细方法。 一、水印云 步骤一:在…

图片如何去除水印

不知道小伙伴们平时在网上找一些图片素材有没有遇到过带有水印的呢?通常我在网上浏览保存的图片,很多都被平台加了水印,如果想要作为素材使用的话就多少影响了美观。那么图片如何去除水印呢?今天就给小伙伴们整理一下我最近使用的…

如何去除图片水印不留痕迹_去水印工具

在自媒体互联网越加火热的现代,只要你上网,都难免不和图片打交道,有时候我们想要下载网上的图片,结果发现有水印,无疑是很影响心情,那么如何一键去除图片水印呢,今天为大家带来一个简单快速的去…

5款工具帮你一键快速图片去水印(附送复杂水印去除教程)

阿虚之前写过《视频去水印教程》也写过《PDF去水印教程》了 今天写写图片去水印教程 ▍1 简单水印 水印下面覆盖的背景是比较单一的,这种是最简单的水印 ● 1.1 手机端 对于这种简单水印,手机端也是有软件能去除的 ❶TouchRetouch(安卓 …

4个好用的图片去水印工具,图片去水印这样做就对了

分享4个图片去水印工具,操作简单,一看就会,并且去水印效果好,几乎看不出水印的痕迹! 1、Img.cleaner 一个免费的图片去水印在线工具,采用的是最新的最新的AI清理和图像修复技术,选中图片水印位置…

这6个免费去水印工具,一定要码住!

现在很多平台会在用户保存图片/视频的时候自动给视频添加一个平台的水印,这在一定程度上影响了它的美观和使用。 下面我来分享几个图片/视频一键去水印方法,操作简单还不会损坏画质哦! 1. Magic Eraser 这是一个魔术橡皮擦在线网站&#x…

常见的交互设计方法

尽管交互设计跨越了无数类型的Web和移动应用程序和网站,有一些固定的方法是所有设计师都可以依赖的。我们将探讨一些比较常见的方法:目标驱动设计,可用性,五个维度理论,认知心理学和人机界面指南。 1. 目标驱动的设计 …

软件工程与计算-11-人机交互设计

11-人机交互设计 不良的界面会导致用户感到不适 1. 用户和不好的设计 系统用户通常通过系统界面而非功能来判断系统:用户界面的设计应与预期用户的技能,经验和期望相匹配。界面设计不当会导致用户发生灾难性错误:不好的UI的设计往往是很多…

基于HTML+CSS实现的可交互照片墙Web页面

资源下载地址:https://download.csdn.net/download/sheziqiong/85723524 资源下载地址:https://download.csdn.net/download/sheziqiong/85723524 一、 实验目的 本次实验目为练习 HTMLCSS 的布局与样式,以及简单的交互 二、实验内容 制作…