Keepalived秘籍保障系统高可用的终极武器

news2024/11/16 20:59:12

目录

一 高可用集群

1.1 集群类型

1.2 实现高可用

1.3 vrrp(Virtual Router Redundancy Protocol)

二 keepalived 部署

2.1 简介

2.2 keepalived 架构

2.3 keepalived 搭建

三 keepalived 应用示例

3.1 实现master/slave的keepalived单主架构

3.2 抢占技术和非抢占技术

3.2.1 非抢占模式(nopreempt)

3.2.2 抢占延时模式(preempt_delay)

3.3 VIP单播配置

3.4 keepalived 通知脚本配置

3.5 master/master的keepalived双主架构

3.6 实现ipvs的高可用性

 


一 高可用集群

1.1 集群类型

  1. LB(负载均衡类):由多个主机组成,每个主机只负责一部分访问,提高系统的响应能力,尽可能快的处理访问,以低延迟为目的,做到高并发,高负载。
  2. HA(高可用类):提高系统的可靠性,尽可能避免服务中断,一般采用主备的方式,在出现问题能自动快速进行切换,以可靠性为目标。
  3. HPC(高性能类):提高cpu运算效率,扩展硬件资源,一般指超级计算机这一类,例如云计算。

1.2 实现高可用

提升系统高可用解决方案:降低平均故障时间

解决方案:建立冗余机制

active/passive  主备

在这种模式只有一个节点(主节点)处于活动状态,当主节点出现问题时,备节点被激活接管主节点的工作

active/active  双主

两个节点都处于活动状态,他们分别处理不同的数据集,分担不同的工作负载

active --> HEARTBEAT --> passive

主备模式的变体,其中活动的主节点定期向备节点发送心跳信号(HEA),备份节点在一定时间内没有接收到心跳信号,默认主节点发生异常,接管主节点工作

active HEARTBEAT active

在这种模式下,两个活动节点互相发送心跳检测,监督对方状态,如果其中一个节点发生故障,另外一个节点承担起对方节点的工作

1.3 vrrp(Virtual Router Redundancy Protocol)

VRRP:Virtual Router Redundancy Protocol  虚拟路由冗余协议,解决静态网关单点风险

vrrp相关术语:

虚拟路由器:Virtual Router

虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器

VIP:Virtual IP

VMAC:Virutal MAC (00-00-5e-00-01-VRID)

物理路由器:

master:主设备

backup:备用设备

priority:优先级

vrrp相关技术:心跳 优先级  抢占式   非抢占式

二 keepalived 部署

2.1 简介

它主要通过虚拟路由器冗余协议(VRRP)来实现故障转移和负载均衡。Keepalived 能够检测服务器的状态,确保服务的持续可用性。

    1.监控服务器的健康状况:通过各种方式(如网络连接、服务端口检测等)来判断服务器是否正常运行

    2.实现虚拟 IP(VIP)的漂移:当主服务器出现故障时,自动将 VIP 切换到备份服务器上,使得服务能够不间断地对外提供

    3.与其他服务集成:能够与常见的服务(如 HTTPD、Nginx 等)配合工作,增强服务的可靠性。

    4.配置简单灵活:通过修改配置文件,可以轻松地调整 Keepalived 的参数和行为。

2.2 keepalived 架构

用户空间核心组件:

vrrp stack:VIP消息通告

checkers:监测real server

system call:实现 vrrp 协议状态转换时调用脚本的功能

SMTP:邮件组件

IPVS wrapper:生成IPVS规则

Netlink Reflector:网络接口

WatchDog:监控进程

控制组件:提供keepalived.conf 的解析器,完成Keepalived配置

IO复用器:针对网络目的而优化的自己的线程抽象

内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限

2.3 keepalived 搭建

                                            keepalived 环境准备
实验要求      chrony/ntp时间同步    关闭防火墙和selinux                                                                                  
相关软件

软件包名:keepalived     主程序文件:/usr/sbin/keepalived    

主程序文件:/usr/sbin/keepalived   

配置文件示例:/usr/share/doc/keepalived/

keepalived 安装:

搭建测试环境

下载启动keepalived,两台配置一样

然后改名字,另外一台一样

三 keepalived 应用示例

3.1 实现master/slave的keepalived单主架构

配置文件拷贝到ka2上,ka2为备份设备,只需到ka2里做稍微修改

然后注释点strict重启keepalived服务 在向rs配置临时ip

ka1优先级为100,ka2为80,并且keepalived默认为抢占,所以效果应为,ka1断了之后,往ka2浮动vip

远程登陆ka1停掉服务,看结果是否ip消失

然后查看ka2的,如果有的话证明设备故障切换成功,如果重启ka1的话,vip返回,即配置成功,并且证明keepalived默认是抢占的

重启ka1服务

vip返回

