设置组件实例调度策略
根据容器部署组件的部署特性,ServiceStage把应用组件拆解成最小的部署实例。应用调度器实时监控应用的实例信息,当发现有新的pod产生需要调度时就会对集群中所有的剩余资源(计算、网络、中间件)进行计算,最后得出最适合的调度目标节点。
ServiceStage支持多种调度算法,包括:应用与可用区的亲和性调度、应用和节点之间的亲和性调度、应用间的亲和性调度。
您可以根据需要自由组合使用这些策略来实现业务需求。
亲和性概念阐述
在应用没有容器化之前,原先一个虚机上会装多个组件,进程间会有通信。
但在做容器化拆分的时候,通常直接按进程拆分容器。比如业务进程一个容器,监控日志处理或者本地数据放在另一个容器,并且有独立的生命周期。这时如果进程分布在网络中两个较远的点,请求经过多次转发,性能会很差。
亲和性可以实现就近部署,增强网络能力实现通信上的就近路由,减少网络的损耗。
反亲和性主要是出于高可靠性考虑,尽量分散实例,某个节点故障的时候,对应用的影响只是N分之一或者只是一个实例。
- 应用与可用区的亲和性
- 亲和:决定应用组件部署在特定的可用区中。
- 反亲和:决定应用组件不能部署在特定的可用区中。
- 应用与节点间的亲和性
- 亲和:决定应用组件部署在某些特定的主机中。
- 反亲和:决定应用组件不能部署在某些特定的主机中。
- 应用间的亲和性
注意事项
在设置应用组件间的亲和性和应用组件与节点间的亲和性时,需确保不要出现互斥情况,否则应用会部署失败。例如如下互斥情况,应用将会部署失败:
- APP1、APP2设置了应用组件间的反亲和,例如APP1部署在Node1,APP2部署在Node2。
- APP3部署上线时,既希望与APP2亲和,又希望可以部署在不同节点如Node3上,这就造成了应用组件亲和和节点亲和间的互斥,导致最终应用组件部署失败。
操作步骤
- 展开“高级设置 > 部署配置”。
- 在“调度策略”页签,参考下表设置组件实例调度策略。
目的
步骤
设置应用组件与可用区的亲和
- 单击“添加亲和的对象”。
- 对象类型选择“可用区”,选择待亲和的可用区。
- 单击“确定”。
设置应用组件与可用区的反亲和
- 单击“添加反亲和的对象”。
- 对象类型选择“可用区”,选择待亲和的可用区。
- 单击“确定”。
设置应用组件与节点间的亲和
- 单击“添加亲和的对象”。
- 对象类型选择“节点”,选择待亲和的节点。
- 单击“确定”。
设置应用组件与节点间的反亲和
- 单击“添加反亲和的对象”。
- 对象类型选择“节点”,选择待亲和的节点。
- 单击“确定”。
设置应用组件间亲和
- 单击“添加亲和的对象”。
- 对象类型选择“组件”,选择待亲和的应用组件。
- 单击“确定”。
系统会将您选择的应用组件设置为亲和,部署到相同的节点中。
设置应用组件间反亲和
- 单击“添加反亲和的对象”。
- 对象类型选择“组件”,选择待反亲和的应用组件。
- 设置完成后,单击“确定”。
系统会将您选择的应用组件设置为反亲和,部署到不同的节点中。