LVS+Keepalived群集实验

目录

Keepalived 是什么

Keepalived 功能

Keepalived 模块 

 工作原理

脑裂现象及解决方案 

 脑裂

形成脑裂的原因 

解决脑裂的几种方法:

为了减少或避免HA集群中出现脑裂现象,我们可以采取以下措施:

Keepalived服务主要功能(详细)

1、管理LVS负载均衡软件

2、支持故障自动切换

3、实现LVS集群中节点的健康检查

4、实现LVS负载调度器、节点服务器的高可用性 

官方说法如下:

实验 :


Keepalived 是什么

Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题的一款检查工具

在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

Keepalived 功能

  • 支持单点故障自动切换 (Failover)

Keepalived可以实现任意两台主机之间,例如:Master和Backup主机之间的故障转移和自动切换,这个主机可以是普通的不能停机的业务服务器,也可以是LVS负载均衡,Nginx反向代理这样的服务器。

Keepalived高可用功能实现的简单原理为,两台主机同时安装好Keepalived软件并启动服务,开始正常工作时,由角色为Master的主机获得所有资源并对用户提供服,角色为Backup的主机为Master主机的热备,当角色为Master的主机失效或出现故障时,角色为Backup的主机将自动接管Master主机的所有工作,包括接管VIP资源及相应资源服务,当角色为Master的主机故障修复后,又会自动接管回他原来处理的工作,角色Bachup的主机则同时释放Master主机时它接管的工作,此时,两台主机将恢复到最初启动时各自的原始及工作状态

  • 支持节点健康检查状态

Keepalived可以通过在自身的Keepalived.conf文件里配置LVS的节点IP和相关参数实现对LVS的直接管理;除此之外,当LVS集群中的某一个甚至是几个节点服务器同时发生故障无法提供服务时,Keepalived服务会自动将失效的节点服务器从LVS的正常转发队列中清除出去,并将请求调度到别的正常节点服务器上,从而保证最终用户的访问不受影响;当故障的节点服务器被修复以后,Keepalived服务又会自动地把它们加入到正常转发队列中,对客户提供服务

  • 节点服务器的高可用性 —— HA

Keepalived 模块 

  • core:核心模块;负责主进程启动、维护及全局配置文件的加载和解析
  • vrrp:来实现vrrp的协议
  • check:健康检查;端口及URL检查的方式

 工作原理

 Keepalived 高可用之间是通过VRRP协议来实现LVS高可用方案,从而解决静态路由的单点故障的问题

        VRRP是通过竞选的来确定主备,主优先级高于备,因此工作时主优先获得所有资源,备节点处于等待状态;当备服务器收不到主服务器VRRP信息时,代表主服务器故障,于是备节点就会接管主节点资源(VIP)然后顶替主节点对外提供服务,实现高可用性(HA)

        在Keepalived 服务之间,只有作为主的服务器会一直发送VRRP广播包,告诉备服务器还在,此时备不会去抢占主;当主不可用的时候,即备要监听不到主发送的广播包时,它就会启动相关服务来去接管资源,保证业务的连续性,接管速度最快小于1秒

脑裂现象及解决方案 

 脑裂

当MASTER节点出现网络堵塞等现象时,BACKUP节点因无法及时检测到MASTER节点的heartbeat而认为MASTER节点已经挂掉了,就抢来了MASTER节点的VIP,并接管了MASTER节点的资源;MASTER节点认为自己还是正常的

这就出现了同一个服务集群中,同一个VIP地址同时飘在两个节点上的现象,即产生了两个MASTER节点;正常情况下是一个节点对外提供服务,现在也变成了两个节点能同时被用户访问到,对于一个集群同时存在两个MASTER状态的现象,我们称之为脑裂

