文本概述:集团子公司使用苍穹平台但版本不统一需统一管理。现状导致运维成本高。客户期望通过资源最小化解决版本不一致等问题,包括分离容器服务、数据中心等。提出通过配置nginx、rabbitmq、MC、GPaaS等平台及修改相关配置文件的解决方案,旨在实现配置统一管控并满足代码包和服务互不干扰的需求,方案可推广至所有苍穹私有云,并提醒补丁升级和跨命名空间服务地址配置注意事项。
一、业务背景
(一)业务场景/现状
一家集团公司的多个子公司都在用苍穹平台系统,但是是分别采购的,在系统维护及更新版本上互相不一致,且需要由一人统一管理。
(二)客户痛点分析
1、多个项目在用同一套开发环境做开发,且项目的苍穹版本不一致,重新部署一套苍穹消耗资源及时间,后面的运维成本也加大。
2、自己项目重启服务及更新苍穹版本的时候不影响其他客户项目使用。
(三)客户诉求与期望
在尽量减少资源及人天投入的情况下解决上述问题,即:
(1)容器服务分开
(2)数据中心分开:单独配置数据中心
(3)公共组件(zk、redis、rabbitmq、elk、nginx):共用一套。
(4)登录地址尽可能少,维护界面尽可能唯一。
二、 解决方案
(一)整体思路
1、已经有一套标准的容器苍穹环境。
2、各个服务组件正常运行,系统正常使用。
3、部署多个苍穹集群,且由同一个mc统一管理
4、假定原有集群是old,新集群是new
(二)关键步骤
步骤1:nginx-appstatic配置
配置新集群new的appstore, 新的appstore需要单独存储,将现有的appstore复制一份
cd /var/appstatic
cp -r appstore appstorenew
cp -r static-files static-filesnew
APPSTORE_URL= http://192.168.110.28:8090/appstorenew/cosmic/,这个链接可以打开就可以
步骤2:rabbitmq配置
rabbitmq新的集群新增vhost
rabbitmqctl add_vhost new
rabbitmqctl set_permissions -p new cosmic '.*' '.*' '.*
步骤3:MC配置
1、MC新增集群
集群新增的时候这几个地方写新的容器服务地址,
应用仓库配置
静态资源配置
2、租户新增
3、数据中心新增
4、集群配置修改,新旧两套集群都增加公共配置项
domain.tenantCode
tenant.code.type
步骤4:GPaaS平台配置
1、容器平台新增服务,新增web-new、mservice-new、mservice-qing-new、fileserver容器服务(fileserver可共用)
2、新增服务修改环境变量,appstore修改为第二步骤中新集群的地址,cluster为新集群的编码new,cuslibs内容可以去掉,新增JETTY_CONTEXT=new
3、新增外部访问映射端口修改为:web-new:31002
步骤5:nginx.conf配置
1、修改upstream.conf,增加新的容器端口转发
2、ierp.conf需要重新复制一份出来ierpnew.conf,修改端口,把需要修改的信息修改(高可用环境两台nginx都需要改)
端口修改为8088,location里面ierp改为new,proxy_pass修改为http://next-ierp-new(upstream.conf里面对应),租户编码修改,静态资源路径修改为新集群的静态资源,msgwatch段ierp修改new
3、reload nginx生效
步骤6:ELK配置
logstash配置文件修改:
kingdee/elk/logstash/logstash-6.7.0/conf/javalog.conf,增加集群new的配置信息,重启服务
步骤7:登录验证
1、登录验证
2、es日志验证
三 、可推广价值
1、方案适用于所有的苍穹私有云
2、满足客户代码包和服务互不影响的需求,并且节约了服务器资源,实现了配置统一管控
四 、注意事项
1、补丁升级的时候补丁文件上传位置不变:/var/appstatic/patchwarehouse/ierpV1.x-latest,只是应用仓库分开了
2、新增的容器如果跨命名空间,则mc中服务地址需要写上命名空间,例如:new.mservice-new:8080/new
推荐阅读