更新时间:2024-08-05 GMT+08:00

设置组件实例调度策略

根据容器部署组件的部署特性,ServiceStage把应用组件拆解成最小的部署实例。应用调度器实时监控应用的实例信息,当发现有新的pod产生需要调度时就会对集群中所有的剩余资源(计算、网络、中间件)进行计算,最后得出最适合的调度目标节点。

ServiceStage支持多种调度算法,包括:应用与可用区的亲和性调度、应用和节点之间的亲和性调度、应用间的亲和性调度。

您可以根据需要自由组合使用这些策略来实现业务需求。

亲和性概念阐述

在应用没有容器化之前,原先一个虚机上会装多个组件,进程间会有通信。

但在做容器化拆分的时候,通常直接按进程拆分容器。比如业务进程一个容器,监控日志处理或者本地数据放在另一个容器,并且有独立的生命周期。这时如果进程分布在网络中两个较远的点,请求经过多次转发,性能会很差。

亲和性可以实现就近部署,增强网络能力实现通信上的就近路由,减少网络的损耗。

反亲和性主要是出于高可靠性考虑,尽量分散实例,某个节点故障的时候,对应用的影响只是N分之一或者只是一个实例。

  • 应用与可用区的亲和性
    • 亲和:决定应用组件部署在特定的可用区中。
    • 反亲和:决定应用组件不能部署在特定的可用区中。
  • 应用与节点间的亲和性
    • 亲和:决定应用组件部署在某些特定的主机中。
    • 反亲和:决定应用组件不能部署在某些特定的主机中。
  • 应用间的亲和性
    决定应用组件部署在相同或不同节点中。
    • 亲和:用户可根据业务需求进行应用组件的就近部署,应用组件间通信就近路由,减少网络消耗。如图1所示,APP1、APP2、APP3和APP4部署在相同节点上,为亲和性部署。
      图1 应用间亲和
    • 反亲和:同个应用组件的多个实例反亲和部署,减少宕机影响;互相干扰的应用反亲和部署,避免干扰。
      图2所示,APP1、APP2、APP3和APP4分别部署在不同节点上,这四个应用为反亲和性部署。
      图2 应用间反亲和

注意事项

在设置应用组件间的亲和性和应用组件与节点间的亲和性时,需确保不要出现互斥情况,否则应用会部署失败。例如如下互斥情况,应用将会部署失败:

  • APP1、APP2设置了应用组件间的反亲和,例如APP1部署在Node1,APP2部署在Node2。
  • APP3部署上线时,既希望与APP2亲和,又希望可以部署在不同节点如Node3上,这就造成了应用组件亲和和节点亲和间的互斥,导致最终应用组件部署失败。

操作步骤

  1. 展开“高级设置 > 部署配置”。
  2. “调度策略”页签,参考下表设置组件实例调度策略。

    目的

    步骤

    设置应用组件与可用区的亲和

    1. 单击“添加亲和的对象”。
    2. 对象类型选择“可用区”,选择待亲和的可用区。
    3. 单击“确定”。

    设置应用组件与可用区的反亲和

    1. 单击“添加反亲和的对象”。
    2. 对象类型选择“可用区”,选择待亲和的可用区。
    3. 单击“确定”。

    设置应用组件与节点间的亲和

    1. 单击“添加亲和的对象”。
    2. 对象类型选择“节点”,选择待亲和的节点。
    3. 单击“确定”。

    设置应用组件与节点间的反亲和

    1. 单击“添加反亲和的对象”。
    2. 对象类型选择“节点”,选择待亲和的节点。
    3. 单击“确定”。

    设置应用组件间亲和

    1. 单击“添加亲和的对象”。
    2. 对象类型选择“组件”,选择待亲和的应用组件。
    3. 单击“确定”。

      系统会将您选择的应用组件设置为亲和,部署到相同的节点中。

    设置应用组件间反亲和

    1. 单击“添加反亲和的对象”。
    2. 对象类型选择“组件”,选择待反亲和的应用组件。
    3. 设置完成后,单击“确定”。

      系统会将您选择的应用组件设置为反亲和,部署到不同的节点中。