Keepalived及其工作原理

news2024/9/22 21:22:30

目录

一、keepalived概述

1.1.1 管理LVS负载均衡软件

1.1.2 支持故障自动切换(failover)

1.1.3 实现LVS集中节点的健康检查(health checking)

1.1.4 实现LVS负载调度器 节点服务器的高可用性(HA)

二、keepalived 服务的工作原理

三、Keepalived体系主要模块及其作用

四、keepalived高可用故障切换转移原理

五、实验

1.LVS 部署

2.配置keeplived(主、备DR 服务器上都要设置)

3.设置虚拟网卡

另一台同理

4.启动 ipvsadm 服务

192.168.146.100

 192.168.146.20

调整 proc 响应参数,关闭Linux 内核的重定向参数响应

5 .配置节点服务器

上一篇博客

6.测试验证


一、keepalived概述

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

1.1.1 管理LVS负载均衡软件

keepalived可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS配置以及服务的启动 停止功能 这会使LVS应用更加简便

1.1.2 支持故障自动切换(failover)


两台已同时安装好keepalived并且启动服务

当启动的时候master主机获得所有资源并且对用户提供服务(请求)当角色backup的主机作为master热备

当master主机挂 了出现故障时,backup主机将自动接管master主机所有工作,包括接管VIP资源及相应资源服务

当master主机故障修复后,也会自动接管会它的原来处理的工作,

backup主机则同时释放master主机失效时接管的工作

此时此刻两台主机将恢复到最初的启动时各自的原始角色及工作状态

抢占模式:master从故障恢复后,会将VIP从BACKUP节点中抢占过来

非抢占模式:master从故障恢复后不抢占backu,backup升级为MASTER中的VIP

1.1.3 实现LVS集中节点的健康检查(health checking)


keepalived.conf文件配置LVS节点IP和相关参数来实现LVS直接管理

如果几个节点服务器同时发生故障无法提供服务,keepalived服务会自动将那个失效节点服务器从LVS正常转发列中清除出去,并将请求调度到别的正常节点服务器上,从而保证最终用户的访问不受到影响:当故障的节点服务器修复以后,keeplived服务又会自动把他们加入到正常转发列中,对外面客户提供服务

1.1.4 实现LVS负载调度器 节点服务器的高可用性(HA)

企业集群需要满足的三个特点:负载均衡 健康检查 故障切换

二、keepalived 服务的工作原理

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

三、Keepalived体系主要模块及其作用

keepalived体系架构中主要有三个模块,分别是core、check和vrrp

core模块

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

是来实现VRRP协议的。
check模块

负责健康检查,常见的方式有端口检查及URL检查。

四、keepalived高可用故障切换转移原理

keepalived高可用服务集群之间的故障切换转移,是通过VRRP(虚拟路由器冗余协议)来实现的

在keepalived服务正常工作时,主(master)节点会不断地向(backup)节点发送(多播的方式)心跳消息,用于告诉备节点告诉自己还活着,当主节点发生故障时,就无法发送心跳消息,备节点也就因此无法检测到来自主节点的心跳,于是调用自身的接管程序,接管主节点的IP资源及服务。而当主节点恢复时,备节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色


五、实验

1.LVS 部署

systemctl stop firewalld.service
setenforce 0

yum -y install ipvsadm keepalived
modprobe ip_vs
cat /proc/net/ip_vs

 

2.配置keeplived(主、备DR 服务器上都要设置)

cd /etc/keepalived/

 cp keepalived.conf keepalived.conf.bak

vim keepalived.conf

3.设置虚拟网卡

vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.146.188
NETMASK=255.255.255.255

重启网卡 systemctl restart network

ifup  ens33:0

systemctl start keepalived
ip addr    

 

另一台同理

4.启动 ipvsadm 服务

192.168.146.100

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -C   ##清空规则
ipvsadm -A -t 192.168.146.188:80 -s rr
ipvsadm -a -t 192.168.146.188:80 -r 192.168.146.110:80 -g
ipvsadm -a -t 192.168.146.188:80 -r 192.168.146.111:80 -g

 ipvsadm -ln

 192.168.146.20

