目录

一:Keepalived双机热备基础知识

1.Keepalived 概述及安装

1.1.Keepalived的热备方式

1.2.Keepalived 的安装与服务控制

(1)安装Keepalived

(2)控制Keepalived服务

2.使用Keepalived实现双机热备

2.1.主服务器的配置

2.2.备用服务器配置

2.3.检测双机热备功能

(1)连通性测试

(2)web访问测试

(3)查看日志记录

二:使用Keepalived实现双机热备

1.基础环境配置

2.配置主调度器

(1)全局配置,热备配置

(2)web服务器池配置

(3)重新启动Keepalived

3.配置从调度器

4.配置web节点服务器

5.测试LVS+Keepalived高可用群集


一:Keepalived双机热备基础知识

      Keepalived 起初是专门针对 LVS 设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检査(Health Checking)功能--判断 LVS 负载调度器、节点服务器的可用性,当master 主机出现故障及时切换到 backup节点保证业务正常,当 master 故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点。

1.Keepalived 概述及安装

      Keepalived 的官方网站位于 http://www.keepalived.org/,本章将以 YUM方式讲解 Keepalived 的安装、配置和使用过程。在非 LVS 群集环境中使用时,Keepalived 也可以作为热备软件使用。

1.1.Keepalived的热备方式

      Keepalived 采用 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现 Linux 服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案--由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态。若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。
      热备组内的每台路由器都可能成为主路由器,虚拟路由器的IP地址(VIP)可以在热备组内的路由器之间进行转移,所以也称为漂移IP地址。使用Keepalived 时,漂移地址的实现不需要手动建立虚接口配置文件(如 ens33 :0),而是由 Keepalived 根据配置文件自动管理。

操作系统配置IP服务
OpenEuler242C4G192.168.10.101keepalived/nginx
OpenEuler242C4G192.168.10.102keepalived/nginx

 

1.2.Keepalived 的安装与服务控制

(1)安装Keepalived
yum install -y keepalived ipvsadm nginx
(2)控制Keepalived服务
systemctl enable keepalived

2.使用Keepalived实现双机热备

2.1.主服务器的配置

systemctl stop firewalld //关闭防火墙
setenforce 0
cd /etc/keepalived/
cp keepalived.conf.sample keepalived.conf
vi keepalived.conf
global_defs {router_id HA_TEST_R1     //本路由器(服务器)的名称
}
vrrp_instance VI_1 {       //定义 VRRP 热备实例state MASTER     //热备状态,MASTER 表示主服务器interface ens33     //承载 VIP 地址的物理接口virtual_router_id 1     //虚拟路由器的 ID 号,每个热备组保持一致priority 100     //优先级,数值越大优先级越高advert_int 1     //通告间隔秒数(心跳频率)authentication {     //认证信息,每个热备组保持一致auth_type PASS     //认证类型auth_pass 123456     //密码字串}virtual_ipaddress {     //指定漂移地址(VIP),可以有多个192.168.10.100}
}
systemctl start keepalived
ip addr show dev ens33

2.2.备用服务器配置

  1. 在同一个 Keepalived 热备组内,所有服务器的 Keepalived 配置文件基本相同,包括虚拟路由器的 ID 号、认证信息、漂移地址、心跳频率等。不同之处主要在于路由器名称、热备状态、优先级。
  • 路由器名称(router_id):建议为每个参与热备的服务器指定不同的名称。
  • 热备状态(state):至少应有一台主服务器,将状态设为 MASTER;可以有多台备用的服务器,将状态设为 BACKUP。
  • 优先级(priority):数值越大则取得 VIP 控制权的优先级越高,因此主服务器的优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺 VIP 控制权时发生冲突。

配置备用服务器(可以有多台)时,可以参考主服务器的 keepalived.conf 配置文件内容,只需修改路由器名称、热备状态、优先级

systemctl stop firewalld //关闭防火墙
setenforce 0
cd /etc/keepalived/
cp keepalived.conf.sample keepalived.conf
vi keepalived.conf
global_defs {router_id HA_TEST_R2     //本路由器(服务器)的名称
}
vrrp_instance VI_1 {       //定义 VRRP 热备实例state BACKUP     //热备状态,BACKUP 表示备用服务器interface ens33     //承载 VIP 地址的物理接口virtual_router_id 1     //虚拟路由器的 ID 号,每个热备组保持一致priority 90     //优先级,低于主服务器advert_int 1     //通告间隔秒数(心跳频率)authentication {     //认证信息,每个热备组保持一致auth_type PASS     //认证类型auth_pass 123456     //密码字串}virtual_ipaddress {     //指定漂移地址(VIP),可以有多个192.168.10.100}
}
systemctl start keepalived
ip addr show dev ens33

