das*_*s_j 17 uptime docker coreos
假设我有一个带有 Web 服务器的 Docker 容器(如 Apache 2)。现在我想更新它下的操作系统。这个 SF answer说最好的方法是重建基础镜像和我的 Apache 镜像。但是部署镜像意味着停机,因为我必须在创建新容器之前删除旧容器,所以只有一个容器绑定到端口 80/443。
但是,如何在零停机时间的情况下部署此更新?我应该使用负载平衡器并使用容器间通信吗?以及如何更新负载均衡器?
Mis*_*man 18
是的,您应该使用负载均衡器并一次更新一个实例。我不确定容器间通信的来源。
例如,假设您有一个负载均衡器,它为您的站点 A 提供服务。用户只能以“A”的身份连接到它,并且只知道它是“A”。负载均衡器知道有两个或多个后端(B、C 等),它们是 VM 还是容器并不重要。
然后,您要升级后端,在本例中是 Apache 实例。
然后,对 C、D 等执行相同的过程。
请注意,从 2013 年 11 月开始,有一个对 Docker 容器就地升级的公开请求,但似乎没有太大进展,因此上述解决方案是您同时应该做的。
想必,您之所以这么问是因为您已经在此模型中运行了一个实时站点,并且希望在不停机的情况下对其进行升级。因此,我们需要逐步达到上述理想目标状态。
让我们假设:
如果这些假设是错误的,您应该首先修复它以使其正确。
然后,按照以下步骤操作:
最简单的选择是不运行自己的平衡器。例如,如果您使用的是提供负载平衡即服务的云平台,请考虑使用它,然后负载平衡器的维护和更新不是问题。
如果您正在运行自己的负载均衡器,添加另一层间接(即 DNS)会有所帮助。让我们假设以下情况:
我们按以下步骤进行:
将 B 的 IP 地址与 A 一起添加到 DNS 解析中
如果 B 有任何问题,请按如下方式撤消:
你就完成了。
查看这些可以帮助您自动化流程的文章和工具,但总体思路是相同的:
“计算机科学中的所有问题都可以通过另一个层次的间接性来解决,当然,间接性过多的问题除外。” —大卫·惠勒
| 归档时间: |
|
| 查看次数: |
8916 次 |
| 最近记录: |