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