通常,您不需要强制 swaRM 重新平衡其任务。当您将新节点添加到 swaRM 或节点在一段时间不可用后重新连接到 swaRM 时,swaRM 不会自动将工作负载分配给空闲节点。这是一个设计决定。
如果 swaRM 为了平衡而周期性地将任务转移到不同的节点,使用这些任务的客户端将被中断。目标是为了在整个群中保持平衡而避免中断正在运行的服务。当新任务开始时,或者正在运行任务的节点变得不可用时,这些任务会分配给不太繁忙的节点。目标是最终平衡,对最终用户的干扰最小。
您可以在命令中使用–foRCEOR-f标志dockeR seRvice update来强制服务在可用的工作节点之间重新分配其任务。这会导致服务任务重新启动。客户端应用程序可能会中断。如果您已配置它,您的服务将使用滚动更新。
如果您使用较早的版本,并且希望在 woRkeR 之间实现负载均衡并且不介意中断正在运行的任务,则可以通过暂时向上扩展服务来强制您的 swaRM 重新平衡。使用 dockeR seRvice inspect –pRetty看服务的配置比例。当您使用 时dockeR seRvice scale,任务数最少的节点将被定位为接收新工作负载。您的群中可能有多个负载不足的节点。您可能需要以适度的增量扩展服务几次,以在所有节点之间实现您想要的平衡。
当负载平衡到您满意时,您可以将服务缩减到原始规模。您可以使用它dockeR seRvice ps来评估跨节点的服务的当前平衡。