1. 概述:

 弹内应用使用的大量弹内基础设施在云上不存在或者有对应的产品,但是无法无缝上云需要改造,具体对应如下:

序号弹内组件云上说明及注意事项
1BUC-SSOaliyun RAM(OpenID)云上可以使用 aliyun 的 ram 以及 openID 配置统一用户和单点登录应用,需要二次开发
2Oplog操作日志审计或者自定义开发简易 Oplog操作审计日志投递到 OSS 或者日志服务,使用云上操作审计日志查询。 或者自己开发一个简易操作审计日志,直接存数据库。
3 QONS(云上 Q)使用 taobao-hsf.sar 包,配置 ak/sk 无缝上云,需要注意新支持的 namespaces
4TDDLDRDS无缝上云,链接方式需要修改;
5mysqlRDS无缝上云
6IDB 数据管理平台DMS无缝上云,DMS 对部分低版本 DRDS 不支持。
7TMDWeb 应用防火墙7层协议直接配置可支持,4层协议需要改造使用 TMD 的改用 waf 的话,云上 waf 支持的二次开发接口较少
8容器服务云上容器服务(Kubernetes)云上容器服务控制台尚未稳定成熟,需要自己熟练使用 kubernetes 运维。
9Aone云效部分 aone 功能不支持,与容器服务 K8s 能较完美整合,建议使用。
10sentinel限流降级组件AHAS 应用高可用服务,Diamond需要部署到 edas for ecs 才行,云上 edas,云效,容器服务尚未整合好,可以考虑自己使用 sentinel 在 diamond 中配置,自己部署控制台,需要改造统一用户
11Tair需要自己部署或者改造为 redis,云数据库 Memcache,或者自己部署 tair 到云 ECS 中
12VipServer需要自己部署 vipserver 或者部分区域有 vipserver部署
13HSF/ConfigServerEDAS无缝上云,配置 ak/sk
14EagleeyeEDAS需要部署到 edas for ecs 才行,云上 edas,云效,容器服务尚未整合好
15DiamondEDAS ACM无缝上云,配置 ak/sk
16SwitchACM直接 acm 中配置或者迁移 switch 控制台,需要改造统一用户
17sunfireARMS需要使用 EDAS部署 或者自己部署 sunfire
18Medusa 美杜莎国际化直接使用 medusa包,使用 top 协议访问。
19 云监控ECS 与相关云设施监控
20 日志服务采集日志

弹内的基础镜像默认包含弹内特有的一些日志采集等基础组件,因应云上环境要求,需要重新定义基础镜像。

2. pandora +EDAS 无缝上云

 应用采用pandora 的taobao-hsf.sar与云上 EDAS 产品,可以直接实现大部分中间件无缝上云。

2.1 相关 配置:

  1. 使用 EDAS 的 namespace 来隔离 Diamond, ConfigServer,HSF 等服务,分别部署测试、预发、线上等环境;
  2. 获取 pandora 的 taobao-hsf.sar包下载
  3. 配置 pandora 访问 edas namespace需要的 ak/sk/tid 等;

    • 设置 ak/sk/tid文件到指定目录: /home/{user_home}/.spas_key/default
    • default 文件保存 ak/sk 信息,格式类似
accessKey=343333333333333secretKey=55555555555tenantId=32323-343434-343434-343434-343434-34343434​
  1. 配置 RAM可以访问 Q(ONS)的 ak/sk用户:
  2. 设置 ons 相关 ak/sk 到指定目录:/home/{user_home}/.ons
    onskey.properties 文件保存 ak/sk 信息,格式类似:
AccessKey = xxxxxSecretKey = yyyyyyyyyyOnsChannel = ALIYUNAuthEnabled = trueNameserverDomain = onsaddr-iiiii.aliyun.com:8080NameserverSubgroup = nsaddr4client-iiiii​
  1. Java应用启动变量设置:
-Dpandora.location=/home/{user_home}/taobao-hsf.sar  -Daddress.server.domain=xxxx-yy-ccccc-2-ttt-1-internal.edas.aliyun.com -Daddress.server.port=8080 -Dconfigserver.client.port=8000 -Dspas.identity=/home/{user_home}/.spas_key/default -Drocketmq.client.keyFile=/home/{user_home}/.ons/onskey.properties -Ddisable.pandora.ons=true -Dtenant.id=xxxxxx-3333-456x-8888-999999999 

2.2 EDAS 与 pandora sar 包依赖 plugin:

组件对应 plugin备注
Diamonddiamond-client 插件配置 pandora 与 edas namespace 的 ak/sk 无缝上云,不需额外配置
Config Serverconfigcenter-client config-client配置 pandora 与 edas namespace 的 ak/sk 无缝上云,不需额外配置
HSFhsf配置 pandora 与 edas namespace 的 ak/sk 无缝上云,不需额外配置
Qons-client配置 pandora 与 ram 的 ak/sk 无缝上云,不需额外配置
vipserver-clientvipserver-clientvipserver 未上云,可以使用需要自己应用设置 ak/sk 或者 vipserver 加白取消 ak/sk鉴权
EagleEyeeagleeye-core客户端写日志功能,需要配置SLS日志采集
TDDLDRDS可以使用 druid,Common pool 实现数据库链接
sentinelsentinel无缝上云,如果没有 EDAS 应用,需要执行手工修改 ACM(Diamond)来实现。
switchswitch需要执行修改ACM(Diamond)来实现配置。