2.3.检测双机热备功能

      Keepalived 的日志消息保存在 /var/log/messages 文件中,在测试主、备故障自动切换功能时,可以跟踪此日志文件来观察热备状态的变化。以针对连通性和 Web 服务的测试为例,主要操作如下。

(1)连通性测试

      在客户机中执行 “ping -t 192.168.10.100” 命令,能够正常、持续 ping 通,根据以下操作继续观察测试结果。
① 停止启用主服务器的 Keepalived 服务,发现 ping 测试只中断了 1 或 2 个包即恢复正常,说明已有其他服务器接替 VIP 地址,并及时响应客户机请求。
② 重新启用主服务器的 Keepalived 服务,发现 ping 测试再次中断 1 或 2 个包即恢复正常,说明主服务器已恢复正常,并夺回 VIP 地址的控制权。

(2)web访问测试
# Keepalived01
systemctl start nginx
echo "web01" >/usr/share/nginx/html/index.html# Keepalived02
systemctl start nginx
echo "web02" >/usr/share/nginx/html/index.html

     在 keepalived 运行的主机上启动 nginx 服务并写入不通的测试页面内容
① 停止启用主服务器的 Keepalived 服务,再次访问上述 Web 服务,将看到由备用服务器 192.168.10.102 提供的网页文档,说明 VIP 地址已切换至备用服务器。
② 重新启用主服务器的 Keepalived 服务,再次访问上述 Web 服务,将看到重新由主服务器 192.168.10.101 提供的网页文档,说明主服务器已重新夺取 VIP 地址。

(3)查看日志记录

在执行主、备服务器故障切换的过程中,分别观察各自的 /var/log/messages 日志文件,可以看到 MASTER、SLAVE 状态的迁移记录。
① 主服务器中,Keepalived 服务状态先变为 “stop”,移除 VIP 地址,恢复后重新变为 MASTER。

less /var/log/messages

二:使用Keepalived实现双机热备

操作系统配置主机名IP服务
OpenEuler242C4Glb01192.168.10.101Keepalived/ipvsadm
OpenEuler242C4Glb01192.168.10.102Keepalived/ipvsadm
OpenEuler242C4Gweb01192.168.10.103Nginx
OpenEuler242C4Gweb02192.168.10.104Nginx
OpenEuler242C4Gnfs-server192.168.10.105nfs-utils/rpcbind

1.基础环境配置

# 关闭防火墙
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# 加载 ip_vs 模块
modprobe ip_vs# 查看 ip_vs 版本信息
cat /proc/net/ip_vs# 安装服务并备份模板配置文件
yum install ipvsadm keepalived -y
cp /etc/keepalived/keepalived.conf{,.bak}

2.配置主调度器