调整 proc 响应参数,关闭Linux 内核的重定向参数响应

vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

 sysctl -p

 

5 .配置节点服务器

上一篇博客

6.测试验证

在客户端访问 http://192.168.146.188/ 
再在主服务器关闭 keepalived 服务后再测试, systemctl stop keepalived

 

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

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

相关文章

Stable Diffusion 使用lora-scripts WebUI训练LoRA模型

如果对代码使用有困难的小伙伴可以直接使用WebUI版的LoRA模块进行训练操作。不管是训练人物,场景,风格,还是服装都是一套通用的模式,仅仅是使用不同的数据集得到的结果不同。 文章目录 lora-scripts WebUI的安装LoRA训练过程SD切分…

【贪心】CF1845 C

Problem - C - Codeforces 题意&#xff1a; Code&#xff1a; #include <bits/stdc.h>//#define int long longusing namespace std;const int mxn3e510; const int mxe1e510; const int mod1e97; const int Inf0x3f3f3f3f;string s,l,r;int M;void solve(){s.clear…

前端部署--入门Vercel

Vercel Vercel 你可以理解为一个部署工具&#xff0c;支持部署静态网页和Node服务&#xff0c;部署后你还可以访问它自带生成的域名https。 模版支持 Nuxt.js: Vue的SSR框架 Hexo: 快速生成博客网站 Remix&#xff1a; 一款边缘原生的全栈 JavaScript 框架 … Vercel的核心…

免押租赁软件开发|租赁小程序适合各种产品开发

租赁小程序适合各种产品开发&#xff0c;特别是那些可以通过租赁方式提供给用户使用的产品。以下是一些适合开发租赁小程序的产品类型&#xff1a;   租房&#xff1a;租赁小程序可以方便房东和租客之间的房屋租赁交易。租客可以通过小程序浏览房源信息并联系房东&#xff0c…

力扣 | 数组和字符串简介

数组是数据结构中的基本模块之一。因为字符串是由字符数组形成的&#xff0c;所以二者是相似的。力扣LeetBook——数组和字符串 文章目录 &#x1f4da;数组简介&#x1f449;寻找数组的中心索引&#x1f449;搜索插入位置&#x1f449;合并区间 &#x1f4da;二维数组简介&…

adb连接安卓模拟器或真机hook参数加密详细过程(frida)

app逆向时&#xff0c;参数与函数的确定很关键&#xff0c;找到可疑的函数&#xff0c;不确定是否由该函数生成&#xff0c;该怎么解决&#xff1f;hook就应允而生了&#xff0c;首先是要求本地电脑和安卓模拟器&#xff08;网易mumu模拟器支持多系统&#xff0c;该模拟器作为主…

Docker学习笔记23

Docker Swarm架构&#xff1a; Swarm中以集群&#xff08;Cluster&#xff09;为单位进行管理&#xff0c;支持服务层面的操作。 集群是Swarm所管理的对象。 基本概念&#xff1a; 节点&#xff08;Node&#xff09;为Swarm集群中的一个Docker Engine实例。其中管理节点&#…

线程池问题处理

拒绝策略 AbortPolicy&#xff1a;默认的拒绝策略&#xff0c;直接抛出RejectedExecutionException异常。 CallerRunsPolicy&#xff1a;将任务退回给调用者执行。 场景 等线程池里的任务执行完通过future.get的方式获取线程池里的线程执行结果&#xff0c;然后合并到主流程…

自动化平台总结(httprunner+djangorestframework+python3+Mysql+Vue)【基础结构构思】

目录 一、前言 二、简介 三、整体结构 &#x1f381;更多干货 完整版文档下载方式&#xff1a; 一、前言 把一个以前自己搭建的自动化测试平台进行了一下重构升级&#xff0c;记录一下过程中的一些问题和总结。 二、简介 搭建的平台语言使用的是Python3.6&#xff0c;未来…

