1. 概述:
弹内应用使用的大量弹内基础设施在云上不存在或者有对应的产品,但是无法无缝上云需要改造,具体对应如下:
序号 | 弹内组件 | 云上 | 说明及注意事项 |
1 | BUC-SSO | aliyun RAM(OpenID) | 云上可以使用 aliyun 的 ram 以及 openID 配置统一用户和单点登录应用,需要二次开发 |
2 | Oplog | 操作日志审计或者自定义开发简易 Oplog | 操作审计日志投递到 OSS 或者日志服务,使用云上操作审计日志查询。 或者自己开发一个简易操作审计日志,直接存数据库。 |
3 | MetaQ | ONS(云上 metaQ) | 使用 taobao-hsf.sar 包,配置 ak/sk 无缝上云,需要注意新支持的 namespaces |
4 | TDDL | DRDS | 无缝上云,链接方式需要修改; |
5 | mysql | RDS | 无缝上云 |
6 | IDB 数据管理平台 | DMS | 无缝上云,DMS 对部分低版本 DRDS 不支持。 |
7 | TMD | Web 应用防火墙 | 7层协议直接配置可支持,4层协议需要改造使用 TMD 的改用 waf 的话,云上 waf 支持的二次开发接口较少 |
8 | 容器服务 | 云上容器服务(Kubernetes) | 云上容器服务控制台尚未稳定成熟,需要自己熟练使用 kubernetes 运维。 |
9 | Aone | 云效 | 部分 aone 功能不支持,与容器服务 K8s 能较完美整合,建议使用。 |
10 | sentinel限流降级组件 | AHAS 应用高可用服务,Diamond | 需要部署到 edas for ecs 才行,云上 edas,云效,容器服务尚未整合好,可以考虑自己使用 sentinel 在 diamond 中配置,自己部署控制台,需要改造统一用户 |
11 | Tair | 无 | 需要自己部署或者改造为 redis,云数据库 Memcache,或者自己部署 tair 到云 ECS 中 |
12 | VipServer | 无 | 需要自己部署 vipserver 或者部分区域有 vipserver部署 |
13 | HSF/ConfigServer | EDAS | 无缝上云,配置 ak/sk |
14 | Eagleeye | EDAS | 需要部署到 edas for ecs 才行,云上 edas,云效,容器服务尚未整合好 |
15 | Diamond | ACM | 无缝上云,配置 ak/sk |
16 | Switch | ACM | 直接 acm 中配置或者迁移 switch 控制台,需要改造统一用户 |
17 | sunfire | ARMS | 需要使用 EDAS部署 或者自己部署 sunfire |
18 | Medusa 美杜莎国际化 | 无 | 直接使用 medusa包,使用 top 协议访问。 |
19 | 云监控 | ECS 与相关云设施监控 | |
20 | 日志服务 | 采集日志 |
弹内的基础镜像默认包含弹内特有的一些日志采集等基础组件,因应云上环境要求,需要重新定义基础镜像。
2. pandora +EDAS 无缝上云
应用采用pandora 的taobao-hsf.sar与云上 EDAS 产品,可以直接实现大部分中间件无缝上云。
2.1 相关 配置:
- 使用 EDAS 的 namespace 来隔离 Diamond, ConfigServer,HSF 等服务,分别部署测试、预发、线上等环境;
- 获取 pandora 的 taobao-hsf.sar 包;
- 配置 pandora 访问 edas namespace需要的 ak/sk/tid 等;
- 设置 ak/sk/tid文件到指定目录: /home/{user_home}/.spas_key/default
- default 文件保存 ak/sk 信息,格式类似
accessKey=343333333333333 secretKey=55555555555 tenantId=32323-343434-343434-343434-343434-34343434
- 配置 RAM可以访问 MetaQ(ONS)的 ak/sk用户:
- 设置 ons 相关 ak/sk 到指定目录:/home/{user_home}/.ons
- onskey.properties 文件保存 ak/sk 信息,格式类似:
AccessKey = xxxxx SecretKey = yyyyyyyyyy OnsChannel = ALIYUN AuthEnabled = true NameserverDomain = onsaddr-iiiii.aliyun.com:8080 NameserverSubgroup = nsaddr4client-iiiii
- 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 | 备注 |
Diamond | diamond-client 插件 | 配置 pandora 与 edas namespace 的 ak/sk 无缝上云,不需额外配置 |
Config Server | configcenter-client config-client | 配置 pandora 与 edas namespace 的 ak/sk 无缝上云,不需额外配置 |
HSF | hsf | 配置 pandora 与 edas namespace 的 ak/sk 无缝上云,不需额外配置 |
MetaQ | ons-client | 配置 pandora 与 ram 的 ak/sk 无缝上云,不需额外配置 |
vipserver-client | vipserver-client | vipserver 未上云,可以使用需要自己应用设置 ak/sk 或者 vipserver 加白取消 ak/sk鉴权 |
EagleEye | eagleeye-core | 客户端写日志功能,需要配置SLS日志采集 |
TDDL | DRDS | 可以使用 druid,Common pool 实现数据库链接 |
sentinel | sentinel | 无缝上云,如果没有 EDAS 应用,需要执行手工修改 ACM(Diamond)来实现。 |
switch | switch | 需要执行修改ACM(Diamond)来实现配置。 |
2.3 EDAS 缺陷:
- Pandora 包只支持一组 edas namespace 的 ak/sk;
- pandora 包只支持访问一组 namespace 的 ak/sk,会使一个应用只能访问一个 namespace 中的 hsf 服务,ACM 配置等,对部分需要跨 namespace 访问的需求没法满足;
- Pandora 包 ak/sk 必须落盘保存在文件里,不支持直接远程获取保持在内存中;
- ak/sk 落盘,由安全隐患;
- 云效、EDAS,K8S 不能完美整合,不支持完整的分批发布与整合;
- 因为不能整合,导致云效尤其是线上分批发布,流程只能完成打包和合并主干,分批发布采用手动在容器服务控制台发布的方式;
- Project.name 参数冲突:
- edas 默认 project.name 参数为 edas 的应用 id,而大量弹内应用使用同名参数作为启动参数,并在 hsf 服务等服务中使用,导致冲突。
- MetaQ中 topic名唯一冲突问题
- 云上 MetaQ 尚未支持 namespace 隔离,其 topic 全局跨租户唯一,意味着你的 topic 名假如被其它租户或其它环境使用,将没法建立,因为需要将 topic 名按照租户-topic-环境方式分别隔离建立。
- EagleEye 日志 在日志服务分割问题:
- 日志服务提供的内容分割为多个字段功能只支持一层分割,eagleEye 日志根据应用服务类型分多种格式,因而只能分割前几列有限的字段,剩余分割或者控制台显示需要自己实现。
- pandora sar 包导致的常见包冲突:
- sentinel :
- 可以使用 sentinel,如果没有结合 edas,需要直接在 ACM(Diamond)中配置
- vipserver-client:
- 目前的 vipserver并不是云产品,鉴权基于 Dauth 建立,需要改造为云上 ram 后才能完美使用。
3. 改造上云或自部署中间件:
2.1 tair:
云上 ECS 部署 tair 服务器。
建议应用改造直接使用云数据库 memcache,redis 版。
2.2 vipserver:
使用弹内版本部署 vipserver,建议改造 vipserver 中 dauth 为 aliyun RAM。
2.3 sunfire:
使用弹内sunfire 版本部署在云 ECS 中或者使用 ARMS。
2.4 SSO:
使用 aliyun 支持的 openid 和 oauth2, 包装 sso-client 包,实现 aliyun 控制台应用的单点登录,并导入阿里云子账号数据,统一用户数据。
2.5 oplog:
实现 oplog 日志读写 client,服务端采用操作升级接口,实现云上 oplog。
2.6 TMD 淘宝导弹防御系统:
云上有类似产品 web 应用防火墙WAF,应用可以使用WAF 接口做改造开发。
4. 可使用云产品
- DMS 代替 IDB 实现数据库管理;
- 容器服务:kubernetes;
- 云效;
- 云监控;
- 日志服务