3.2 抢占技术和非抢占技术

3.2.1 非抢占模式(nopreempt)

非抢占模式,意思就是当ka1挂掉之后,vip切换到ka2上,然后等ka1恢复之后,不能立即切换到ka1上,只能等ka2挂掉之后,才能切换,目的是为了,反复切换导致网络抖动,不稳定

  1. 需要将服务器,均配置为backup状态,然后重启,再到backup上加上nopreempt选项
  2. vip在ka1上,此时断掉服务
  3. vip飘到ka2上,按照对实验的设想,重启ka1之后,应该不会回到ka1上,如果还在ka2就代表试验成功                

3.2.2 抢占延时模式(preempt_delay)

  1. 配置ka1,ka2的延迟计划
  2. 重启服务之后,一段时间完,抢vip地址

3.3 VIP单播配置

  1. 在ka1和ka2上配置文件里面加上单播的配置,举例ka1,ka2类似
  2. 实验结果展现

3.4 keepalived 通知脚本配置

  1. 创建通知脚本
  2. 安装邮件发送工具 
    dnf install mailx -y
    #进入配置文件,进行配置
    vim /etc/mail.rc
    

  3. 结果展示

3.5 master/master的keepalived双主架构

  1. 在10和20主机分别写入互为主备的规则
  2. 测试

3.6 实现ipvs的高可用性

1 两台rs主机安装httpd

2 临时配置ip地址,往默认界面加内容,在重启,rs2也一样

3 分别做arp抑制,rs2同样操作

4 ka1和ka2配置主机策略

5 检查最终结果

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

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

相关文章

韩顺平老师Python学习笔记【持续更新...】

1、Python语言概述 1.1、转义字符 1.1.1、常用的转义字符 常用转义字符列表 \t一个制表位,实现对齐的功能\n换行符\\一个\\一个\"一个"\r一个回车 1.2、注释 1.2.1、单行注释 # 其他 1.2.2、多行注释 三个单引号 xxx 或 三个双引号 "…

ESLint详解及在WebStorm中的应用

ESLint是一个开源的JavaScript代码检查工具,用于识别和报告JavaScript代码中的模式问题。它可以帮助开发者遵循一定的编码规范和最佳实践,提高代码质量和可维护性。 ESLint的工作原理是通过插件和配置文件来定义一系列规则,对JavaScript代码…

Jakarta Servlet 到 SpringMVC

Jakarta EE(曾被称为Java EE)是Java平台企业版(Java Platform Enterprise Edition)的下一代版本,它在Oracle将Java EE的开发和维护交给Eclipse Foundation后得以重生,并更名为Jakarta EE。Jakarta EE保留了…

Redis面试问题(牛客整理版)未完成

文章目录 参考资料出处 缓存过期时间缓存过期删除定期删除 从库处理过期 key持久化过期时间如何确定 缓存淘汰策略LRULFU 缓存模式Cache Aside删除缓存延迟双删 缓存一致性问题解决缓存穿透、击穿和雪崩问题缓存穿透回写特殊值布隆过滤器 缓存击穿Singleflight 缓存雪崩过期时间…

k3s中通过kuboard搭建rabbitmq

如果仅仅是单个rabbitmq容器在单台服务上运行,并不是搭建rabbitmq集群,则不需要使用到service。仅仅通过容器暴露端口到宿主机的形式。 1、拉取 RabbitMQ 镜像 我这边选择的版本是 rabbitmq:3.12-management在终端中执行以下命令以拉取 rabbitmq:3.12-m…

两道关于xssDOM型的案例

第一道 代码分析:data是要插入到html页面的标签及属性,下面的for循环的作用则是将你插入的标签里的属性给全部删除。 图中,把我img的src属性给删掉了。 但当我多写几个属性时,奇怪的事情发生了。 他只把我得src给删掉了&#xff…

SQL基础教程(八)SQL高级处理

※食用指南:文章内容为《SQL基础教程》系列学习笔记,该书对新手入门非常友好,循序渐进,浅显易懂,本人主要用来补全学习MySQL中未涉及的部分,便于刷题和做项目。 官方电子书:《SQL基础教程》第2…

掌握TCP连接管理与流量控制:从零开始

