苍穹去nginx方法原创
金蝶云社区-唐涛_8727
唐涛_8727
10人赞赏了该文章 738次浏览 未经作者许可,禁止转载编辑于2021年08月18日 11:23:05

    有客户会有这样的疑惑,苍穹自身的前端是Jetty,为什么要用nginx作为前端入口?甚至有些客户有自己的反向代理服务,要求苍穹系统中不能自己使用nginx服务。

    在苍穹去nginx服务前,我们要清楚nginx服务在苍穹系统中提供什么能力。

    (1)苍穹入口,反向代理,为苍穹携带header传租户编码,苍穹服务数据中心等信息都依赖租户编码。

    (2)提供应用仓库功能,现动态微服务,即各微服务可动态加载应用包

    (3)存放苍穹静态资源,实现动静分离,便于CDN加速

    (4)提供补丁仓库功能,便于mc去更新苍穹补丁

    (5)其他方案的实现,如内外网访问隔离、多地址访问方案等

    那么去掉nginx服务就要解决一些必要能力的问题:租户编码、应用仓库、动静分离、补丁仓库。


1、解决租户编码问题,可以在mc中的公共配置项中配置(mc自身租户编码需要修改zk的值,或者通过JVM参数加载),保存并发布

    tenant.code.type=config

    domain.tenantCode=租户编码

2、解决应用仓库问题,需要重新制作镜像,可以将苍穹应用仓库中的zip包(含二开包)解压成jar包,放置对应的目录,并制作成镜像。同时需要修改镜像中start.sh脚本,禁用kd-download-1.0.jar的使用,即服务启动时不用去应用仓库拉取jar包。

3、解决静态资源问题,需要重新制作镜像,可以将苍穹静态资源webapp目录下的所有文件拷贝到制作镜像的webapp目录下(文件与WEB-INF同级),然后制作成镜像

4、解决补丁仓库问题,补丁仓库只有补丁更新时才需要,虽然解决以上三个问题就能访问苍穹了。但是补丁无法更新无法做到版本迭代,所以补丁仓库还是比较重要的。目前mc研发已经提供解决方法,但是过程还是比较复杂繁琐的。即通过一台执行机,放置更新脚本和工具,然后把元数据包进行处理后,以https方式并参数的形式传到执行机的配置文件里面,通过工具调用mc接口进行升级。

当然,补丁仓库、应用仓库也可以通过tomcat或者其他web服务提供http地址也是可行的。

总结:苍穹去nginx化是非常复杂的。而且nginx提供的能力有一定程度的优化苍穹访问速度,以及版本快速迭代,动态微服务的能力。所以能尽量不去nginx就不要去掉nginx。

赞 10