你们都是怎么维护多个代码服务器的

2021 年 4 月 10 日
 Ptu2sha
除了 rsync 还有 k8s
还有是吗简单的方案
6125 次点击
所在节点    PHP
25 条回复
iBugOne
2021 年 4 月 10 日
git push 直接部署
eason1874
2021 年 4 月 10 日
脸书以前有一篇文章介绍他们怎么滚动部署 PHP 代码,把部署时间从几天缩短到十几分钟,可以去找来看看。
LanLiang
2021 年 4 月 10 日
docker 和 docker-compose
kennylam777
2021 年 4 月 10 日
單機 - docker-compose
多機 - 組 k8s cluster
Ansen
2021 年 4 月 10 日
ansible
simple2025
2021 年 4 月 10 日
@kennylam777 单机 docker-compose? 怎么平滑升级?
SjwNo1
2021 年 4 月 10 日
swarm
dzdh
2021 年 4 月 10 日
小规模集群 docker swarm 可以一战
imgbed
2021 年 4 月 10 日
宝塔面板
MengiNo
2021 年 4 月 10 日
@chenqh 偷懒一点的做法就是启动 2 个后端,比如 server1 和 server2,交叉更新,然后不断的改 nginx.conf 的反代指向。虽然很尬但是有效并且可以用 drone 自动实现。 当然的确有 swarm 加持一下 docker compose 就有了很大提升,不要老看着 k8s 对 swarm 有偏见。
neoblackcap
2021 年 4 月 11 日
灰度重启,LB 切流量,就是这么简单
ericls
2021 年 4 月 11 日
Ansible 其实不错的
MiracleKagari
2021 年 4 月 11 日
Choerodon
jieky
2021 年 4 月 11 日
@MengiNo nginx 做负载均衡不香?为何要不断修改 nginx.conf
kennylam777
2021 年 4 月 11 日
@chenqh 單機 docker-compose (不是 swarm) 好像真的沒法做 rolling update, 平時都用 k8s 的 Service IP 及 readinessProbe, 自動解決切換問題
AngryPanda
2021 年 4 月 11 日
@jieky #14 故障转移?还是 虚 IP ?
MengiNo
2021 年 4 月 11 日
@jieky 不行的。流程应该是这样的:比如 server1 是 version X 、server2 是 version X-1,nginx 指向 server1 。现在想部署 version X+1,则通过 docker-compose up 把镜像版本升级到 X+1 并且会删除 server2 重新部署一个新的叫 server2 的容器,此时因为 nginx 指向 server1,更新不受影响。## 最后再把 nginx 改成指向 server2 正式对外更新,然后要过一会儿,等 server1 确实没有流量且剩余的东西都运行完了,才能把 server1 关掉减少资源占用。

从##号处断点来看,到 ## 为止 server1 是 X 、server2 是 X+1,他们两个都可以提供服务。nginx 配置负载均衡,要如何阻止他在 server2 准备好了之后立刻停止像 server1 分发流量呢? nginx 虽然能在 server1 关掉之后自动识别出 server1 down 掉了从而只把流量发给 server2,但现在问题是 server1 一直都能接到流量,导致一直无法优雅关闭。

我们现在比较尴尬的地方就在于,我们并不想让流量均衡而是想实现流量转移。所以只能通过手动修改 nginx.conf 的负载权重,控制两个 server 的流量,这样来实现 low 版的无停机更新、灰度发布和故障回滚。可能是个人水平不够也可能是当局者迷,如果有更优雅的方法请赐教。
skys215
2021 年 4 月 11 日
puppet?
多个代码服务器是指跑同样代码的服务器吗?还是跑不同代码的服务器?
kennylam777
2021 年 4 月 11 日
還是無腦 k8s 吧, 單機可以用 k3s 或者直上多機的 kubespray 安裝

這種流量轉移在 Service IP 是基本的動作, 更有要求的用 Isito
simple2025
2021 年 4 月 11 日
@MengiNo 用 ansible 做的?

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

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

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

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

© 2021 V2EX