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

阿里云, 如何给 slb 后面的多个 ecs 更新代码?

  •  
  •   kankana · 2016-10-17 08:57:01 +08:00 · 4061 次点击
    这是一个创建于 2969 天前的主题,其中的信息可能已经有所发展或是发生改变。

    赶鸭子上架. 不懂运维.

    代码托管在 github.

    要使用 aliyun, 在 slb 后面部署多个 ecs, 只有 slb 有公网地址.

    如何给后面的 ecs 更新代码呢?

    Thanks in advance! :]

    21 条回复    2019-12-10 12:52:40 +08:00
    timothyye
        1
    timothyye  
       2016-10-17 09:05:34 +08:00 via Android
    你们是用的金融云吗?
    pepesii
        2
    pepesii  
       2016-10-17 09:06:06 +08:00
    可以试试用 Fabric
    cocochan
        3
    cocochan  
       2016-10-17 09:08:37 +08:00
    VPN 进内网...
    huigeer
        4
    huigeer  
       2016-10-17 09:09:55 +08:00 via Android
    把公网机器当成发布机,内网 rsync 同步
    kankana
        5
    kankana  
    OP
       2016-10-17 09:10:27 +08:00
    @pepesii 在公司内网内, 部署到内部的测试服务器, 用的就是 fabric.

    问题是, 阿里云 slb 后面的 ecs 没有公网 ip, 不知道怎么更新代码上去.

    想问下是不是有 devops 的方法, 做代码部署的.
    kankana
        6
    kankana  
    OP
       2016-10-17 09:12:52 +08:00
    @huigeer
    倒是一个思路. 让 slb 后面的 ecs 去同步更新的代码.
    但是, 我是希望找到一种主动, 由我这边发起的代码更新.
    好烦啊~
    kankana
        7
    kankana  
    OP
       2016-10-17 09:16:15 +08:00
    刚 google 下, 国外的是说, 创建包含新代码的镜像, 再创建相同数目的 ecs, 最后替换掉旧的 ecs
    shoaly
        8
    shoaly  
       2016-10-17 09:18:32 +08:00   ❤️ 1
    开多一个 ecs 开外网端口. 然后 slb 所有的 ecs 能跟新的 ecs 互通的.
    这样你 push 代码到新 ecs 上, 新 ecs 负责 代码更新到 各个 slb.all_ecs
    kankana
        9
    kankana  
    OP
       2016-10-17 09:20:20 +08:00
    @shoaly bingo! 多谢
    odirus
        10
    odirus  
       2016-10-17 09:25:50 +08:00
    如果的代码是常驻内存这种,完全可以在一台具有公网 IP 的机器上搭建一个 samba ,然后其他机器共享某个目录,里面用于存放打包好的文件。

    其他服务器全部加载这个包文件执行。。。

    但如果不是常驻内存的话,还是通过 rsync 同步吧,毕竟每次执行都要加载代码。
    shoaly
        11
    shoaly  
       2016-10-17 09:26:16 +08:00
    刚 google 下, 国外的是说, 创建包含新代码的镜像, 再创建相同数目的 ecs, 最后替换掉旧的 ecs..
    属于比如你的项目已经不怎么频繁更新了, 横向延伸用的, 比如说游戏开新服...
    incompatible
        12
    incompatible  
       2016-10-17 09:36:20 +08:00 via iPhone   ❤️ 1
    买一台有公网 ip 的 ecs (如果你的其他 ecs 是经典网络私网实例就买经典网络带公网 ip 的 ecs ;如果你的其他 ecs 是 vpc 网络的实例那么就买同一个 vpc 下的实例+一个弹性公网 ip )做为跳板机,做发布、维护等操作时先 ssh 到跳板机上,再从跳板机 ssh 到你的其他 ecs 上。
    goodryb
        13
    goodryb  
       2016-10-17 10:41:15 +08:00
    12 楼正解,楼主应该找个兼职运维
    tomczhen
        14
    tomczhen  
       2016-10-17 11:46:53 +08:00
    不管什么方案都需要一个跳板机,剩下的就看实际情况选择方案了。
    需求简单的话可以用 git/svn hook 实现,复杂的话, saltstack 之类的工具都已经很成熟了,挑个自己喜欢的就行。
    jwnlive
        15
    jwnlive  
       2016-10-17 11:58:33 +08:00
    阿里云建议是把 ecs 搞成无状态的,挂载统一的存储来用,不过还是感觉用 rsync 来同步比较方便,做成代码发布机的模式
    tczzjin
        16
    tczzjin  
       2016-10-17 12:11:08 +08:00
    可以试试 lsync,配置和使用比 rsync 简单得多...自动同步所有代码
    Aliencn
        17
    Aliencn  
       2016-10-17 12:21:45 +08:00
    除了上面说的几个方案,补充两点
    1.如果是这种专有网络的 ecs ,可以搭配阿里云前段时间刚退出的一个 nas 服务,一个存储可挂载多个 esc 主机。
    2.每个机器弄个脚本实时检测有没有代码更新
    realpg
        18
    realpg  
       2016-10-17 13:29:50 +08:00   ❤️ 1
    你的 ECS 连按流量的管理用外网都不开?
    太吝啬了吧
    kankana
        19
    kankana  
    OP
       2016-10-17 14:08:13 +08:00
    @realpg 哈哈, 你不说, 我还不知道有这个功能.....
    littlehz
        20
    littlehz  
       2016-10-17 15:38:39 +08:00   ❤️ 1
    开一台机器,同时有外网和内容,用于管理,配置 ssh 目标机内网 IP `ProxyCommand ssh -q -W %h:%p 管理机公网 IP 或别名`,用证书登录。
    在这台管理机上同步推送代码。
    这台管理机平时也可以放一些 cron 、队列 daemon 进程等任务,省的浪费资源。
    avenger
        21
    avenger  
       2019-12-10 12:52:40 +08:00 via iPhone
    直接用阿里云的 nas 把业务代码部署在共享 nas 上,这样更新一台,所有服务器都是最新代码了,是否可行?不知道有没有 io 瓶颈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5480 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:43 · PVG 11:43 · LAX 19:43 · JFK 22:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.