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

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

  •  
  •   Ptu2sha · 2021-04-10 19:09:52 +08:00 · 5359 次点击
    这是一个创建于 1358 天前的主题,其中的信息可能已经有所发展或是发生改变。
    除了 rsync 还有 k8s
    还有是吗简单的方案
    25 条回复    2021-04-12 13:44:21 +08:00
    iBugOne
        1
    iBugOne  
       2021-04-10 19:20:15 +08:00 via Android
    git push 直接部署
    eason1874
        2
    eason1874  
       2021-04-10 19:31:53 +08:00
    脸书以前有一篇文章介绍他们怎么滚动部署 PHP 代码,把部署时间从几天缩短到十几分钟,可以去找来看看。
    LanLiang
        3
    LanLiang  
       2021-04-10 20:23:26 +08:00
    docker 和 docker-compose
    kennylam777
        4
    kennylam777  
       2021-04-10 20:30:50 +08:00
    單機 - docker-compose
    多機 - 組 k8s cluster
    Ansen
        5
    Ansen  
       2021-04-10 21:48:46 +08:00 via iPhone
    ansible
    chenqh
        6
    chenqh  
       2021-04-10 21:58:46 +08:00
    @kennylam777 单机 docker-compose? 怎么平滑升级?
    SjwNo1
        7
    SjwNo1  
       2021-04-10 22:05:37 +08:00
    swarm
    dzdh
        8
    dzdh  
       2021-04-10 22:08:24 +08:00
    小规模集群 docker swarm 可以一战
    MengiNo
        10
    MengiNo  
       2021-04-10 23:26:07 +08:00
    @chenqh 偷懒一点的做法就是启动 2 个后端,比如 server1 和 server2,交叉更新,然后不断的改 nginx.conf 的反代指向。虽然很尬但是有效并且可以用 drone 自动实现。 当然的确有 swarm 加持一下 docker compose 就有了很大提升,不要老看着 k8s 对 swarm 有偏见。
    neoblackcap
        11
    neoblackcap  
       2021-04-11 00:53:28 +08:00
    灰度重启,LB 切流量,就是这么简单
    ericls
        12
    ericls  
       2021-04-11 01:38:49 +08:00 via iPhone
    Ansible 其实不错的
    MiracleKagari
        13
    MiracleKagari  
       2021-04-11 01:55:18 +08:00 via Android
    Choerodon
    jieky
        14
    jieky  
       2021-04-11 05:19:25 +08:00
    @MengiNo nginx 做负载均衡不香?为何要不断修改 nginx.conf
    kennylam777
        15
    kennylam777  
       2021-04-11 07:37:40 +08:00
    @chenqh 單機 docker-compose (不是 swarm) 好像真的沒法做 rolling update, 平時都用 k8s 的 Service IP 及 readinessProbe, 自動解決切換問題
    AngryPanda
        16
    AngryPanda  
       2021-04-11 08:47:11 +08:00
    @jieky #14 故障转移?还是 虚 IP ?
    MengiNo
        17
    MengiNo  
       2021-04-11 08:56:25 +08:00
    @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  
       2021-04-11 09:44:54 +08:00
    puppet?
    多个代码服务器是指跑同样代码的服务器吗?还是跑不同代码的服务器?
    kennylam777
        19
    kennylam777  
       2021-04-11 09:55:15 +08:00
    還是無腦 k8s 吧, 單機可以用 k3s 或者直上多機的 kubespray 安裝

    這種流量轉移在 Service IP 是基本的動作, 更有要求的用 Isito
    chenqh
        20
    chenqh  
       2021-04-11 11:32:06 +08:00
    @MengiNo 用 ansible 做的?
    zhuzhibin
        21
    zhuzhibin  
       2021-04-11 11:37:47 +08:00
    老哥们贴一些部署方案呀
    DoctorCat
        22
    DoctorCat  
       2021-04-11 13:37:15 +08:00
    ansible 足矣,saltstack 更佳
    40EaE5uJO3Xt1VVa
        23
    40EaE5uJO3Xt1VVa  
       2021-04-11 19:12:51 +08:00
    jenkins 配置好
    xuanzz
        24
    xuanzz  
       2021-04-11 19:56:36 +08:00
    有没有具体的文章教程之类的?
    goushenggege
        25
    goushenggege  
       2021-04-12 13:44:21 +08:00
    ftp 哦不 sftp
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2770 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:30 · PVG 22:30 · LAX 06:30 · JFK 09:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.