Oracle中没有show tables;如何用指令来显示表名,Excel关于VLOOKUP函数的使用。

一、问题&#xff1a;Oracle中没有show tables;如何用指令来显示表名。 解决方案&#xff1a; owner NAPSDEV更换为owner CNAPSIIDB。NAPSDEV是用户名&#xff0c;CNAPSIIDB是数据库名。在这里&#xff0c;我想让它显示的是我在Navicat中的CNAPSIIDB数据库下的所有表的名称。所…

Python - Django框架 - 简单运行

pycharm创建django项目 确保安装了Python 安装django pip install Django 创建django项目 django-admin startproject django_study 切换到django目录并启动 cd django_study python manage.py runserver 开发服务器将在默认的localhost:8000上运行&#xff0c;可以在浏览器中访…

vue-cute-timeline插件使用

效果 &#xff08;内容覆盖的有些丑&#xff0c;别在意哈&#xff0c;重点是时间线的展示&#xff09;element也有类似的时间线&#xff0c;但是不能使用类似这样的图片 所以就采用了vue-cute-timeline插件 使用方法&#xff08;可自行百度&#xff09; 安装&#xff1a;npm i…

服务器防止漏洞扫描解决方案

1、定期更新操作系统与应用程序 为了修复可能存在的漏洞和安全问题&#xff0c;建议定期对服务器的操作系统与应用程序进行更新。特别是对于那些常常成为黑客攻击目标的应用程序&#xff0c;比如WordPress等&#xff0c;更新是不可或缺的。通过更新&#xff0c;不仅可以增强服…

管理执行系统-亿发MES智能制造系统赋能制造企业信息化,实现工业现代化

在制造技术领域&#xff0c;质量控制信息集成建设需要健全的管理体系&#xff0c;加强全过程管理。虽然管理执行系统 (MES) 背后的理论思维已经取得了重大进展&#xff0c;但在软件应用集成和分析能力方面仍有改进的空间。本文将探讨MES系统如何赋能制造企业信息化&#xff0c;…

Linux内核源码下载

参考文章&#xff1a;https://blog.csdn.net/m0_49328056/article/details/121669035 一、git命令下载 1、进入官网&#xff1a;https://www.kernel.org/ mainline&#xff08;主线版本&#xff09;、stable&#xff08;稳定版本&#xff09;、longterm&#xff08;长期演进版…

DAY41:贪心算法(十)监控二叉树

文章目录 968.监控二叉树思路遍历顺序空节点处理情况列举 最开始的写法debug测试&#xff1a;travelsal的输出多了1 修改版二叉树注意点时间复杂度总结 968.监控二叉树 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及…

SpringBoot多模块项目整合JPA,解决被依赖模块Dao层无法注入的问题

DAO层&#xff1a; 报错&#xff1a; 解决办法&#xff1a;被依赖模块的DefaultConfig类加上如下注解&#xff0c;问题即解决 ComponentScan(basePackages "com.fdw.study.*") Configuration EnableJpaRepositories(value "com.fdw.study.dao") EntityS…

Linux0.11内核源码解析-read_write.c

目录 sys_lseek read write read_write.c主要是实现文件系统调用read(),write()和lseek()三个功能 read和write函数分别是调用file_dev.c/pipe.c/block_dev.c/char_dev.c实现相对应的函数 sys_lseek lseek实现系统调用将对文件句柄对应文件结果体中的当前读写指针进行修改&…

matplot 显示文本

import matplotlib.pyplot as plt# 绘制一些数据 x_data [1, 2, 3, 5] y_data [2, 4, 8, 10] plt.plot(x_data, y_data,o,markersize 20)# 添加文本注释 text [a,b,c,d] for i in range(4):plt.text(x_data[i], y_data[i],text[i], fontdict{family: serif, size: 16, col…

leetcode极速复习版-第五章栈与队列

目录 栈与队列 理论基础 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值 239.滑动窗口最大值 347.前 K 个高频元素 栈与队列 理论基础 队列是先进先出&#xff0c;栈是先进后出。 232.用栈实现队列 使用栈实现队…