怎么随时分辨出哪个是预生产环境,哪个是生产环境呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
itechnology
V2EX    程序员

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

  •  
  •   itechnology 2022-12-01 09:36:33 +08:00 5580 次点击
    这是一个创建于 1045 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    第 1 条附言    2022-12-01 18:31:57 +08:00
    目前很操蛋的是,每次线上出了问题,想登录堡垒机到对应的服务器看日志,必须要先问运维现在的生产是哪几台服务器。
    33 条回复    2022-12-02 10:55:23 +08:00
    singerll
        1
    singerll  
       2022-12-01 09:39:32 +08:00   2
    生产环境不允许开发直接访问,有特殊情况提申请。
    EmptyDX
        2
    EmptyDX  
       2022-12-01 09:41:12 +08:00
    测试环境加个显眼的背景色区分
    brucmao
        3
    brucmao  
       2022-12-01 09:41:30 +08:00
    lcy630409
        4
    lcy630409  
       2022-12-01 09:42:31 +08:00
    生产环境的 apache 给个特殊的标记
    xuanbg
        5
    xuanbg  
       2022-12-01 09:44:36 +08:00
    让运维给一个动态的入口就行了呀,访问的流量切到生产,发布 /测试的网络流量也是流量啊,一样可以切到预生产。这样你们只要使用特点的入口就行了。
    hayhong123
        6
    hayhong123  
       2022-12-01 10:01:23 +08:00
    可以在登陆或者首页接口里 塞入一个环境的 ENV cookie 后端通过 AB 环境不同的配置文件去取 ENV 信息 这样访问就知道在哪个环境了
    rekulas
        7
    rekulas  
       2022-12-01 10:12:49 +08:00
    感觉这种发布机制有问题,a,b + dev 环境是不是好点,dev 开发环境,b 预生产,a 生产不允许直接访问
    dev 测试完毕更新到 b ,打一部分流量过来没问题自动同步环境到 a ,流量全部切回 a ,这样还可以灰度测试也不会冲突
    everyx
        8
    everyx  
       2022-12-01 10:15:12 +08:00
    好奇这种情况,如何涉及到数据库的修改怎么在两种环境下同步数据的,能否分享一下?
    yogogo
        9
    yogogo  
       2022-12-01 10:22:23 +08:00   1
    不是应该每次更新迭代完,两个都生产环境了吗?每次版本更新的时候,每次默认 A 是用预生产测试
    wangritian
        10
    wangritian  
       2022-12-01 10:25:55 +08:00
    好奇怪,也有同事跟我讲过类似的 AB 环境,但服务器资源会不会浪费一半呢?只有生产环境才有大流量。我理解的预生产应该是用于蓝绿发布的临时环境,发布成功后需要把原生产环境下线的
    adoal
        11
    adoal  
       2022-12-01 10:27:05 +08:00
    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  
       2022-12-01 10:30:47 +08:00
    觉得这种切换逻辑总会出问题的
    正常来说,A 固定长期是生产环境,B 是预生产.在 B 环境没有问题,将流量切到 B,在 A 上线代码后,将流量重新切回到 A
    itechify
        13
    itechify  
    PRO
       2022-12-01 10:31:54 +08:00 via Android
    生产和预发布同一个库?
    opengps
        14
    opengps  
       2022-12-01 10:41:18 +08:00
    就不应该用切流量的方式,测试一般是完全隔离,单独部署一套测试环境的域名等信息:单独的测试公众号,单独的测试网址,单独的测试环境等等
    zhouyg
        15
    zhouyg  
       2022-12-01 10:50:27 +08:00
    不应该切服务器,应该把生产环境固化下来
    itechnology
        16
    itechnology  
    OP
       2022-12-01 11:26:30 +08:00
    @rekulas 目前就是你说的这种模式。现在其实有四套环境,开发环境、测试环境、预生产环境和生产环境。

    开发环境是用于后端开发人员和前端开发人员联调用的;联调完没问题后更新到测试环境给测试测,测试测完没问题之后,更新到预生产环境,预生产测试没问题后切换为生产。
    itechnology
        17
    itechnology  
    OP
       2022-12-01 11:27:19 +08:00
    @oneisall8955 不是同一个数据库,但是预生产的数据库是从生产数据库数据拉出来的一个临时库
    Jooooooooo
        18
    Jooooooooo  
       2022-12-01 11:49:46 +08:00
    为啥是这种模式, 正常来讲预发不应该和线上轮换呀. 一般配置也不一样.
    itechnology
        19
    itechnology  
    OP
       2022-12-01 12:55:52 +08:00
    @Jooooooooo 这个是领导定的方案,我们没法改变
    Yuesh1
        20
    Yuesh1  
       2022-12-01 12:58:58 +08:00
    像 JVM 里面的 s1 和 s2 ,标记复制算法
    cctv6
        21
    cctv6  
       2022-12-01 13:15:35 +08:00
    我们是在 http 请求头里面增加了一个字段,通过这个字段能识别出后端是什么环境。
    exonuclease
        22
    exonuclease  
       2022-12-01 15:59:27 +08:00
    blue green 发布啊 很正常 不过一般来说 inactive 的会 scale down 的 我们是监控里面有个页面会显示两个 side 的流量 不太精致但是可以用
    q474818917
        23
    q474818917  
       2022-12-01 16:32:53 +08:00
    你们领导是个人才,百年难得一遇的,贵公司应庆幸拥有此人。
    mrzhangrb
        24
    mrzhangrb  
       2022-12-01 16:35:45 +08:00
    fiypig
        25
    fiypig  
       2022-12-01 16:46:59 +08:00
    区分开,搞那么麻烦 ,很容易搞出问题吧
    tang00337788
        26
    tang00337788  
       2022-12-01 17:00:47 +08:00
    两套环境的访问地址不一样吧。搞个内部人员隐藏按钮,可以查看访问地址的。
    karott7
        27
    karott7  
       2022-12-01 17:56:27 +08:00
    这么搞肯定出问题,长期下来有几个人能分得清?不都是固定环境么
    zbianbiaos
        28
    zbianbiaos  
       2022-12-01 18:44:41 +08:00
    Linux 的 hostname
    sujin190
        29
    sujin190  
       2022-12-01 18:50:18 +08:00 via Android
    所以不应该把日志自动汇总到统一的日志管理服务器么
    bjzhush
        30
    bjzhush  
       2022-12-01 22:55:06 +08:00
    我之前的办法是不同的环境,zsh 采用不同的主题和颜色。
    你也可以试试,给线上环境加上红色主题,这样会比较容易让人认真对待
    securityCoding
        31
    securityCoding  
       2022-12-02 00:49:59 +08:00 via Android
    这个发布流程是个人才
    itechnology
        32
    itechnology  
    OP
       2022-12-02 09:37:31 +08:00
    @sujin190 目前还没有做,后续据说会考虑用 elk
    WhiteDragon96
        33
    WhiteDragon96  
       2022-12-02 10:55:23 +08:00
    每次发布,写个发布日志
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2195 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 00:53 PVG 08:53 LAX 17:53 JFK 20:53
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86