Karmada更高效地实现故障转移

随着云原生技术的发展,其应用场景不断扩大。越来越多的企业开始将应用程序部署在 Kubernetes 集群中,随着 Kubernetes 集群规模的不断扩大,也带来了许多管理挑战,例如多集群间负载均衡、资源调度、故障转移等问题。为了解决这些问题,Karmada 多集群管理平台应运而生,同时还提供了强大的故障转移能力。

在多云多集群场景中,为了提高业务的高可用性,工作负载可能会被部署在多个不同的集群。在 Karmada 中,当集群发生故障,或是用户不希望在某个集群上继续运行工作负载时,集群状态将被标记为不可用,并被添加上一些污点。Taint-manager 检测到集群故障之后,会从这些故障集群中驱逐工作负载,被驱逐的工作负载将被调度至其他最适合的集群,从而达成故障迁移的目的,保证了用户业务的可用性与连续性。

一、故障迁移的场景

为何需要故障转移?下面来介绍一些多集群故障迁移的场景:

  • 管理员在 Karmada 控制面部署了一个离线业务,并将业务 Pod 实例分发到了多个集群。突然某个集群发生故障,管理员希望 Karmada 能够把故障集群上的 Pod 实例迁移到其他条件适合的集群中;

  • 普通用户通过 Karmada 控制面在某一个集群上部署了一个在线业务,业务包括服务器实例、配置文件等,服务通过控制面上的 ELB 对外暴露,此时某一集群发生故障,用户希望把整个业务能迁移到另一个情况较适合的集群上,业务迁移期间需要保证服务不断服;

  • 管理员将某个集群进行升级,作为基础设施的容器网络、存储等发生了改变,管理员希望在集群升级之前把当前集群上的应用迁移到其他适合的集群中去,业务迁移期间需要保证服务不断服。

二、如何进行故障迁移

上图展示了两种不同的迁移方式 

Karmada 支持用户设置分发策略,在集群发生故障后,将故障集群实例进行自动的集中式或分散式的迁移。如图用户在 Karmada 中加入了三个集群,分别为:member1、member2 和 member3。

  1. 在 Karmada 的控制面部署了一个副本数为 3 的工作负载,并通过部署策略(PropagationPolicy)将其分发到了集群 member1 和 member2 上。
  2. 当集群 member1发生故障之后,其工作负载上的 Pod 实例将会被驱逐,通过 PropagationPolicy/ClusterPropagationPolicy 的副本调度策略 ReplicaSchedulingStrategy 来控制 Pod 被全部迁移到集群 member2 或是分散迁移至两个集群中。

 

三、工作负载被驱逐的时间线

下面通过示例,简单讲解在 DCE 5.0 多云编排模块中,一个工作负载被驱逐的时间线:

首先,每一段时间调用一次集群的 API 用以记录集群的健康状态,当集群状态始终为健康时,我们认定集群的健康状态正常。此时我们将 DCE 与集群 APIserver 之间的 TCP 断开,10s-20s 之内,若没有获取到集群的健康状态将认为集群异常,被标记为非健康状态,同时打上 NoSchedule 的污点,如果集群的不健康状态持续一段时间,在指定时间内若集群仍然没有恢复健康,超过指定的驱逐容忍时长后,将被打上 NoExecute 的污点,最终被驱逐。

 

 

四、影响故障转移时效的指标

在 Karmada 中启用了 Failover 之后,Karmada 提供了几个参数配置选项,与上图对应,分别为:

ClusterMonitorPeriod:检查集群状态的时间间隔,默认 60s;

ClusterMonitorGracePeriod:运行中标记集群不健康检查时长,默认 40s;

ClusterStartupGracePeriod:启动时标记集群不健康的检查时长,默认 600s;

FailoverEvictionTimeout:驱逐容忍时长,集群被标记为不健康后,超过此时长会给集群打上污点,并进入驱逐状态,默认 30s;

ClusterTaintEvictionRetryFrequency:优雅驱逐超时时长,进入优雅驱逐队列后,最长等待时长,超时后会立即删除,默认 5s。

影响故障转移的延时时效的主要有以下 2 个维度的指标,需要组合配置才能最终达到延迟灵敏度的效果。如何使配置过程更加友好?在我们的 DCE 5.0 多云编排模块中,我们将故障转移的相关配置表单化,能够降低用户的使用门槛,同时提高配置的成功率。

1. 集群维度:标记集群为不健康的检查时长、集群驱逐容忍时长。

 

2. 工作负载维度:集群污点容忍时长。

 

当用户创建资源 PropagationPolicy/ClusterPropagationPolicy 后,Karmada 会通过 webhook 为它们自动增加如下集群污点容忍:

 

 

五、优化故障转移时效的优势

1、提高应用程序的可靠性和可用性

Karmada 故障转移功能可以确保工作负载在节点或集群出现故障时不会直接停机,从而提高应用程序的可靠性和可用性。这对于一些已经部署了庞大的业务系统的企业来说是非常重要的。

 

2、提供快速的恢复能力

Karmada 故障转移功能能够快速迁移工作负载到健康节点或集群上,从而缩短节点恢复的时间,减少业务停机时间,大大节约企业的成本和时间。

