PHP 项目如果使用 docker 进行多机分布式部署有什么好的方案?

2021-02-04 18:47:23 +08:00
 zhuzhibin

RT,常规的扩容流程基本是如下:

1 、更新最新的且最稳定的版本代码
2 、机器做镜像
3 、从镜像中克隆机器
4 、把机器加到 LB

但是这种流程实际上也会存在一些问题,例如我扩容了 20 台机器,这个时候我可能需要去紧急修改一些配置,这样一般要如何高效且无误的去更新这些配置,这里其实也顺便问一下多机配置如何管理的问题(例如.env 读文件),例如配置中心还是啥?期望的肯定是不管你有多少台机器,我只需修改一次配置即可,所有机器的配置会自动同步

总结一下问题:

1 、PHP 项目如果使用 docker 进行多机分布式部署有什么好的方案?
2 、多机部署配置如何更好的管理?

1231 次点击
所在节点    问与答
14 条回复
dapang1221
2021-02-04 18:49:50 +08:00
你都 docker 多机分布了,为啥不用 k8s,配置文件同步、加入负载均衡都能在 k8s 层面上解决的
zhuzhibin
2021-02-04 18:51:14 +08:00
@dapang1221 老哥有无一些案例部署的看看?例如一些运维的链接啥的,因为我太了解 k8s 那套,不好意思哈~
zhuzhibin
2021-02-04 18:52:23 +08:00
@dapang1221 现在没上 docker 呢,配置以及部署遇到那些问题所以才想方案看能否迁移到 docker,现在还是在 Linux 上面跑的 nginx+php-fpm 跑呢
liuzhaowei55
2021-02-04 19:52:37 +08:00
我的理想模型是,开发推送 release 版本代码,ci 工具拉取线上环境配置构建镜像,通知到 cd 工具,自动根据灰度发布策略上线。
这样的好处是开发与线上配置解耦,配置写入镜像这样重新运行过往镜像不需要再回忆当时的配置了。
现在比较多的是用 apollo 这样的配置中心解决方案。
liuzhaowei55
2021-02-04 19:56:34 +08:00
想试验的话可以用 GitHub 的 actions 打包,然后推送到 aliyun 镜像服务器,然后用 docker swarm 模式搭配 portainer gui 来管理 docker 的自动发布,actions 打包镜像完成推送 aliyun 镜像仓库,推送完镜像仓库通知 portainer 去灰度发布,简单实用,如果没有 sql 发布的话。
riverfell
2021-02-05 09:27:23 +08:00
我现在在一家 php 后端的手游公司,我也不是很懂手游,不知道有没有必要上你这种方案?
zhuzhibin
2021-02-05 09:58:07 +08:00
@liuzhaowei55 阿波罗会不会太重了 你说的那套其实就是 k8s CI/CD 吧
zhuzhibin
2021-02-05 09:59:44 +08:00
@liuzhaowei55 老哥有实践过这个流程嘛?成本以及维护起来会不会很高?
zhuzhibin
2021-02-05 10:04:59 +08:00
@riverfell 看具体情况吧 k8s 那套是需要成本的
liuzhaowei55
2021-02-05 12:00:29 +08:00
@zhuzhibin 配置读取可以自己选的,可以直接放入项目中,也可以在镜像生成时注入,还可以用 Apollo 在线读取。
这一套和 k8s 没啥关系,传统的部署也可以实现自动化的,简单体验就用 docker swarm + portainer 就可以了,单机就能实现
k8s 用阿里云的按时收费体验也没有很贵三台机器的价格,用完关掉就可以了
liuzhaowei55
2021-02-05 12:04:41 +08:00
@zhuzhibin 真实运行过的,小项目还是不错的。
大项目一般有流程控制,不会让太随意的上线。
docker swarm 的负载自动扩容没体验过,都是自己手动起一台机器,初始化环境加入 swarm 集群,swarm 会自动调整,k8s 如果用阿里云的话应该可以自动根据负载上线机器吧
liuzhaowei55
2021-02-05 12:09:04 +08:00
@zhuzhibin 基于 Docker Swarm 项目部署架构: https://www.yuque.com/where/dib969/bg1cff 可以看这里,都是已经上线运行了的,可以 tg 沟通一起学习
zhuzhibin
2021-02-05 14:17:47 +08:00
@liuzhaowei55 谢谢老哥 可以留个联系不 不介意到时可以跟你请教一下😃~
zhuzhibin
2021-02-05 14:18:11 +08:00
@liuzhaowei55 找时间实践一下应该就清楚了

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

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

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

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

© 2021 V2EX