Keepalived 深度解析:高可用性的精髓及实践指南

news2024/11/17 15:59:25

Keepalived 深度解析:高可用性的精髓及实践指南

  • Keepalived 深度解析:高可用性的精髓及实践指南
    • Keepalived 的工作原理
      • 1. VRRP 协议概述
      • 2. Keepalived 的角色
      • 3. VRRP 协议详解
    • Keepalived 的使用指南
      • 1. 安装 Keepalived
        • 使用 Yum 安装
        • 本地安装方式
      • 2. 配置 Keepalived
      • 3. 启动 Keepalived
      • 4. 监控 Keepalived
      • 5. 查看日志
    • 主从服务器配置和互相工作原理
      • 1. 主服务器配置
      • 2. 备份服务器配置
      • 3. 互相工作原理
    • 总结

Keepalived 深度解析:高可用性的精髓及实践指南

Keepalived 是一款开源软件,广泛用于提升系统可用性,特别是在负载均衡和虚拟 IP 地址管理方面。本篇博客将以更为详细的角度深入介绍 Keepalived 的工作原理,提供全面的配置和使用指南,并加入主从服务器的实践内容。

Keepalived 的工作原理

1. VRRP 协议概述

虚拟路由冗余协议(VRRP) 是 Keepalived 实现高可用性的核心协议。通过创建一个虚拟路由器组,VRRP 允许多个节点合作,实现负载均衡和冗余备份的效果。

在 VRRP 中,节点通过协商选举一个主节点,该节点负责处理传入流量,其他节点则处于备份状态。主节点定期发送 VRRP 心跳包,备份节点则监测主节点的状态。当主节点失联时,备份节点会接管虚拟 IP 地址,确保服务的持续可用。

2. Keepalived 的角色

Keepalived 引入了两个关键的节点角色:

  • 主节点(Master): 主节点是负责处理流量的节点。它定期发送心跳包以维持主导地位。

  • 备份节点(Backup): 备份节点等待接管主节点的任务。一旦备份节点检测到主节点失联,它会发起接管过程,确保服务的连续性。

3. VRRP 协议详解

VRRP 协议工作过程包括以下几个关键步骤:

  • 选主过程: 启动后,节点通过协商选举一个主节点。这个过程考虑到节点的优先级和运行状态。

  • 心跳保活: 主节点定期发送 VRRP 心跳包,这有助于检测节点的健康状态。

  • 失联检测: 备份节点检测到主节点停止发送心跳包时,它会发起接管过程。

  • 接管过程: 备份节点接管主节点的任务,并将虚拟 IP 地址指向自己。这确保了服务在主节点故障时的平滑切换。

Keepalived 的使用指南

1. 安装 Keepalived

使用 Yum 安装
sudo yum install keepalived
本地安装方式
  1. 下载 Keepalived 源码包:
wget http://keepalived.org/software/keepalived-X.XX.XX.tar.gz
  1. 解压并进入目录:
tar -zxvf keepalived-X.XX.XX.tar.gz
cd keepalived-X.XX.XX
  1. 编译和安装:
./configure
make
sudo make install

2. 配置 Keepalived

主要的配置文件位于 /etc/keepalived/keepalived.conf。以下是一个详细的配置示例:

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass mypassword
    }
    virtual_ipaddress {
        192.168.1.100
    }
}

在这个配置中:

  • state MASTER 表示这是主节点,备份节点需要设置为 state BACKUP
  • interface eth0 指定了网络接口。
  • virtual_router_id 是一个用于标识 VRRP 路由器组的唯一 ID。主从服务器需要保持一致。
  • priority 是节点的优先级,主节点的优先级通常较高。
  • advert_int 是 VRRP 心跳包的发送间隔。
  • authentication 部分定义了认证信息。
  • virtual_ipaddress 定义了虚拟 IP 地址。

3. 启动 Keepalived

配置完成后,启动 Keepalived 服务:

sudo service keepalived start

4. 监控 Keepalived

通过以下命令监控 Keepalived 的状态:

sudo service keepalived status

5. 查看日志

Keepalived 的日志通常位于 /var/log/messages/var/log/syslog。你可以使用以下命令来查看 Keepalived 的日志:

