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

2021-04-10 19:09:52 +08:00
 Ptu2sha
除了 rsync 还有 k8s
还有是吗简单的方案
5284 次点击
所在节点    PHP
25 条回复
iBugOne
2021-04-10 19:20:15 +08:00
git push 直接部署
eason1874
2021-04-10 19:31:53 +08:00
脸书以前有一篇文章介绍他们怎么滚动部署 PHP 代码,把部署时间从几天缩短到十几分钟,可以去找来看看。
LanLiang
2021-04-10 20:23:26 +08:00
docker 和 docker-compose
kennylam777
2021-04-10 20:30:50 +08:00
單機 - docker-compose
多機 - 組 k8s cluster
Ansen
2021-04-10 21:48:46 +08:00
ansible
chenqh
2021-04-10 21:58:46 +08:00
@kennylam777 单机 docker-compose? 怎么平滑升级?
SjwNo1
2021-04-10 22:05:37 +08:00
swarm
dzdh
2021-04-10 22:08:24 +08:00
小规模集群 docker swarm 可以一战
imgbed
2021-04-10 23:00:59 +08:00
宝塔面板
MengiNo
2021-04-10 23:26:07 +08:00
@chenqh 偷懒一点的做法就是启动 2 个后端,比如 server1 和 server2,交叉更新,然后不断的改 nginx.conf 的反代指向。虽然很尬但是有效并且可以用 drone 自动实现。 当然的确有 swarm 加持一下 docker compose 就有了很大提升,不要老看着 k8s 对 swarm 有偏见。
neoblackcap
2021-04-11 00:53:28 +08:00
灰度重启,LB 切流量,就是这么简单
ericls
2021-04-11 01:38:49 +08:00
Ansible 其实不错的
MiracleKagari
2021-04-11 01:55:18 +08:00
Choerodon
jieky
2021-04-11 05:19:25 +08:00
@MengiNo nginx 做负载均衡不香?为何要不断修改 nginx.conf
kennylam777
2021-04-11 07:37:40 +08:00
@chenqh 單機 docker-compose (不是 swarm) 好像真的沒法做 rolling update, 平時都用 k8s 的 Service IP 及 readinessProbe, 自動解決切換問題
AngryPanda
2021-04-11 08:47:11 +08:00
@jieky #14 故障转移?还是 虚 IP ?
MengiNo
2021-04-11 08:56:25 +08:00
@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-04-11 09:44:54 +08:00
puppet?
多个代码服务器是指跑同样代码的服务器吗?还是跑不同代码的服务器?
kennylam777
2021-04-11 09:55:15 +08:00
還是無腦 k8s 吧, 單機可以用 k3s 或者直上多機的 kubespray 安裝

這種流量轉移在 Service IP 是基本的動作, 更有要求的用 Isito
chenqh
2021-04-11 11:32:06 +08:00
@MengiNo 用 ansible 做的?

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

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

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

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

© 2021 V2EX