RT 现在碰到的需求是, 新增的服务器, 自动的同步 php 项目代码
|  |      1skyrim61 OP 目前流程是 gitlab 上线发布到每组第一台服务器上, 第一台服务器上 lsyncd 同步到 2 ,3,4,5,6...服务器上,  现在做自动扩缩容, 新增的服务器如果加入到 php 代码同步流程中 | 
|  |      2skyrim61 OP 如果=如何 | 
|  |      3ainon      2022-12-01 13:33:08 +08:00 webhook | 
|  |      4jobcher      2022-12-01 13:35:00 +08:00 gitlab ci/cd | 
|  |      5vZexc0m      2022-12-01 14:50:12 +08:00 可以用阿里云的弹性伸缩服务来管理服务器。然后用脚本统一管理每台服务器的更新流程。或者看看你现有的自动扩缩容的服务支不支持相关的功能。 | 
|  |      6goodryb      2022-12-01 14:58:19 +08:00 不如服务器启动的时候执行 git  pull  拉取下代码,  配置个启动脚本打包到标准镜像中 | 
|  |      7skyrim61 OP 代码更新十分频繁, 几乎每天会更新发布近百次, 目前使用的 lsyncd 服务同步代码, 实时性和可靠性都还不错, 但是如果要使用自动脚本新增数台服务器, 在第一次部署服务器时, 可以在脚本中自动的去获取一次全量代码, 但之后, 如果代码再更新, 就不好做同步了, 因为需要更新 lsyncd 服务的同步配置文件了. | 
|  |      10vZexc0m      2022-12-01 15:27:10 +08:00 @skyrim61 #8 那就要想办法获取到新增的服务器的 IP 信息,然后进行相应的更新操作。比如在基础镜像上安装好运行环境,然后远程执行 git 命令更新代码,然后重启服务。  还是建议统一用 docker 镜像之内的进行分发好做得多,也更好。 | 
|      11qa2080639      2022-12-01 15:41:16 +08:00 https://github.com/openspug/spug 看下这个是否合适 | 
|      12sun522198558      2022-12-01 16:13:20 +08:00 那就写个定时发现新 ip 就同步一次 | 
|  |      13Twnysta      2022-12-01 16:31:26 +08:00 服务器很多就 k8s 管理,运行环境一个 docker ,代码在一个 docker 里面,部署的时候挂在一起 | 
|  |      14pota      2022-12-01 16:42:05 +08:00 之前遇到一个骚操作,所有服务器挂载同一块硬盘。。。 | 
|      15kevin1234      2022-12-01 16:47:06 +08:00 给钱 我来操作 | 
|  |      16qinrui      2022-12-01 17:45:13 +08:00 via iPhone 每天几百个版本? | 
|      17chenqh      2022-12-01 18:01:51 +08:00 写个 sftp 同步脚本不就好了吗,php 这种不是最简单吗,又不需要重启 supervisor | 
|  |      18wangritian      2022-12-01 18:12:09 +08:00 阿里云 k8s+流水线,面板操作,学一下概念就可以配置使用了 | 
|      19Geebarwan      2022-12-01 18:14:46 +08:00 via Android 我使用阿里云函数计算的时候也遇到类似问题,解决方案是用 ssd 云磁盘挂载到指定目录,所以更新也只需要更新云磁盘内容就行了。不过后来函数计算有了层的概念。 | 
|      20CnpPt      2022-12-01 20:53:26 +08:00 via Android git 的 webhook 触发 ansible 拉取代码 | 
|      21C603H6r18Q1mSP9N      2022-12-01 21:06:21 +08:00 最稳的还是 docker ,弱弱的问下 php 用的什么框架?现在测试好多非 swoole 、workerman 框架吃数据库链接 | 
|  |      23ywisax      2022-12-01 23:36:40 +08:00 每次更新后做镜像,然后新机器用新作的镜像。 最后,你要的其实是 k8s 。 | 
|  |      25skyrim61 OP @pota 我之前也是这么想的, 把项目代码目录放到 nas 文件存储中, 然后将 nas 挂载到每个 ecs 服务器下, 但是 io 性能是不行的, 服务器数量少, 可能没多大问题, 数量多就不行了, 也咨询了阿里云的人, 说最好不要将代码项目文件放 nas 中 | 
|  |      26skyrim61 OP @qinrui 没有几百个版本, 就是开发人员经常需要修改线上的代码, 更新代码比较频繁, 比如增加日志埋点, 小公司, 开发都是把线上作为测试环境的, 你懂的. | 
|  |      27skyrim61 OP @shanghai1998 我们的 php 框架是架构写的一个自定义框架 | 
|  |      28skyrim61 OP @CnpPt gitlab 的 server hook 用过, 但是 webhook 没怎么接触过, 我们也用不到 ansible.... | 
|  |      30skyrim61 OP @vZexc0m 是的, 我目前的思路也是类似的, 获取到新增的服务器 ip 地址, 然后在 gitlab 上发布时, 多发布几台, 但是这个也涉及到 同步的先后顺序, 同步完第一台后, 再同步第二台, 第三台... 可能会导致线上某个时间段内, 代码不一致的情况. 当前使用的是 gitlab 同步到第一台, 然后第一台使用 lsyncd 同步到其它台, 实时性有保证的(我猜的) | 
|      33undefine2020      2022-12-02 10:32:44 +08:00 gitlab 的 ci/cd | 
|  |      34X3en      2022-12-02 11:02:56 +08:00 直接 nfs 挂载 |