3、避免业务流量损失

Karmada 故障转移功能能够及时将故障的工作负载迁移至健康节点或集群,从而避免业务流量损失。

今后,相信随着云原生技术的不断发展和完善,Karmada 的故障转移功能在未来能够更加广泛地应用到各个领域,为企业的业务提供更好的保障。

 

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

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

相关文章

bclinux aarch64 ceph 14.2.10 对象存储 http网关 CEPH OBJECT GATEWAY Civetweb

相关内容 bclinux aarch64 ceph 14.2.10 文件存储 Ceph File System, 需要部署mds: ceph-deploy mds-CSDN博客 ceph-deploy bclinux aarch64 ceph 14.2.10【3】vdbench fsd 文件系统测试-CSDN博客 ceph-deploy bclinux aarch64 ceph 14.2.10【2】vdbench rbd 块设…

操作系统 | 虚拟机及linux的安装

​ 🌈个人主页:Sarapines Programmer🔥 系列专栏:《操作系统实验室》🔖少年有梦不应止于心动,更要付诸行动。 目录结构 1.操作系统实验之虚拟机及linux的安装 1.1 实验目的 1.2 实验内容 1.3 实验步骤 …

第1关:简单查询

任务描述相关知识 检索数据表的内容编程要求测试说明 任务描述 本关任务: 用 SELECT 语句检索数据表中指定字段的数据; 用 SELECT 语句检索数据表中所有字段的数据。 相关知识 为了完成本关任务,你需要掌握:1.如何获取数据表…

【Qt之QWizard】使用2,示例分析

效果图 根据首页的选择不同&#xff0c;进入不同的选项。 以下是代码。 示例 .h #ifndef LICENSEWIZARD_H #define LICENSEWIZARD_H#include <QWizard>QT_BEGIN_NAMESPACE class QCheckBox; class QLabel; class QLineEdit; class QRadioButton; QT_END_NAMESPACEcla…

java实现计数排序

图解 计数排序是一种线性时间复杂度的排序算法&#xff0c;它不基于比较排序&#xff0c;而是根据待排序序列中元素的值来进行排序。 具体的过程如下&#xff1a; 统计序列中每个元素出现的个数&#xff0c;得到一个计数数组count。其中&#xff0c;count[i]表示待排序序列中值…

npm封装插件打包上传后图片资源错误

问题&#xff1a; npm封装插件&#xff1a;封装的组件页面涉及使用图片资源&#xff0c;在封装的项目里调用图片显示正常&#xff1b;但是打包上传后&#xff0c;其他项目引入使用报错找不到图片资源&#xff1b;图片路径也不对 获取图片的base64方法 解决方案&#xff1a; 将…

Django debug page XSS漏洞复现_(CVE-2017-12794)

Django debug page XSS漏洞复现_(CVE-2017-12794) 复现过程 首先进入靶场环境 按照他写的&#xff0c;需要给这个变量赋值 创建一个用户&#xff0c;用弹窗做用户名 http://10.4.7.137:8000/create_user/?username<script>alert(1)</script>返回&#xff0c;然…

时间序列基础->数据标签、数据分割器、数据加载器的定义和讲解(零基础入门时间序列)

一、本文介绍 各位小伙伴好&#xff0c;最近在发时间序列的实战案例中总是有一些朋友问我时间序列中的部分对数据的操作是什么含义&#xff0c;我进行了挺多的介绍和讲解但是问的人越来越多&#xff0c;所以今天在这里单独发一篇文章来单独的讲一下时间序列中对数据的处理操作…

消息队列简介

什么是消息队列?&#xff08;Message queue&#xff0c;简称MQ&#xff09; 从字面理解就是一个保存消息的一个容器。那么我们为何需要这样一个容器呢&#xff1f; 其实就是为了解耦各个系统&#xff0c;我们来举个例子&#xff1a; 有这么一个简单的场景&#xff0c;系统A负…

机器学习—基本术语

目录 1.样本&#xff08;示例&#xff09; 2.属性 3.属性值 4.属性空间 5.样本空间 6.学习&#xff08;训练&#xff09; 7.数据集 8.测试 9.假设 10.学习器 11.标记 12.样例 13.标记空间&#xff08;样例空间&#xff09; 14.分类与回归 15.有监督学习、无监督…

msvcp140.dll丢失的解决方法、详细解析dll缺失原因及对电脑的影响

msvcp140.dll是一款Visual C Redistributable for Visual Studio 2015的运行时库&#xff0c;许多程序都需要依赖这个库才能正常运行。当msvcp140.dll丢失时&#xff0c;我们可能会遇到无法打开程序或游戏&#xff0c;甚至系统崩溃的问题。本文将详细介绍msvcp140.dll丢失的解决…

【Liunx】部署WEB服务:Apache

【Liunx】部署WEB服务:Apache 概述Apache1.介绍2.Apache文件路径3.Apache详解(1)安装Apache(2)启动Apache(3)配置文件a.Apache主配置文件&#xff1a;vim /etc/httpd/conf/httpd.conf信息&#xff1a;b.基于主机头的虚拟主机 (4)开始演示&#xff1a;a.新建两个网站根目录b.分别…