PHP 项目如果使用 docker 进行多机分布式部署有什么好的方案? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhuzhibin
V2EX    问与答

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

 
  •   zhuzhibin 2021-02-04 18:47:23 +08:00 1718 次点击
    这是一个创建于 1785 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    总结一下问题:

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

    14 条回复    2021-02-05 14:18:11 +08:00
    dapang1221
        1
    dapang1221  
       2021-02-04 18:49:50 +08:00
    你都 docker 多机分布了,为啥不用 k8s,配置文件同步、加入负载均衡都能在 k8s 层面上解决的
    zhuzhibin
        2
    zhuzhibin  
    OP
       2021-02-04 18:51:14 +08:00
    @dapang1221 老哥有无一些案例部署的看看?例如一些运维的链接啥的,因为我太了解 k8s 那套,不好意思哈~
    zhuzhibin
        3
    zhuzhibin  
    OP
       2021-02-04 18:52:23 +08:00
    @dapang1221 现在没上 docker 呢,配置以及部署遇到那些问题所以才想方案看能否迁移到 docker,现在还是在 Linux 上面跑的 nginx+php-fpm 跑呢
    liuzhaowei55
        4
    liuzhaowei55  
       2021-02-04 19:52:37 +08:00 via Android
    我的理想模型是,开发推送 release 版本代码,ci 工具拉取线上环境配置构建镜像,通知到 cd 工具,自动根据灰度发布策略上线。
    这样的好处是开发与线上配置解耦,配置写入镜像这样重新运行过往镜像不需要再回忆当时的配置了。
    现在比较多的是用 apollo 这样的配置中心解决方案。
    liuzhaowei55
        5
    liuzhaowei55  
       2021-02-04 19:56:34 +08:00 via Android
    想试验的话可以用 GitHub 的 actions 打包,然后推送到 aliyun 镜像服务器,然后用 docker swarm 模式搭配 portainer gui 来管理 docker 的自动发布,actions 打包镜像完成推送 aliyun 镜像仓库,推送完镜像仓库通知 portainer 去灰度发布,简单实用,如果没有 sql 发布的话。
    riverfell
        6
    riverfell  
       2021-02-05 09:27:23 +08:00
    我现在在一家 php 后端的手游公司,我也不是很懂手游,不知道有没有必要上你这种方案?
    zhuzhibin
        7
    zhuzhibin  
    OP
       2021-02-05 09:58:07 +08:00 via iPhone
    @liuzhaowei55 阿波罗会不会太重了 你说的那套其实就是 k8s CI/CD 吧
    zhuzhibin
        8
    zhuzhibin  
    OP
       2021-02-05 09:59:44 +08:00 via iPhone
    @liuzhaowei55 老哥有实践过这个流程嘛?成本以及维护起来会不会很高?
    zhuzhibin
        9
    zhuzhibin  
    OP
       2021-02-05 10:04:59 +08:00 via iPhone
    @riverfell 看具体情况吧 k8s 那套是需要成本的
    liuzhaowei55
        10
    liuzhaowei55  
       2021-02-05 12:00:29 +08:00 via Android
    @zhuzhibin 配置读取可以自己选的,可以直接放入项目中,也可以在镜像生成时注入,还可以用 Apollo 在线读取。
    这一套和 k8s 没啥关系,传统的部署也可以实现自动化的,简单体验就用 docker swarm + portainer 就可以了,单机就能实现
    k8s 用阿里云的按时收费体验也没有很贵三台机器的价格,用完关掉就可以了
    liuzhaowei55
        11
    liuzhaowei55  
       2021-02-05 12:04:41 +08:00 via Android
    @zhuzhibin 真实运行过的,小项目还是不错的。
    大项目一般有流程控制,不会让太随意的上线。
    docker swarm 的负载自动扩容没体验过,都是自己手动起一台机器,初始化环境加入 swarm 集群,swarm 会自动调整,k8s 如果用阿里云的话应该可以自动根据负载上线机器吧
    liuzhaowei55
        12
    liuzhaowei55  
       2021-02-05 12:09:04 +08:00
    @zhuzhibin 基于 Docker Swarm 项目部署架构: https://www.yuque.com/where/dib969/bg1cff 可以看这里,都是已经上线运行了的,可以 tg 沟通一起学习
    zhuzhibin
        13
    zhuzhibin  
    OP
       2021-02-05 14:17:47 +08:00
    @liuzhaowei55 谢谢老哥 可以留个联系不 不介意到时可以跟你请教一下~
    zhuzhibin
        14
    zhuzhibin  
    OP
       2021-02-05 14:18:11 +08:00
    @liuzhaowei55 找时间实践一下应该就清楚了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     909 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 22:27 PVG 06:27 LAX 14:27 JFK 17:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86