文章目录 1. TCP连接管理1.1 三次握手(Three-way Handshake)1.2 四次挥手(Four-way Handshake)1.3 TCP连接管理的重要性 2. TCP流量控制2.1 滑动窗口(Sliding Window)2.2 拥塞控制(Congestion C…

【ARM+Codesys 客户案例 】基于RK3568/A40i/STM32+CODESYS开发的控制器在自动输送分拣系统上的应用,支持定制

2021年“京东618” 累计下单金额超3438亿元,再次刷新纪录! 从下单到收货,各种货品均可在短短几天内通过四通八达的物流网络送达全国任何一个家庭。电子商务和快递物流的迅猛发展对仓储、分拣、配送效率和准确性均提出了更高的要求,加速了智能物流的发展。…

Java Resilience4j-RateLimiter学习

一. 介绍 Resilience4j-RateLimiter 是 Resilience4j 中的一个限流模块&#xff0c;我们对 Resilience4j 的 CircuitBreaker、Retry 已经有了一定的了解&#xff0c;现在来学习 RateLimiter 限流器&#xff1b; 引入依赖&#xff1b; <dependency><groupId>io.g…

序列建模之循环和递归网络 - 递归神经网络篇

序言 在序列建模的广阔领域中&#xff0c;递归神经网络&#xff08; Recursive Neural Network, RNN \text{Recursive Neural Network, RNN} Recursive Neural Network, RNN&#xff09;&#xff0c;注意此处的 RNN \text{RNN} RNN与常用于序列处理的循环神经网络在命名上有所…

【生成式人工智能-十五-经典的影像生成方法-GAN】

经典的影像生成方法-GAN GANDiscriminatorGenerator还需要加入额外信息么 GAN可以加在其他模型上面我们可以用影像生成模型做什么&#xff1f; 前面讲过VAE和Flow-based以及diffusion Model &#xff0c;今天讲最后一种经典的生成方法GAN。 GAN 前面讲的几种模型都是用加入额外…

红黑树剖析(插入部分)

文章目录 红黑树插入节点情景分析情景1&#xff1a;红黑树为空树情景2&#xff1a;插入节点的Key已存在情景3&#xff1a;插入节点的父节点为黑色节点情景4&#xff1a;插入节点的父节点为红色情景4.1 叔叔节点存在并且为红色节点情景4.2 叔叔节点存在而且是黑色节点情景4.3 叔…

xss 一些例子

目录 XSS 1.Ma Spaghet!​编辑 2.Jefff​编辑 3.Ugandan Knuckles​编辑 4.Ricardo Milos​编辑 5.Ah Thats Hawt​编辑 6.Ligma​编辑 7.Mafia​编辑 简单解法就是换一个函数 作者得原意解法 8.Ok, Boomer​编辑 XSS 1.Ma Spaghet! 这里接收了一个somebody参数&…

Chain of Thought (CoT) 系列论文:大模型思维链,提升 LLM 的推理能力

文章目录 1. COT&#xff1a;Chain of Thought1. 研究背景2. CoT的原理3. CoT Prompt 1. COT&#xff1a;Chain of Thought COT 是 2022.01 由 google 提出的针对提升 LLM 的推理能力的 Prompt Engineering 方法。 paper&#xff1a; Chain-of-Thought Prompting Elicits Re…

一器多能,数据文件处理的瑞士军刀 — dasel

Dasel&#xff1a;简化数据操作&#xff0c;提升开发效率。- 精选真开源&#xff0c;释放新价值。 概览 dasel是一款专为开发者设计的高效数据文件操作工具&#xff0c;它允许用户通过统一的接口对JSON、TOML、YAML、XML和CSV等格式的文件进行数据选择、插入和删除操作。这款工…

Kafka基本概念及消费流程

Kafka是消息中间件的一种&#xff0c;相较于其他消息中间件&#xff0c;其以极高的吞吐量闻名&#xff0c;常用于构建实时数据管道和流应用&#xff0c;能够处理高吞吐量的数据流。以下是Kafka中的重要概念&#xff1a; 1. 生产者 生产者是向Kafka主题发送消息的客户端。生产…

登录 k8s-Dashboard 显示 Your connection is not private

文章目录 一、背景二、解决方案 一、背景 部署好 kubernetes-Dashboard 后使用 master节点的 ipport 登录 Dashboard 显示 Your connection is not private 无论是 Edge 还是 Google Chrome 都是这样的情况 二、解决方案 点击网页空白处&#xff0c;英文输入法输入&#xf…

论文解读:LONGWRITER: UNLEASHING 10,000+ WORD GENERATION FROM LONG CONTEXT LLMS

摘要 现象&#xff1a;当前的大预言模型可以接受超过100,000个tokens的输入&#xff0c;但是却难以生成超过2000个token的输出。 原因&#xff1a;监督微调过程(SFT)中看到的样本没有足够长的样本。 解决方法&#xff1a; Agent Write&#xff0c;可以将长任务分解为子任务&a…

为什么MCU I2C波形中会出现的脉冲毛刺?

在I2C的波形中&#xff0c;经常会发现有这样的脉冲毛刺&#xff0c;会被认为是干扰或者器件不正常。 看到这个波形时&#xff0c;可以先数一下出现在第几个clock的位置&#xff0c;如果出现在第9个clock的低电平期间&#xff0c;就不是干扰或者器件异常导致。 在I2C的协议中&a…