形成脑裂的原因 

  1. 高可用集群服务器队列之间的心跳线链路发生了故障,如心跳线的断裂、老化等导致各节点之间无法正常通信;
  2. 集群服务器队列之间的IP配置发生了冲突;
  3. 网卡或交换机等负责连接心跳线的设备发生了故障;
  4. 高可用服务器上未禁止iptables防火墙规则的生成,导致心跳消息无法传输;
  5. 在同一个VRRP实例中,各节点上的virtual_router_id设置的参数不同;
  6. 开启了抢占模式,但是未设置抢占延时;

解决脑裂的几种方法:

为了减少或避免HA集群中出现脑裂现象,我们可以采取以下措施:

  1. 添加冗余心跳线,如双线条线等;
  2. 启动“智能”磁盘锁,只有正在提供服务的MASTER节点才能锁住或者解锁共享磁盘,当MASTER节点出现了短暂的网络堵塞等情况时会自动加锁,BACKUP节点也无法接管资源,只有当MASTER出现故障无法提供服务时才会自动解锁共享磁盘,并交由BACKUP节点接管
  3. 设置仲裁机制,例如出现检测不到心跳线的情况时,MASTER节点和BACKUP节点都去ping一下网关IP,如果ping不通则主动释放资源或者放弃抢占资源;
  4. 通过脚本来监控和监测节点是否处于正常工作状态,如果MASTER节点出现了异常,并在脚本设定的期限内无法恢复正常,则杀死当前MASTER的服务进程,将资源交由BACKUP节点来接管

Keepalived服务主要功能(详细)

1、管理LVS负载均衡软件

 Keepalive可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置以及控制服务的启动、停止功能。

2、支持故障自动切换

  1. Keepalived可以实现任意两台主机之间,例如:Master和Backup主机之间的故障转移和自动切换,这个主机可以是普通的不能停机的业务服务器,也可以是LVS负载均衡,Nginx反向代理这样的服务器。
  2. Keepalived高可用功能实现的简单原理为,两台主机同时安装好Keepalived软件并启动服务,开始正常工作时,由角色为Master的主机获得所有资源并对用户提供服,角色为Backup的主机为Master主机的热备,当角色为Master的主机失效或出现故障时,角色为Backup的主机将自动接管Master主机的所有工作,包括接管VIP资源及相应资源服务,当角色为Master的主机故障修复后,又会自动接管回他原来处理的工作,角色Bachup的主机则同时释放Master主机时它接管的工作,此时,两台主机将恢复到最初启动时各自的原始及工作状态。

3、实现LVS集群中节点的健康检查

Keepalived可以通过在自身的Keepalived.conf文件里配置LVS的节点IP和相关参数实现对LVS的直接管理;除此之外,当LVS集群中的某一个甚至是几个节点服务器同时发生故障无法提供服务时,Keepalived服务会自动将失效的节点服务器从LVS的正常转发队列中清除出去,并将请求调度到别的正常节点服务器上,从而保证最终用户的访问不受影响;当故障的节点服务器被修复以后,Keepalived服务又会自动地把它们加入到正常转发队列中,对客户提供服务。
 

4、实现LVS负载调度器、节点服务器的高可用性 

一般企业集群需要满足三个特点: 负载均衡、健康检查、故障切换 ,使用LVS+Keepalived完全可以满足需求。

keeplived的检查方式

  • ping方式检查(不全面)

  • 基于脚本检查(周期检查master服务器的服务是否停止,停止之后使用停止keeplived,进行漂移,并邮件告警)

官方说法如下:

Keepalived 是一个开源的软件框架,为 Linux 系统提供高可用性和负载均衡功能。它通常用于网络环境中,以确保即使承载关键服务(如 Web 服务器或数据库)的服务器之一或多个发生故障,这些关键服务仍然可用。Keepalived 通过采用虚拟路由冗余协议(VRRP)和健康检查机制来实现这一目标。

