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

怎么随时分辨出哪个是预生产环境,哪个是生产环境呢?

  •  
  •   itechnology · 66 天前 · 4158 次点击
    这是一个创建于 66 天前的主题,其中的信息可能已经有所发展或是发生改变。

    事情是这样的。公司目前有 A 和 B 两套生产环境,平时只用其中一套,另一套作为预生产环境,每次上线后轮换。

    举个例子,当前生产是 A 环境,那么 B 环境就是预生产,12 月中旬需要上线,那这个时候会把代码先上线到预生产环境,也就是 B 环境,等预生产确定没问题之后,运维会把流量切到预生产,也就是 B 环境,这个时候 B 环境就是生产环境,A 环境就变成了预生产……如此循环。

    现在的问题是,因为 A 和 B 两个环境经常轮换,导致开发人员经常搞不清楚哪个是生成环境,哪个是预生产环境。

    请问有没有什么好的办法可以快速区分?

    目前运维想的办法是每次上线之后把堡垒机的备注改一下。

    第 1 条附言  ·  66 天前
    目前很操蛋的是,每次线上出了问题,想登录堡垒机到对应的服务器看日志,必须要先问运维现在的生产是哪几台服务器。
    33 条回复    2022-12-02 10:55:23 +08:00
    singerll
        1
    singerll  
       66 天前   ❤️ 2
    生产环境不允许开发直接访问,有特殊情况提申请。
    EmptyDX
        2
    EmptyDX  
       66 天前
    测试环境加个显眼的背景色区分
    lcy630409
        4
    lcy630409  
       66 天前
    生产环境的 apache 给个特殊的标记
    xuanbg
        5
    xuanbg  
       66 天前
    让运维给一个动态的入口就行了呀,访问的流量切到生产,发布 /测试的网络流量也是流量啊,一样可以切到预生产。这样你们只要使用特点的入口就行了。
    hayhong123
        6
    hayhong123  
       66 天前
    可以在登陆或者首页接口里 塞入一个环境的 ENV cookie 后端通过 AB 环境不同的配置文件去取 ENV 信息 这样访问就知道在哪个环境了
    rekulas
        7
    rekulas  
       66 天前
    感觉这种发布机制有问题,a,b + dev 环境是不是好点,dev 开发环境,b 预生产,a 生产不允许直接访问
    dev 测试完毕更新到 b ,打一部分流量过来没问题自动同步环境到 a ,流量全部切回 a ,这样还可以灰度测试也不会冲突
    everyx
        8
    everyx  
       66 天前
    好奇这种情况,如何涉及到数据库的修改怎么在两种环境下同步数据的,能否分享一下?
    yogogo
        9
    yogogo  
       66 天前   ❤️ 1
    不是应该每次更新迭代完,两个都生产环境了吗?每次版本更新的时候,每次默认 A 是用预生产测试
    wangritian
        10
    wangritian  
       66 天前
    好奇怪,也有同事跟我讲过类似的 AB 环境,但服务器资源会不会浪费一半呢?只有生产环境才有大流量。我理解的预生产应该是用于蓝绿发布的临时环境,发布成功后需要把原生产环境下线的
    adoal
        11
    adoal  
       66 天前
    A 和 B 的访问通过一层反代或者其它接入方式(比如浮动 IP )控制,用户和开发不直接连 A 和 B 。在接入控制层,生产环境总是固定为一组网络资源,预生产环境总是固定为另一组网络资源,往后端接入时,根据切换映射到不同的实际资源。

    类似某些主备数据库集群里常用的做法,A 有固定 IP 1 ,B 有固定 IP 2 ,两者一个是可读可写的主库,一个是只读的备库从主库同步数据过来。当现任主库挂了时从库提升,运维人员去修复主库。浮动 IP 3 永远飘到现任主库上,浮动 IP 4 永远飘到现任备库上,当主库降级修复时 3 和 4 都在新的主库上。这样,不论 A 和 B 角色怎么调整,应用程序要访问主库就用 IP 3 ,访问备库就用 IP 4 。当然你这个场景是切换整套业务系统,那可能需要自己写一些逻辑来在接入层控制。
    james2013
        12
    james2013  
       66 天前
    觉得这种切换逻辑总会出问题的
    正常来说,A 固定长期是生产环境,B 是预生产.在 B 环境没有问题,将流量切到 B,在 A 上线代码后,将流量重新切回到 A
    oneisall8955
        13
    oneisall8955  
       66 天前 via Android
    生产和预发布同一个库?
    opengps
        14
    opengps  
       66 天前
    就不应该用切流量的方式,测试一般是完全隔离,单独部署一套测试环境的域名等信息:单独的测试公众号,单独的测试网址,单独的测试环境等等
    zhouyg
        15
    zhouyg  
       66 天前
    不应该切服务器,应该把生产环境固化下来
    itechnology
        16
    itechnology  
    OP
       66 天前
    @rekulas 目前就是你说的这种模式。现在其实有四套环境,开发环境、测试环境、预生产环境和生产环境。

    开发环境是用于后端开发人员和前端开发人员联调用的;联调完没问题后更新到测试环境给测试测,测试测完没问题之后,更新到预生产环境,预生产测试没问题后切换为生产。
    itechnology
        17
    itechnology  
    OP
       66 天前
    @oneisall8955 不是同一个数据库,但是预生产的数据库是从生产数据库数据拉出来的一个临时库
    Jooooooooo
        18
    Jooooooooo  
       66 天前
    为啥是这种模式, 正常来讲预发不应该和线上轮换呀. 一般配置也不一样.
    itechnology
        19
    itechnology  
    OP
       66 天前
    @Jooooooooo 这个是领导定的方案,我们没法改变
    Yuesh1
        20
    Yuesh1  
       66 天前
    像 JVM 里面的 s1 和 s2 ,标记复制算法
    cdlnls
        21
    cdlnls  
       66 天前
    我们是在 http 请求头里面增加了一个字段,通过这个字段能识别出后端是什么环境。
    exonuclease
        22
    exonuclease  
       66 天前
    blue green 发布啊 很正常 不过一般来说 inactive 的会 scale down 的 我们是监控里面有个页面会显示两个 side 的流量 不太精致但是可以用
    q474818917
        23
    q474818917  
       66 天前
    你们领导是个人才,百年难得一遇的,贵公司应庆幸拥有此人。
    mrzhangrb
        24
    mrzhangrb  
       66 天前
    🐂
    fiypig
        25
    fiypig  
       66 天前
    区分开,搞那么麻烦 ,很容易搞出问题吧
    tang00337788
        26
    tang00337788  
       66 天前
    两套环境的访问地址不一样吧。搞个内部人员隐藏按钮,可以查看访问地址的。
    karott7
        27
    karott7  
       66 天前
    这么搞肯定出问题,长期下来有几个人能分得清?不都是固定环境么
    zbianbiaos
        28
    zbianbiaos  
       66 天前
    Linux 的 hostname
    sujin190
        29
    sujin190  
       66 天前 via Android
    所以不应该把日志自动汇总到统一的日志管理服务器么
    bjzhush
        30
    bjzhush  
       66 天前
    我之前的办法是不同的环境,zsh 采用不同的主题和颜色。
    你也可以试试,给线上环境加上红色主题,这样会比较容易让人认真对待
    securityCoding
        31
    securityCoding  
       66 天前 via Android
    这个发布流程是个人才
    itechnology
        32
    itechnology  
    OP
       65 天前
    @sujin190 目前还没有做,后续据说会考虑用 elk
    WhiteDragon96
        33
    WhiteDragon96  
       65 天前
    每次发布,写个发布日志
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   299 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 20:46 · PVG 04:46 · LAX 12:46 · JFK 15:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.