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