以下是其主要特点:

  1. 高可用性(HA): Keepalived 允许多台服务器在故障转移配置中协同工作。一台服务器充当主服务器,其他服务器充当备份。如果主服务器不可用,其中一台备份服务器将接管,以确保持续的服务。

  2. 虚拟路由冗余协议(VRRP): VRRP 是一种网络协议,为路由功能提供自动故障转移。Keepalived 实现了 VRRP,创建一个虚拟 IP 地址,这个虚拟 IP 在活动服务器之间共享。客户端通过此虚拟 IP 访问服务,实现服务器之间的无缝故障转移。

  3. 健康检查: Keepalived 持续监控其管理的服务器和服务的健康状况。它可以执行各种健康检查,如执行 ping、连接到特定端口或执行自定义脚本。如果服务器或服务未通过这些检查,Keepalived 将触发故障转移过程。

  4. 负载均衡: Keepalived 还可以在多台服务器之间分配传入的流量,有助于平衡负载,防止任何单个服务器过载。此功能特别有助于保持一致的性能并防止拥塞。

  5. 配置灵活性: Keepalived 通过简单的配置文件提供配置选项。管理员可以自定义设置,如优先级、定时器、健康检查方法等。

Keepalived 通常用于系统的正常运行时间和可用性至关重要的场景,例如数据中心、Web 托管环境和网络基础设施。需要注意的是,虽然 Keepalived 是一个强大的工具,但需要正确配置和理解其功能,以确保有效的高可用性和负载均衡。

实验 :

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

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

相关文章

数学建模(五)非线性规划

课程推荐: 13 非线性规划算法在数学建模中的应用与编程实现_哔哩哔哩_bilibili 一、非线性规划模型 如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。一般说来,解非线性规划要比解线性规划问题困难得多。而且&am…

C语言日常刷题 1

文章目录 题目答案与解析1234.5.6. 题目 1、执行下面程序,正确的输出是( ) int x5,y7; void swap() { int z; zx; xy; yz; } int main() { int x3,y8; swap(); printf(“%d,%d\n”,x, y); return 0; } A: 5,7 B: 7,5 C: 3,8 D: 8…

【PHP】PHP入门指南:从基础到进阶

PHP(Hypertext Preprocessor)是一种广泛使用的服务器端脚本语言,尤其在Web开发领域有着重要的地位。本文旨在为初学者提供一份详尽的PHP入门指南,帮助您了解PHP的基础知识和语法,掌握基本的编程技巧,并熟悉…

2023年国赛数学建模思路 - 案例:退火算法

文章目录 1 退火算法原理1.1 物理背景1.2 背后的数学模型 2 退火算法实现2.1 算法流程2.2算法实现 建模资料 ## 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 退火算法原理 1.1 物理背景 在热力学上&a…

iOS 17 及 Xcode 15.0 Beta7 问题记录

1、iOS 17 真机调试问题 iOS 17之后,真机调试Beta版本必须使用Beta版本的Xcode来调试,用以前复制DeviceSupport 方式无法调试,新的Beta版本Xcode中,已经不包含 iOS 17目录。如下图: 解决方案: 1&#x…

vim+ctags使用

vimctags使用_tiefanhe的博客-CSDN博客 Ubuntu下安装Ctags 只需使用apt-get install ctags即可 熟练的使用ctags仅需记住下面七条命令: 1. $ ctags–R * ($ 为Linux系统Shell提示符) 2. $ vi –t tag(请把tag替换为您欲查找的变量或函数名) …

多数元素00

题目链接 多数元素 题目描述 注意点 给定的数组总是存在多数元素多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素 解答思路 初始想到使用map存每个元素和元素出现的次数,但是时间和空间都不理想因为本题给定的数组总是存在多数元素,使用投票算…

GitLab-CI 指南

GitLab CI 指南 前置工作 部署GitLab 部署GitLab-Runner 注册Runner到GitLab docker exec -it gitlab-runner bash # 进入容器 gitlab-runner register #调用register命令开始注册 # 在Gitlab Setting中找到Runners,如下图所示Enter the GitLab instance URL (for example, …