2.3 EDAS 缺陷:

1. Pandora 包只支持一组 edas namespace 的 ak/sk;
 pandora 包只支持访问一组 namespace 的 ak/sk,会使一个应用只能访问一个 namespace 中的 hsf 服务,ACM 配置等,对部分需要跨 namespace 访问的需求没法满足;
2. Pandora 包 ak/sk 必须落盘保存在文件里,不支持直接远程获取保持在内存中;
 ak/sk 落盘,由安全隐患;
3. 云效、EDAS,K8S 不能完美整合,不支持完整的分批发布与整合;
 因为不能整合,导致云效尤其是线上分批发布,流程只能完成打包和合并主干,分批发布采用手动在容器服务控制台发布的方式;
4. Project.name 参数冲突:
 edas 默认 project.name 参数为 edas 的应用 id,而大量弹内应用使用同名参数作为启动参数,并在 hsf 服务等服务中使用,导致冲突。
5. Q中 topic名唯一冲突问题
 云上 Q 尚未支持 namespace 隔离,其 topic 全局跨租户唯一,意味着你的 topic 名假如被其它租户或其它环境使用,将没法建立,因为需要将 topic 名按照租户-topic-环境方式分别隔离建立。
6. EagleEye 日志 在日志服务分割问题:
 日志服务提供的内容分割为多个字段功能只支持一层分割,eagleEye 日志根据应用服务类型分多种格式,因而只能分割前几列有限的字段,剩余分割或者控制台显示需要自己实现。
7. pandora sar 包导致的常见包冲突:
 参考排包功能edas开发帮助
8. sentinel:
 可以使用 sentinel,如果没有结合 edas,需要直接在 ACM(Diamond)中配置
9. vipserver-client:
 目前的 vipserver并不是云产品,鉴权基于 Dauth 建立,需要改造为云上 ram 后才能完美使用。

3. 改造上云或自部署中间件:

3.1 tair:

 云上 ECS 部署 tair 服务器。
建议应用改造直接使用云数据库 memcache,redis 版。

3.2 vipserver:

使用弹内版本部署 vipserver,建议改造 vipserver 中 dauth 为 aliyun RAM。

3.3 sunfire:

 使用弹内sunfire 版本部署在云 ECS 中或者使用 ARMS。

3.4 SSO:

 使用 aliyun 支持的 openid 和 oauth2, 包装 sso-client 包,实现 aliyun 控制台应用的单点登录,并导入阿里云子账号数据,统一用户数据。

3.5 oplog:

 实现 oplog 日志读写 client,服务端采用操作升级接口,实现云上 oplog。

3.6 TMD 淘宝导弹防御系统:

 云上有类似产品 web 应用防火墙WAF,应用可以使用WAF 接口做改造开发。

4. 可使用云产品

  1. DMS 代替 IDB 实现数据库管理;
  2. 容器服务:kubernetes;
  3. 云效;
  4. 云监控;
  5. 日志服务

5. 环境隔离

设施部署环境隔离方法
镜像仓库开发环境通过镜像仓库的命名空间隔离,比如:app_daily 表示日常环境, app_pre 表示预发环境,app_prod 表示线上环境,app_ 表示基础镜像存放,镜像保存地址在 工程 {app_name}.release文件来区分,打包完成后自动 push 镜像,例如:registry-vpc.{region_id}.aliyuncs.com/app-pre/{app_name}:[镜像版本号]。
镜像仓库作访问控制和安全扫描。
云效开发环境统一一套云效,镜像仓库和集群证书配置后,按照云效的环境配置将应用打包后发布到不同环境,不同集群。
mvn 仓库开发环境统一一套,与云效在一起,被云效引用,做访问控制
gitlib 代码仓库开发环境统一一套,与云效在一起,被云效引用,做访问控制
运维管理平台-开发团队端开发环境结合云效和云设施,获取各个租户的云信息,包括基础信息,监控数据,配置数据等,通过租户 Agent 获取数据。
开发kubernetes 集群开发环境开发环境应用部署,同时购买最小配置依赖设施,作为开发调试使用
日常kubernetes 集群日常环境日常环境应用部署,同时购买最小配置依赖设施,作为日常测试使用
预发kubernetes 集群线上环境预发环境应用部署,使用线上环境依赖设施,作为预发测试使用
线上kubernetes 集群线上环境线上环境应用部署,根据业务需求购买基础设施和依赖组件,线上正式环境使用
edas组件开发/日常/预发/线上环境设置命名空间隔离4个环境,当然也可以在不同租户中设置各自的环境,获取命名空间 ak/sk/tid,隔离 HSF,ACM(Diamond),configserver 等环境
RDS for Mysql开发/日常/预发/线上环境RDS 实例,线上预发公用
DRDS开发/日常/预发/线上环境建立应用所需所有数据库,线上预发公用
vipserver开发/日常/预发/线上环境部署 vipserver,线上预发公用,可以使用域名隔离
tair开发/日常/预发/线上环境部署 tair server,线上预发公用
Q开发/日常/预发/线上环境使用不同 topic名隔离,比如后缀带上环境标。
收藏 打印