Swarm 高级用户的五条贴士

深入浅出 Docker Swarm|DaoCloud 现推出 Docker Swarm 系列技术文章,为大家深入浅出地解读 Docker Swarm 的概念、使用方法以及最真实的案例分析。

今天的 Swarm 文章,让我们分享 5 条 Swarm 高级用户使用 Swarm 的贴士。

贴士1:标签 Cheat Sheet

每个 Docker Engine 都可以被分配一个或多个任意字符串的标签( label ),如  disk=ssd。此后,你可以在你的 docker run 命令里包含相同的标签,作为标示来控制容器调度的位置。

可以按照以下示例,来了解如何使用标签:

在你的其中一个 Engine 上运行:

16.pic

在另一个 Engine 上运行:

17.pic

现在就这样运行你的容器:

18.pic

贴士2:如何启用在节点崩溃时的重新调度( Swarm 1.1 的新增功能)

在发布的 Swarm 1.1 版本中,新增了一项功能:如果因为某些原因,容器运行错误,你可以把它们重新调度到正常的节点上。这项功能目前还在试验阶段,不过你可以按照以下步骤试一试该新功能。

这样运行 Swarm 管理 :

19.pic

贴士3:玩转容器 ID 和 Swarm ID

每个容器都有一个 ID,如果容器被重新调度,ID 也会随之更改。但每个容器也有一个 com.docker.swarm.id,就算容器被重新调度到新的节点上,这一  ID 也不会更改。同样也适用于容器命名,你为容器指定的名字也不会在重新调度过程中更改。

案例如下:

20.pic

贴士4:Heartbeat 间隔

Docker Engine 的 discovery heartbeat 是 overlay 网络模块使用的一个机制,用于确定集群中位于远程主机上的 Docker daemon 进程是否仍在工作。你可以用秒时来指定心跳的频率。默认心跳间隔是20秒,但更大的集群倾向于使用较长的间隔。

21.pic

Overlay 网络取决于主机发现,而 Docker Engine 里的主机发现取决于 Key-value (KV) Store。在一个拥有大量主机的环境里,越激烈的心跳间隔越会影响各种  KV Store 的表现。

为了减轻主机发现和事件监控对 KV Store 的压力,在 Swarm v 1.10 版本中增加了 daemon 配置标记。你可以根据你的扩展需求,对 value 进行微调。

贴士5:–sunbet 选项会给你更多的IP

如果你打算在同一个 overlay 网络下运行多个容器,你就需要足够多的 IP 地址。请在建立网络时使用 –subnet :

22.pic

通过以上配置,网络会拥有 170 万个 IP 地址。

如果你想将其限制到 65000 个,就用 –subnet=20.0.0.0/16

注意:这里是以 20.0.0.0 subnet 为例。只要与你环境里的 IP 地址不冲突,你用什么都行。

Leave a Reply

Your email address will not be published. Required fields are marked *