高品质音乐下载命令行工具Musicn

又到了小苏同学的生日🎂,宝贝,生日快乐!祝永远健康、快乐、心想事成! 什么是 Musicn ? Musicn 是一个可播放及下载高品质🎵音乐🎵的命令行工具。支持咪咕、酷我、酷狗和网易云的服务…

C#设计模式之--六大原则 开闭原则

设计模式六大原则是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。它们不是要我们刻板的遵守,而是根据实际需要灵活运用。只要对它们的遵守程度在一个合理的范围内,努为做到一个良好的设计。本文主要介绍一下.NET(C#)…

《中国区块链发展报告(2023)》发布 和数集团推动区块链发展

北京区块链技术应用协会与社会科学文献出版社日前在京共同发布《区块链蓝皮书:中国区块链发展报告(2023)》。蓝皮书归纳梳理了2022年区块链产业发展现状及趋势,并结合行业热点Web3.0、AIGC,探讨我国区块链发展的热点话…

变动的Python爬虫实现

在电商时代,了解商品价格的变动对于购物者和卖家来说都非常重要。本文将分享一种基于Python的实时监控电商平台商品价格变动的爬虫实现方法。通过本文的解决方案和代码示例,您将能够轻松监控商品价格,并及时做出决策。 一、了解需求和目标 在…

GB28181/GB35114视频汇聚平台LiveGBS中如果修改默认admin用户的用户名以及其他用户的用户名

GB28181/GB35114流媒体服务搭建 搭建入口,解压启动即用:https://www.liveqing.com/docs/download/LiveGBS.html 一、功能说明 提供用户管理及 Web 可视化页面管理,开源的前端页面源码; 提供设备状态管理,可实时查看设备是否掉线…

让你对es有一个初步的了解

首先es在海量数据的搜索能力非常好,es你可以把他看成一个搜索引擎数据库,他是个非关系型数据库。他的语法有很大的不同,好像都是json风格的。还有一点需要说的就是es 的数据是存在硬盘上的, 我们先来看一下mysql和es的区别吧。一…

vue中使用echarts三维的项目

需要安装 echarts 同时引入 echarts-gl 我安装的版本: "echarts": "^5.3.2", "echarts-gl": "^2.0.9", 效果 : 安装后main.js引入 import Vue from "vue"; import * as echarts from "echart…

实验八 网卡驱动移植

【实验目的】 掌握 Linux 内核配置的基本方法,完成对网卡驱动、NFS 等相关功能的配置 【实验环境】 ubuntu 14.04 发行版FS4412 实验平台交叉编译工具:arm-none-linux-gnueabi- 【注意事项】 实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行&…

ChatGPT、Google Bard、Claude2、新BING哪一款人工智能聊天机器人适合自己

人工智能聊天机器人正在提高数无数专业人士的工作效率。下面我们就来看看目前最流行的几款强大的人工智能工具,以及它们具体如何帮助到你。 今年7月AI圈最大的动静之一便是AI初创公司Anthropic发布了其AI聊天机器人Claude最新版本——Claude2。该聊天机器人对标Open…

大数据课程K6——Spark的Shuffle详解

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的定义&&特点&&目的&&优缺点; ⚪ 掌握Spark的相关参数配置; ⚪ 掌握Hadoop的插件配置; 一、Spark Shuffle详解 1. 概述 Shuffle,就是洗牌。之所以…

力扣 337. 打家劫舍 III

题目来源:https://leetcode.cn/problems/house-robber-iii/description/ C题解1(来源代码随想录):本题一定是要后序遍历,因为通过递归函数的返回值来做下一步计算。本题关键是要讨论当前节点抢还是不抢。如果抢了当前节…

关于数组和指针的笔试题解析(详解)

文章目录 说明🚩数组笔试题💻一维数组📄练习:💡解析 💻字符数组📄练习1:💡解析📄练习2:💡解析📄练习3:&#x…