一台机器上运行多个版本的苍穹服务原创
金蝶云社区-吴辉宇
吴辉宇
9人赞赏了该文章 857次浏览 未经作者许可,禁止转载编辑于2022年08月10日 10:13:41

场景:不同客户部署的苍穹版本不一样,为了保持稳定性,不考虑升级苍穹。这样的话,就会存在多个版本的苍穹服务,那么多个版本苍穹,如何在同一个服务器上共存呢?是我们本次需要研究的内容。


首先,多套苍穹共享,通过在MC创建多集群实现。我们先从苍穹依赖的服务分析,哪些服务可以共享,哪些服务需要启动多个进程。

  1. nginx服务:服务苍穹服务的转发,涉及到静态资源的访问。可公用,但需要修改或增加conf文件。

  2. zookeeper服务:苍穹配置中心和注册中心,通过集群编码隔离,可公用。

  3. redis服务:缓存数据中心,通过集群编码或数据中心id隔离,可公用。

  4. rabbitmq服务:消息服务,不同的集群,可通过增加vhost隔离消息。可公用。

  5. kafka服务:日志消息服务,可公用

  6. logstash服务:日志解析服务,负责从kafaka读取日志并写入到es服务中。可公用,但要修改配置。

  7. elasticsearch服务:日志存储服务,通过索引为集群编码隔离,可公用。
  8. MC服务:苍穹管理服务,跟苍穹平台没有强依赖关系,可公用。
  9. mservice服务:苍穹服务,启动需要从appstore拉取jar包,不能公用。
  10. mservice-qing服务:轻分析服务,启动需要从appstore拉取jar包,不能公用。
  11. mysql/postgresql服务:数据库服务,通过数据库隔离,可公用,需要多套数据中心,增大数据库开销。
  12. fileserver服务:通过数据中心隔离,可公用。


针对上一步的分析,做个简单的总结:

    1. zookeeper,redis,kafka,elasticsearchfileserver,MC服务可以直接共享,不需要做任何调整

    2. mservice,mservice-qing需要多套,根据集群编码启动。

    3. mysql/postgresql数据库可以公用,但需要初始化多套数据中心, 会加大数据库的连接数。可通过安装多个数据库分担压力。

    4. nginx,rabbitmq,logstash可公用,但要修改配置支持。


每增加一套苍穹,资源消耗也会随着增加,确保服务器有足够的资源,大体需要的额外资源如下:

    1. 磁盘空间,每增加一套苍穹,appstore和静态资源都要多一份。

    2. 数据库存储,每增加一套苍穹,需要多一套数据中心。

    3. 每增加一套苍穹,需要启动新的mservice,mservice-qing服务,约4G内存消耗

    4. 其他服务小额消耗,可不处理,定期关注服务器资源消耗情况即可。


理论分析完成,那么要如何操作可以达到我们想要的效果呢?本文以linux苍穹为例,其他方式搭建的苍穹,可灵活调整。

假设苍穹安装目录为/kingdee,新加的苍穹集群编码为demo

1. 在苍穹安装目录/kingdee下创建"cosmic_集群编码"的目录,例如cosmic_demo,将/kingdee/cosmic目录下的mservice和mservice-qing服务,复制到/kingdee/cosmic_demo目录下。

图片.png


2. 进入到新苍穹目录/kingdee/cosmic_demo目录下,修改mservice和mservice-qing服务下/bin/setappenv.sh文件的APPSTORE_URL,clusterNumber和WEB_PORT值。如下:

图片.png


3. 配置service服务,将/usr/lib/systemd/system目录下的mservice.service和mservice-qing.service服务复制一份,以“mservice_集群编码”格式命令。例如mservice.service复制成mservice_demo.service,并修改内容,如下:

图片.png


4. 修改完成后,新的苍穹服务还不能正常启动,因为修改了APPSTORE_URL地址,而nginx的配置还没修改,因此启动会失败。那么我们现在来修改nginx。在/usr/local/nginx/conf/conf.d/目录下,复制ierp.conf文件,修改监听端口并调整/ierp拦截跳转的服务地址和访问静态资源的跳转。

图片.png


5. 转发规则已经配置完成了,但是appstore和静态资源还没上传多份。在/var/appstatic/appstore目录下,创建"cosmic_集群编码“的目录,将新苍穹的appstore复制到这个目录下。在/var/appstatic/static-files/创建创建"cosmic_集群编码“的目录,上传新苍穹的静态资源到该目录下的webapp目录下。


6. 修改完成后重启nginx。到此nginx处理完成。新苍穹还是不能正常启动,我们处理了appstore和静态资源,接下来我们处理元数据,也就是在数据库服务,创建数据中心,并导入数据文件。(若有多个数据库,不需要执行当前步,在MC数据库管理维护记录即可


7. rabbitmq新增vhost,vhost值可以用“集群编码”,如下图:

图片.png


8. 登录MC服务,创建集群,创建租户,新增数据中心,绑定建库规则。保存后发布zk。

图片.png


9. 重启mservice_demo和mservice-qing_demo服务,到此苍穹可以正常访问了。


10. 苍穹能正常访问之后,我们来处理日志服务。日志服务只需要处理logstash服务,路径:苍穹安装目录/elk/logstash/logstash-6.8.0/config,修改javalog.conf,复制大框的内容,按格式修改小框的信息。如下图:

图片.png


总结:最后,回顾整个过程,步骤并不多,说复杂其实也不难,需要我们对整个苍穹服务有深刻的理解,熟悉各组件之间的关系逻辑,就能做出来。如若上述内容有错误的地方,欢迎大家指导~

图标赞 9
9人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0