(1)全局配置,热备配置
vi keepalived.conf
global_defs {router_id HA_TEST_R1     //本路由器(服务器)的名称
}
vrrp_instance VI_1 {       //定义 VRRP 热备实例state MASTER     //热备状态,MASTER 表示主服务器interface ens33     //承载 VIP 地址的物理接口virtual_router_id 1     //虚拟路由器的 ID 号,每个热备组保持一致priority 100     //优先级,数值越大优先级越高advert_int 1     //通告间隔秒数(心跳频率)authentication {     //认证信息,每个热备组保持一致auth_type PASS     //认证类型auth_pass 123456     //密码字串}virtual_ipaddress {     //指定漂移地址(VIP),可以有多个192.168.10.100}
}
(2)web服务器池配置
vi /etc/keepalived/keepalived.conf
......  #省略部分信息
virtual_server 192.168.10.100 80 {    #虚拟服务器地址(VIP)、端口delay_loop 15        #健康检查的间隔时间(秒)lb_algo rr        #轮询(rr)调度算法lb_kind DR        #直接路由(DR)群集工作模式! persistence 60    #连接保持时间(秒),若启用请去掉!号protocol TCP        #应用服务采用的是 TCP 协议real_server 192.168.10.103 80 {    #第一个 Web 节点的地址、端口weight 1        #节点的权重TCP_CHECK {    #健康检查方式connect_port 80    #检查的目标端口connect_timeout 3    #连接超时(秒)nb_get_retry 3    #重试次数delay_before_retry 4    //重试间隔(秒)}}
real_server 192.168.10.104 80 {    #第二个 Web 节点的地址、端口weight 1        #节点的权重TCP_CHECK {    #健康检查方式connect_port 80    #检查的目标端口connect_timeout 3    #连接超时(秒)nb_get_retry 3    #重试次数delay_before_retry 4    //重试间隔(秒)
}
(3)重新启动Keepalived
systemctl restart keepalived

3.配置从调度器

vi /etc/keepalived/keepalived.conf
......  #省略部分信息
virtual_server 192.168.10.100 80 {    #虚拟服务器地址(VIP)、端口delay_loop 15        #健康检查的间隔时间(秒)lb_algo rr        #轮询(rr)调度算法lb_kind DR        #直接路由(DR)群集工作模式! persistence 60    #连接保持时间(秒),若启用请去掉!号protocol TCP        #应用服务采用的是 TCP 协议real_server 192.168.10.103 80 {    #第一个 Web 节点的地址、端口weight 1        #节点的权重TCP_CHECK {    #健康检查方式connect_port 80    #检查的目标端口connect_timeout 3    #连接超时(秒)nb_get_retry 3    #重试次数delay_before_retry 4    //重试间隔(秒)}}
real_server 192.168.10.104 80 {    #第二个 Web 节点的地址、端口weight 1        #节点的权重TCP_CHECK {    #健康检查方式connect_port 80    #检查的目标端口connect_timeout 3    #连接超时(秒)nb_get_retry 3    #重试次数delay_before_retry 4    //重试间隔(秒)
}
systemctl restart keepalived

4.配置web节点服务器

ip addr add 192.168.10.100/32 dev lo label lo:0
nmcli c reload
nmcli c up lo
ip router add local 192.168.10.100/30 dev lo       #不需要敲
router add -host 192.168.10.172 dev lo
永久生效:
vim /etc/rc.local
ip addr add 192.168.10.100/32 dev lo label lo:0  
:wq
chmod +x /etc/rc.localvim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p 

5.测试LVS+Keepalived高可用群集

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入剖析Java类加载机制:双亲委派模型的突破与实战应用

引言:一个诡异的NoClassDefFoundError 某金融系统在迁移到微服务架构后,突然出现了一个诡异问题:在调用核心交易模块时,频繁抛出NoClassDefFoundError,但类明明存在于classpath中。经过排查,发现是由于不同…

Go语言的context

Golang context 实现原理 本篇文章是基于小徐先生的文章的修改和个人注解,要查看原文可以点击上述的链接查看 目前我这篇文章的go语言版本是1.24.1 context上下文 context被当作第一个参数(官方建议),并且不断的传递下去&…

BERT、GPT-3与超越:NLP模型演进全解析

自然语言处理(NLP)领域近年来经历了前所未有的变革,从早期的统计方法到如今的深度学习大模型,技术的进步推动了机器理解、生成和交互能力的飞跃。其中,BERT和GPT-3作为两个里程碑式的模型,分别代表了不同的…

Kanass入门教程- 事项管理

kanass是一款国产开源免费、简洁易用的项目管理工具,包含项目管理、项目集管理、事项管理、版本管理、迭代管理、计划管理等相关模块。工具功能完善,用户界面友好,操作流畅。本文主要介绍事项管理使用指南。 1、添加事项 事项有多种类型 分…

2025年5月个人工作生活总结

本文为 2025年5月工作生活总结。 研发编码 一个项目的临时记录 月初和另一项目同事向业主汇报方案,两个项目都不满意,后来领导做了调整,将项目合并,拆分了好几大块。原来我做的一些工作,如数据库、中间件等&#xff…

⭐ Unity AVProVideo插件自带播放器 脚本重构 实现视频激活重置功能

一、功能概述 本笔记记录直接修改插件自带的场景播放其中 原始的 MediaPlayerUI 脚本,实现激活时自动重置播放器的功能。 我用的插件版本是 AVPro Video - Ultra Edition 2.7.3 修改后的脚本将具备以下特性: 激活 GameObject 时自动重置播放位置到开头 可配置是否在重置后自…

5.31 数学复习笔记 22

前面的笔记,全部写成一段,有点难以阅读。现在改进一下排版。另外,写笔记实际上就是图一个放松呢,关键还是在于练习。 目前的计划是,把讲义上面的高数例题搞清楚之后,大量刷练习册上面的题。感觉不做几本练…

什么是 WPF 技术?什么是 WPF 样式?下载、安装、配置、基本语法简介教程

什么是 WPF 技术?什么是 WPF 样式?下载、安装、配置、基本语法简介教程 摘要 WPF教程、WPF开发、.NET 8 WPF、Visual Studio 2022 WPF、WPF下载、WPF安装、WPF配置、WPF样式、WPF样式详解、XAML语法、XAML基础、MVVM架构、数据绑定、依赖属性、资源字典…

ROS2与Unitree机器人集成指南

Tested systems and ROS2 distro systemsROS2 distroUbuntu 20.04foxyUbuntu 22.04humblesrc目录上级才可以colcon build git clone https://github.com/unitreerobotics/unitree_ros2 Install Unitree ROS2 package 1. Dependencies sudo apt install ros-humble-rmw-cyclon…

深入探讨集合与数组转换方法

目录 1、Arrays.asList() 1.1、方法作用 1.2、内部实现 1.3、修改元素的影响 1.4、注意事项 2、list.toArray() 2.1、方法作用 2.2、内部实现 2.3、修改元素的影响 2.4、特殊情况 1、对象引用 2、数组copy 3、对比总结 4、常见误区与解决方案 5、实际应用建议…

深入理解交叉熵损失函数——全面推演各种形式

带你从不一样的视角综合认识交叉熵损失,阅读这篇文章,帮你建立其分类问题,对比学习,行人重识别,人脸识别等问题的联系,阅读这篇文章相信对你阅读各种底层深度学习论文有帮助。 引言 1. 重新理解全连接层&…

STM32之FreeRTOS移植(重点)

RTOS的基本概念 实时操作系统(Real Time Operating System)的简称就叫做RTOS,是指具有实时性、能支持实时控制系统工作的操作系统,RTOS的首要任务就是调度所有可以利用的资源来完成实时控制任务的工作,其次才是提高工…

MySQL connection close 后, mysql server上的行为是什么

本文着重讲述的是通过 msql client 连接到 mysql server ,发起 update 、 select 操作(由于数据量非常大,所以 update、select 操作都很耗时,即在结果返回前我们有足够的时间执行一些操作) 。 在客户端分别尝试执行 ctrl C 结束关闭 mysql c…

dvwa3——CSRF

LOW: 先尝试change一组密码:123456 修改成功,我们观察上面的url代码 http://localhost/DVWA/vulnerabilities/csrf/?password_new123456&password_conf123456&ChangeChange# 将password_new部分与password_conf部分改成我们想要的…

Linux 中常见的安全与权限机制

Linux 中常见的安全与权限机制主要包括以下几类,从文件系统权限到系统级访问控制,构建了多层次的安全保障体系。 🔐 一、文件权限与用户管理 1. 基本权限(rwx) r(read):读取文件内…

CSS篇-3

1. CSS 中哪些样式可以继承?哪些不可以继承? 可继承的样式: 与字体相关的样式,如:font-size、font-family、color 列表样式:list-style(如 UL、OL 的 list-style-type) 不可继承…

计算机网络物理层基础练习

第二章 物理层 填空题 从通信双方信息交互的方式来看,通信的三种基本方式为单工、半双工和全双工。其中,单工数据传输只支持数据在一个方向上传输,全双工数据传输则允许数据同时在两个方向上传输。最基本的带通调制方法包括三种&#xff1a…

Redis7底层数据结构解析

redisObject 在 Redis 的源码中,Redis 会将底层数据结构(如 SDS、hash table、skiplist 等)统一封装成一个对象,这个对象叫做 redisObject,也简称 robj。 typedef struct redisObject {unsigned type : 4; // 数…

华为OD机试_2025 B卷_静态扫描(Python,100分)(附详细解题思路)

题目描述 静态扫描可以快速识别源代码的缺陷,静态扫描的结果以扫描报告作为输出: 1、文件扫描的成本和文件大小相关,如果文件大小为N,则扫描成本为N个金币 2、扫描报告的缓存成本和文件大小无关,每缓存一个报告需要…

【Java】在 Spring Boot 中连接 MySQL 数据库

在 Spring Boot 中连接 MySQL 数据库是一个常见的任务。Spring Boot 提供了自动配置功能,使得连接 MySQL 数据库变得非常简单。以下是详细的步骤: 一、添加依赖 首先,确保你的pom.xml文件中包含了 Spring Boot 的 Starter Data JPA 和 MySQ…