sudo cat /var/log/messages | grep Keepalived

或者

sudo cat /var/log/syslog | grep Keepalived

主从服务器配置和互相工作原理

1. 主服务器配置

在主服务器上,配置 Keepalived 时需要:

  • state 设置为 MASTER
  • 设置较高的优先级(priority)。
  • 定义虚拟 IP 地址。
  • 保持 virtual_router_id 与备份服务器一致。

2. 备份服务器配置

在备份服务器上,配置 Keepalived 时需要:

  • state 设置为 BACKUP
  • 设置较低的优先级(priority)。
  • 定义虚拟 IP 地址。
  • 保持 virtual_router_id 与主服务器一致。

3. 互相工作原理

主从服务器通过 VRRP 协议协同工作。主服务器负责处理流量,定期发送心跳包以维持主导地位。备份服务器则等待接管主服务器的任务。一旦备份服务器检测到主服务器失联,它会发起接管过程,确保服务的连续性。这种主从服务器配置和协作机制确

保了在主服务器故障时的平滑切换。

总结

Keepalived 通过实现 VRRP 协议,为系统提供了一种强大而灵活的方式,以确保服务的连续可用性。在实际应用中,根据具体需求进行配置和调优,以保证系统的高可用性。同时,通过主从服务器的配置和工作原理,实现了系统在主服务器故障时的无缝切换。查看日志可以帮助你及时发现并解决潜在的问题,确保系统平稳运行。

版权声明:
原创博主:牛哄哄的柯南
博主原文链接:https://keafmd.blog.csdn.net/
个人博客链接:https://www.keafmd.top/

看完如果对你有帮助,感谢点击下面的点赞支持!
[哈哈][抱拳]

在这里插入图片描述
加油!

共同努力!

Keafmd

感谢支持牛哄哄的柯南,期待你的三连+关注~~

keep accumulate for my dream【共勉】

                                                       ↓   ↓   ↓   ↓   ↓   ↓  

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

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

相关文章

电商系统设计到开发03 引入Kafka异步削峰

一、前言 系统设计:电商系统设计到开发01 第一版设计到编码-CSDN博客 接着上篇文章:电商系统设计到开发02 单机性能压测-CSDN博客 本篇为大制作,内容有点多,也比较干货,希望可以耐心看看 已经开发的代码&#xff0…

基于Python的全国主要城市天气数据可视化大屏系统

1 绪论 1.1 研究的目的与意义 近年来,气候变化引发全球范围内的关注。天气数据的采集和分析对于气候预测、生态环境保护等方面都起着至关重要的作用。同时,随着科技的不断发展,数据可视化已经成为了许多领域中不可或缺的一部分。基于此&…

外包干了9个月,技术退步明显.......

先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

解决 github.com port 443: Timed out 的问题

国内访问github.com总是那么不竟如人意,时而无法加载网页,时而等我们抽完了一根烟后,它还处于转圈的状态。 虽然国内有gitee.com等诸多的代码托管平台,但却鲜有国人愿意去呢?其中的缘由,想必也不用我多说&a…

机器学习 | 利用Pandas进入高级数据分析领域

目录 初识Pandas Pandas数据结构 基本数据操作 DataFrame运算 文件读取与存储 高级数据处理 初识Pandas Pandas是2008年WesMcKinney开发出的库,专门用于数据挖掘的开源python库,以Numpy为基础,借力Numpy模块在计算方面性能高的优势&am…

system_server进程创建流程

system_server 进程是 Zygote 进程 fork 出的第一个进程,它负责管理和启动整个 Framework 层,下面附上android系统启动流程图: 记得上一篇Zygote进程创建里面提到过,forckSystemServer创建system_server进程。 /frameworks/base/…

nginx负载均衡-轮询

实验使用ubuntu做主机 1.安装nginx 安装依赖 sudo apt install libgd-dev 下载nginx wget http://nginx.org/download/nginx-1.22.1.tar.gz 解压nginx tar -zvxf nginx-1.22.1.tar.gz 编译安装 cd nginx-1.22.1 编译并指定安装位置,执行安装之后会创建指定…

