如果你有一个数据中心,你如何同时将里面的服务器的软件做一个升级呢?

2021-06-16 20:11:54 +08:00
 FutureApple

今天看到群里的大佬给了一个问题,你有一个数据中心,数据中心里有一百万台机器(物理机或虚拟机),这一百万台机器都安装了一些组件,例如安装了 ffmpeg 4.5,现在你的任务是将它们的这个组件全部升级到 ffmpeg 4.6 。

看起来不难,你很快就搞定了一个 4.6 的安装包,然后你发现你需要把这个安装包发给一百万台机,显然不行。装完可能大半年过去了。

注意:不能使用 P2P

3458 次点击
所在节点    问与答
45 条回复
PrinceofInj
2021-06-16 20:26:28 +08:00
先问一下这一百万台是怎么装出来的。啥?一台台装出来的?那我一台台去更新有啥问题么?
opengps
2021-06-16 20:29:09 +08:00
这个规模,打包系统镜像,基于弹性伸缩逐步切换吧
kaikai5601
2021-06-16 20:30:27 +08:00
不用 p2p,那就内网传输,并发啊,怎么可能要大半年
FutureApple
2021-06-16 20:32:29 +08:00
@kaikai5601 #3 那并发的那一台服务器因为负载过高死掉了呢?
aureole999
2021-06-16 20:32:35 +08:00
这是不是就是类似 Ansible 之类干的事情?
3dwelcome
2021-06-16 20:33:06 +08:00
如果你有一百万个用户,如何让用户软件都升级到最新版本?

显然一个个让客户下载最新客户端安装,是不可能的,大半年过去了。
FutureApple
2021-06-16 20:34:47 +08:00
@aureole999 #5
@3dwelcome #6 不是命令的发起,而是如何将这 100 万台服务器中都下载到这个更新包
abersheeran
2021-06-16 20:45:36 +08:00
内网,假设一万台机子下载需要十秒。一百万台也就一千秒,这个时间你们应该完全能接受。

Nginx 提供静态文件,内网一万并发,很轻松。实际上应该更高一些。所以你大概几百秒就可以完成下载任务。
Rheinmetal
2021-06-16 20:56:28 +08:00
没有配好基础设施的情况下 约等于开发病毒
eason1874
2021-06-16 21:08:18 +08:00
单机性能大概算一下并发数,然后按 1>100>10000>1000000 这样滚动发布,先拿到文件的也加入发布序列给后面的传输文件。就算没有内网也用不了多久啊。

多机软件升级的要点不在于文件传输吧,传输很快的,难点在升级期间不影响服务。
huangzxx
2021-06-16 21:11:33 +08:00
打好一个包,ansible 跑一遍 apt install ?
FreeEx
2021-06-16 21:21:23 +08:00
这算是什么大佬…
learningman
2021-06-16 21:27:22 +08:00
广播?
learningman
2021-06-16 21:28:04 +08:00
你在一个内网,里不管用不用 p2p 交换数据都受限于交换机啊。
FutureApple
2021-06-16 21:30:47 +08:00
@eason1874 #10 如果其中一台服务器炸了他下面会广播的机器也会炸啊
FutureApple
2021-06-16 21:33:41 +08:00
@learningman #14 不是数据受限的问题,如果广播的服务器炸了其他的服务器也都甭想升级了,要求的是一个哪怕单机炸了也不会影响到其他任意机器的架构
@eason1874 #10
@abersheeran #8
FutureApple
2021-06-16 21:36:24 +08:00
@huangzxx #11 问题是这个包怎么传给那 999999 台其他的服务器
momocraft
2021-06-16 21:40:00 +08:00
感觉你被大佬钓鱼了
akira
2021-06-16 21:40:18 +08:00
要么推 要么拉
FutureApple
2021-06-16 21:44:55 +08:00
@momocraft #18
@FreeEx #12 这是个微软的大佬再群里发的问题,他说 windows 更新其实是基于 p2p 的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/783807

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX