1、中间件同城多云高可用平台建设 孟祥勇 云原生资深架构师孟祥勇孟祥勇资深云原生架构师资深云原生架构师 目前任网易数帆云原生中间件资深架构师,曾就职京东、同盾,Kubernetes社区贡献者,专注调度、中间件、kubeflow领域。负责网易数帆中间件集群联邦平台建设,已支持Redis、ES、Kafka、Rocketmq、ZK中间件的联邦,在多家银行、证劵成功落地使用。负责网易数帆中间件Finops系统建设,已具备成本展示、多种算法资源预测、负载感知调度与重调度能力。讲师简介目录1 1亮点介绍2 2案例背景3 3解决思路与成果4 4案例复盘与总结5 5下一步计划PART 01亮点介绍亮点介绍亮点介绍
2、高可用高可用管控高可用、计算集群自治侵入小侵入小对管控、监控、日志侵入少灵灵 活活丰富的调度策略轻轻 量量同步资源少轻舟中间件集群联邦架构亮点介绍高可用的多云调度多云故障迁移多云生命周期中间件中间件集群联集群联邦邦PART 02案例背景案例背景案例背景业务的创新、快速迭代对中间件生命周期管理、高可用提出了更高的要求云原生技术的广泛的落地,为中间件满足业务发展提供了有力支撑多云管理技术为中间件集群提供同城多机房高可用。减少因为一个机房故障(网络、存储)后,对中间件集群SLA的影响问题与挑战01组件多组件多云原生领域多云管理组件多,如何挑选出适合轻舟中间件现有架构的多云管理组件02有状态应用有状态
3、应用多云管理组件支持无状态应用,对于中间件这种有状态应用支持不太友好03集群故障集群故障当其中一个集群故障时,如何安全快速的将故障实例迁移到新的集群PART 03破题思路与成果破题思路与成果 Karmada将资源模版通过覆盖策略、分发策略在集群之间进行差异化传播。这里的资源模版可以是k8s原生资源亦或者自定义资源(CR)。karmada调度功能如下:破题思路集群亲和集群名label匹配实例拓扑直接复制权重集群拓扑数量约束污点容忍专用集群Karmada架构如右图:破题思路组件介绍联邦调度器联邦调度器执行创建、扩缩容、故障调度联邦控制器联邦控制器负责跨集群滚动创建、更新、全局视图维护集群联邦组件集
4、群联邦组件实现资源的差异化传播与状态收集跨集群治理流量跨集群治理流量实现高可用、高性能跨集群域名解析组件介绍组件介绍中间件联邦调度需求支持CR级别的调度;支持按集群资源余量调度;支持redis、elasticsearch、rocketmq跨集群调度需求;组件介绍-联邦调度器组件介绍-联邦调度器spec:replicaRequirements:-replicas:3 role:master maxSkew:1 resourceRequest:limits:cpu:1 memory:2Gi requests:cpu:1 memory:1Gi -replicas:3 role:slave shard
5、:1 maxSkew:1 resourceRequest:limits:cpu:4 memory:8Gi requests:cpu:2 memory:4Gi clusterAffinity:labelSelector:cluster:compute clustersNames:-user1 -user2调度单位:调度单位:与Hived、Volcano中的组相似,一个中间CR包含很多组件信息,比如分片、主从、角色,这些组件需要在一次调度中调度完成,有一个无法调度就视为调度失败,不再进行后续的调协逻辑。联邦调度器中的组信息可以参考右图组件介绍-联邦调度器MNMN时时每个计算集群分配M/N个,剩余M
6、%N个实例,再平分到每个计算集群。MMN N时时M个计算集群实例数为1,N-M个计算集群实例数为0N=1N=1时时所有实例在一个集群,主要是用在lb或者pod网络不满足,又想调试联邦功能。半数约束:半数约束:部署计算集群数量为N,实例数为M时,则实例分布会有以下几种情况:组件介绍-联邦调度器扩缩容约束扩缩容约束根据半数约束,计算扩容之后实例约束。根据新的实例分布、以及老的实例分布计算出所有可能扩容组合。以一个副本数3(c1计算集群1、c2计算集群1、c3计算集群1)扩容到7的过程说明一下扩容约束:根据上述1.1半数