首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

分享一次失败的发版经历

大家都知道,对于一个新的项目上线,事前有很多工作需要准备,这些工作准备不好,会导致该项目在上线的时候,出现各种问题,今天就和大家分享一个失败的上线经历。

一、介绍下项目上线的流程

由于新项目上线,所以涉及的地方有很多,前端项目、NGINX、网关、后端、K8S、线上数据库等。如图所示:

具体步骤如下:

1、创建线上数据库,创建表等。

2、NGINX配置。

3、网关配置。

4、前端项目部署。

5、网关项目部署。

6、后端项目部署。

7、K8S中启动项目。

本来一个很简单的项目上线,却遇到了各种问题。下面具体介绍下遇到的问题。

二、遇到的问题

1、在前端项目部署的时候,运维发现前端设置的端口不符合线上K8S中设置的规范。后让前端修改重新打包部署。

2、后端项目部署后,在K8S中启动项目的时候发现项目起来了,但容器没有起来。与运维讨论后得知项目的端口不符合K8S的设置,导致容器无法启动。后端修改端口重新打包发版。

3、在项目都启动了且文件配置好之后,访问系统进行测试,发现前端调后端接口的时候报错。查看nginx配置发现,新项目的请求配置是照着测试环境配的,但测试环境配置nginx的时候是没有经过网关,直接请求后端的。运维这边又重新配置nginx。

4、nginx重新配置后,再次进行系统访问,还是报错。这次请求到了网关,但网关直接返回报错。看后端项目日志,发现请求没有到后端。在这里就猜测是网关的问题,于是让运维将后端项目的端口映射输出,用postmain访问,看能不能调通接口,测试发现,直接访问可以请求到后端,并且能正常返回。这个网关的服务配置可能没有配置好。重新检查了网关项目的配置且重新发布,结果还是一样的问题,这表明网关没有问题。猜测是不是注册中心出了问题,又重启了注册中心,但还是一样。(这里找问题花的时间最多,所有可能有影响的地方都去排查)

5、直到后面运维发现,后端项目有一个设置有问题。在经过网关时,K8S会根据服务名从注册中心找到对应的服务,结果后端项目有一个设置和K8S设置的要求不一样,导致无法找到后端的服务。将后端项目将对应的配置改了,重新发版后,项目终于好了。

三、遇到问题的原因分析

整个新项目上线本来只需要几分钟就能搞定的,结果整整花了2个小时才搞定。对于这次的新项目上线出现的问题进行分析,得到以下几点原因:

1、项目上线的人员没有微服务部署经验(运维人员除外)。

2、测试环境与线上环境不一样,测试没有用K8S而线上用了。

3、后端项目是开发自己拷贝其他子项目的框架,对其中的设置,有部分不太懂。

4、公司内部项目,没有和线上一样的预生产环境,进行预发布,提前处理问题。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200609A0SBOV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券