鸿蒙APP的应用场景

鸿蒙APP可以用于多种场合和设备类型,这是鸿蒙系统的分布式能力和多终端适配的优势。以下是一些鸿蒙APP的应用场景,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.智能手机和平板电脑&am…

【听力与言语医学中心系列科普16】听力检查之纯音听阈测定

当我们去医院向医生诉说我们耳朵有问题时,最常听到医生说的是“去做个测听”吧,那么什么是测听?做测听有什么作用呢? 一、什么是纯音测听纯音听力测试自1943年Bunch教授发表后,就被作为首选的测听方法。纯音测听是测试…

一键轻松,免费创造:QuickQR带你体验AI二维码的轻松生成!

当今时代,将信息快速转变为可扫描图案,以简化人们的生活和工作方式,二维码技术展现了它强大的功能。特别是在分享链接、联系信息或进行支付时,二维码已成为现代社会一个不可或缺的部分。本文将探讨生成AI二维码的一种工具&#xf…

Linux服务器配置与管理(第三次实验)

实验目的及具体要求 目的 1.熟悉Shell 脚本语法 2.掌握创建脚本的方法 3.掌握运行脚本的方法 4.掌握变量及表达式 5.掌握Shell 控制结构 6.掌握Shell 函数 任务 1.显示当前日期时间、执行路径、用户账户及所在的目录位置 2.判断一个文件是不是字符设备文件&#xff0…

首发:2024全球DAO组织发展研究

作者,张群(专注DAO及区块链应用研究,赛联区块链教育首席讲师,工信部赛迪特邀资深专家,CSDN认证业界专家,微软认证专家,多家企业区块链产品顾问) DAO(去中心化自治组织&am…

手把手教学:AD09制作BOM及小技巧

BOM(Bill of Material)物料清单,是以数据格式来描述产品结构的文件,即生产一件产品所需的子零件及其产品中零件数量的完全组合。这里生成BOM表用作对你制作的pcb板进行成本预估和制作生产资料文件。同时也是样品制作时&#xff0c…

2024.1.25 C++QT 作业

思维导图 练习题 1. 自己封装一个矩形类(Rect),拥有私有属性:宽度(width)、高度(height), 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void sh…

策略者模式-C#实现

该实例基于WPF实现,直接上代码,下面为三层架构的代码。 目录 一 Model 二 View 三 ViewModel 一 Model using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 设计模式练…

JavaWeb01--Tomcat

1、JavaWeb概述 Web开发是基于请求和响应的: 请求:浏览器(客户端)向服务器发送信息 响应:服务器向浏览器回送信息 请求和响应是成对出现的。 Web资源分类 所谓Web资源即放在Internet网上供外界访问的文件或程序&#x…

[java基础揉碎]break跳出循环的标签使用方式(continue同理)

语法: (1)break 语句可以指定退出哪层 (2)label1是标签,由程序员指定 (3)break 后指定到哪个label 就退出到哪里 (4)在实际的开发中,尽量不要使用标签(可读性会变差), 除非有业务逻辑需要必须使用迫不得已 (5)如果没有指定break,默认退出最近的循环体…

new mars3d.layer.WeiVectorTileLayer({在Mars3d官网个api搜索不到的说明

前景:new mars3d.layer.WeiVectorTileLayer({在Mars3d官网个api搜索不到的说明 说明: 可以下载示例git clone https://gitee.com/marsgis/mars3d-vue-example.git 参考api文档的Cesium.VectorStyle类,这个类可以在示例的thirdParty下面进行…

sql 行转列 日周月 图表统计

目录 目录 需求 准备 月 分析 按月分组 行转列 错误版本 正确版本 日 分析 行转列 周 分析 按周分组 行转列 本年 需求 页面有三个按钮 日周月,统计一周中每天(日),一月中每周(周),一年中每月(月),设备台数 点…

ROS2学习笔记(0)开坑声明

0.前提 在做racecar的过程中发现已经有不少的开发者和公司开始从ros1转向ros2的怀抱了,刚好寒假在家,我就顺带试试看能不能学点ros2,刚好我有两辆车和主板可以双线开工(是的,全是老师们赞助的,真的我哭死&…