V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Ptu2sha
V2EX  ›  PHP

你们都是怎么维护多个代码服务器的

  •  
  •   Ptu2sha · 38 天前 · 3111 次点击
    这是一个创建于 38 天前的主题,其中的信息可能已经有所发展或是发生改变。
    除了 rsync 还有 k8s
    还有是吗简单的方案
    25 条回复    2021-04-12 13:44:21 +08:00
    iBugOne
        1
    iBugOne   38 天前 via Android
    git push 直接部署
    eason1874
        2
    eason1874   38 天前
    脸书以前有一篇文章介绍他们怎么滚动部署 PHP 代码,把部署时间从几天缩短到十几分钟,可以去找来看看。
    LanLiang
        3
    LanLiang   38 天前
    docker 和 docker-compose
    kennylam777
        4
    kennylam777   38 天前
    單機 - docker-compose
    多機 - 組 k8s cluster
    Ansen
        5
    Ansen   38 天前 via iPhone
    ansible
    chenqh
        6
    chenqh   38 天前
    @kennylam777 单机 docker-compose? 怎么平滑升级?
    SjwNo1
        7
    SjwNo1   38 天前
    swarm
    dzdh
        8
    dzdh   38 天前
    小规模集群 docker swarm 可以一战
    MengiNo
        10
    MengiNo   38 天前
    @chenqh 偷懒一点的做法就是启动 2 个后端,比如 server1 和 server2,交叉更新,然后不断的改 nginx.conf 的反代指向。虽然很尬但是有效并且可以用 drone 自动实现。 当然的确有 swarm 加持一下 docker compose 就有了很大提升,不要老看着 k8s 对 swarm 有偏见。
    neoblackcap
        11
    neoblackcap   38 天前
    灰度重启,LB 切流量,就是这么简单
    ericls
        12
    ericls   38 天前 via iPhone
    Ansible 其实不错的
    MiracleKagari
        13
    MiracleKagari   38 天前 via Android
    Choerodon
    jieky
        14
    jieky   38 天前
    @MengiNo nginx 做负载均衡不香?为何要不断修改 nginx.conf
    kennylam777
        15
    kennylam777   37 天前
    @chenqh 單機 docker-compose (不是 swarm) 好像真的沒法做 rolling update, 平時都用 k8s 的 Service IP 及 readinessProbe, 自動解決切換問題
    AngryPanda
        16
    AngryPanda   37 天前
    @jieky #14 故障转移?还是 虚 IP ?
    MengiNo
        17
    MengiNo   37 天前
    @jieky 不行的。流程应该是这样的:比如 server1 是 version X 、server2 是 version X-1,nginx 指向 server1 。现在想部署 version X+1,则通过 docker-compose up 把镜像版本升级到 X+1 并且会删除 server2 重新部署一个新的叫 server2 的容器,此时因为 nginx 指向 server1,更新不受影响。## 最后再把 nginx 改成指向 server2 正式对外更新,然后要过一会儿,等 server1 确实没有流量且剩余的东西都运行完了,才能把 server1 关掉减少资源占用。

    从##号处断点来看,到 ## 为止 server1 是 X 、server2 是 X+1,他们两个都可以提供服务。nginx 配置负载均衡,要如何阻止他在 server2 准备好了之后立刻停止像 server1 分发流量呢? nginx 虽然能在 server1 关掉之后自动识别出 server1 down 掉了从而只把流量发给 server2,但现在问题是 server1 一直都能接到流量,导致一直无法优雅关闭。

    我们现在比较尴尬的地方就在于,我们并不想让流量均衡而是想实现流量转移。所以只能通过手动修改 nginx.conf 的负载权重,控制两个 server 的流量,这样来实现 low 版的无停机更新、灰度发布和故障回滚。可能是个人水平不够也可能是当局者迷,如果有更优雅的方法请赐教。
    skys215
        18
    skys215   37 天前
    puppet?
    多个代码服务器是指跑同样代码的服务器吗?还是跑不同代码的服务器?
    kennylam777
        19
    kennylam777   37 天前
    還是無腦 k8s 吧, 單機可以用 k3s 或者直上多機的 kubespray 安裝

    這種流量轉移在 Service IP 是基本的動作, 更有要求的用 Isito
    chenqh
        20
    chenqh   37 天前
    @MengiNo 用 ansible 做的?
    zhuzhibin
        21
    zhuzhibin   37 天前
    老哥们贴一些部署方案呀
    DoctorCat
        22
    DoctorCat   37 天前
    ansible 足矣,saltstack 更佳
    yanzhiling2001
        23
    yanzhiling2001   37 天前
    jenkins 配置好
    xuanzz
        24
    xuanzz   37 天前
    有没有具体的文章教程之类的?
    goushenggege
        25
    goushenggege   36 天前
    ftp 哦不 sftp
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   980 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 21:41 · PVG 05:41 · LAX 14:41 · JFK 17:41
    ♥ Do have faith in what you're doing.