应用上云改造

简介: 1. 概述:  弹内应用使用的大量弹内基础设施在云上不存在或者有对应的产品,但是无法无缝上云需要改造,具体对应如下: 序号 弹内组件 云上 说明及注意事项 1 BUC-SSO aliyun RAM(OpenID) 云上可以使用 aliyun 的 ram 以及 openID 配置统一用户和单点登录应用,需要二次开发 2 Oplog 操作日志审计或者自定义开发简易 Oplog 操作审计日志投递到 OSS 或者日志服务,使用云上操作审计日志查询。

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 EDAS 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 相关 配置:

  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=343333333333333
secretKey=55555555555
tenantId=32323-343434-343434-343434-343434-34343434​
  1. 配置 RAM可以访问 MetaQ(ONS)的 ak/sk用户:
  2. 设置 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​
  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 备注
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 缺陷:

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. MetaQ中 topic名唯一冲突问题
 云上 MetaQ 尚未支持 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_base 表示基础镜像存放,镜像保存地址在 工程 {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,线上预发公用
metaQ 开发/日常/预发/线上环境 使用不同 topic名隔离,比如后缀带上环境标。
相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
7月前
|
弹性计算 监控 PyTorch
大模型在云上的训练与部署
本文系统阐述大模型在云上的训练与部署实践路径,涵盖发展趋势、GPU集群搭建、框架选型、数据处理、分布式训练、模型部署、成本优化及金融行业应用案例,全面解析云计算如何支撑大模型高效落地,并展望“大模型即服务”(MaaS)的未来生态。
782 0
|
消息中间件 弹性计算 固态存储
256变4096:分库分表扩容如何实现平滑数据迁移?
本文作者就一个高德打车弹外订单系统进行了一次扩分库分表和数据库迁移。
256变4096:分库分表扩容如何实现平滑数据迁移?
|
Arthas 监控 应用服务中间件
HSF Serialize response error on provider side
项目组的应用在HSF Consumer调用HSF Provider时遇到异常。问题源于HSF Provider端序列化响应数据时发生的错误,具体为`com.taobao.hsf.com.caucho.hessian.io.ContextSerializerFactory.getCustomSerializer`方法中的`Class.forName`调用抛出了`NullPointerException`。通过Arthas工具的`watch`命令监控并分析异常堆栈,发现异常发生在尝试获取自定义序列化器的过程中。
1481 1
|
机器学习/深度学习 数据采集 自然语言处理
HuggingFace Transformers 库深度应用指南
本文首先介绍HuggingFace Tra环境配置与依赖安装,确保读者具备Python编程、机器学习和深度学习基础知识。接着深入探讨Transformers的核心组件,并通过实战案例展示其应用。随后讲解模型加载优化、批处理优化等实用技巧。在核心API部分,详细解析Tokenizers、Models、Configuration和Dataset的使用方法。文本生成章节则涵盖基础概念、GPT2生成示例及高级生成技术。最后,针对模型训练与优化,介绍预训练模型微调、超参数优化和推理加速等内容。通过这些内容,帮助读者掌握HuggingFace Transformers的深度使用,开发高效智能的NLP应用。
2156 22
|
Arthas 监控 Java
记一次内存利用率问题排查
记一次内存利用率问题排查
|
数据可视化 数据挖掘 数据处理
B 端试用期考核指标
B端产品经理试用期考核指标涵盖了项目策划、用户需求理解、团队协作、技术能力、创新思维、项目管理、产品投放时间、产品质量、产品利润及基础服务接入等方面。这些指标通过自我评估和上级评估相结合的方式进行,分为优秀(5分)到不合格(1分)五个等级。具体内容包括制定合理项目计划、准确把握用户需求、有效沟通协调团队、掌握技术细节、提出创新方案等。实际案例展示了如何通过成功项目实施、解决业务痛点、优化产品功能等方式,全面评估产品经理的综合能力,确保其胜任后续工作任务。
733 0
|
安全 应用服务中间件 网络安全
Python 渗透测试:漏洞的批量搜索与利用.(GlassFish 任意文件读取)
Python 渗透测试:漏洞的批量搜索与利用.(GlassFish 任意文件读取)
396 11
|
安全 NoSQL Java
10万条记录生成兑换码的实战方案
【5月更文挑战第27天】项目实战,介绍一次生成10万条记录兑换码的功能,由于公司需要生成大批量的兑换码,单次生成的兑换码超过10条记录。本文用于介绍相关设计方案:
1344 2
|
负载均衡 NoSQL 关系型数据库
性能基础之全链路压测知识整理
【2月更文挑战第16天】性能基础之全链路压测知识整理
963 11

热门文章

最新文章