如何使用Docker Swarm和Consul实现更快的容器重新调度?

时间:2016-05-31 22:15:42

标签: docker consul docker-swarm

有关我环境的某些背景信息:

我在3个ubuntu 14.04流浪盒上运行了docker swarm。 swarm master在1台机器上运行(带有consul),另外2台机器正在运行与主机连接的swarm worker。我按照文档页面https://docs.docker.com/swarm/install-manual/设置了环境。它正常工作,以便从我的主机运行的任何docker -H :4000 <some_docker_command>都能正常工作。当我在两个工作人员上运行 gliderlabs / registrator 容器时,服务发现处于活动状态。

问题:

我的群集的任何更改(例如节点或容器故障)以及通过swarm重新安排容器(使用标记-e "reschedule:on-node-failure"创建)的过程都会在大约30到45秒内发生。相比之下,当我在CoreOS系统上运行fleet和etcd时,容器重新安排和节点故障通知通常在大约5秒内发生。是否有任何方法可以更改consul和docker swarm中的某些设置,以便将所有内容加速到与CoreOS上的fleet和etcd相似的级别?如果是这样我还需要做什么?

tldr:我正在使用consul运行swarm,容器重新调度并更改docker -H :4000 ps的输出,直到节点出现故障后大约30-45秒才会发生。我该如何缩短这个时间段?

1 个答案:

答案 0 :(得分:0)

您可以尝试将TTL和retries设置为较低的值,以使群组管理器在发生故障时更快地采取行动。

例如:

CREATE EXTERNAL TABLE my_dest_table (
   primary_alias_type string,
   primary_alias_id
) PARTITIONED BY (d string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION 's3://my_bucket/my_external_tables/'

完整documentation