Spring Cloud - 云原生迁移(混合部署架构)之资源部署

简介

    Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具,例如配置管理,服务发现,断路器,智能路由,微代理,控制总线等操作;使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。它们将在任何分布式环境中运行良好;在Java开发者中具有广泛的影响力。

    Spring Cloud专注于提供良好的开箱即用经验的典型用例和可扩展性机制覆盖;基于Spring Boot对大型项目开发难度的简化,对开发微服务所需的组件进行了简单高效的封装,Spring Cloud已成为Java领域开发微服务的实际标准。
考虑到用户会把原有的虚拟机部署的应用迁移至像容器这样更为原生的技术中会遭遇各种难题,本文将介绍将Spring Cloud云原生迁移到阿里云的解决方案,供开发者参考或使用。

架构

资源依赖架构图
Spring Cloud - 云原生迁移(混合部署架构)之资源部署_第1张图片
架构效果图
Spring Cloud - 云原生迁移(混合部署架构)之资源部署_第2张图片

  • 注册发现中心Eureka为软件实现,需要在配置文件里配置所有Eureka server信息,Eureka server间进行信息同步。因此,架构方案选择在每个可用区创建独立的ECS部署Eureka server,同时使用独立的SLB以固定每个Eureka server的访问地址,及独立的ESS以保证每个可用区内Eureka server的正常工作。
  • Gateway是微服务架构中另一个重要组件。Gateway本身为无状态服务,有了Eureka注册发现中心的保障,每个Gateway server都可以自动发现需要调用的服务。在架构方案中,使用一个统一的SLB,以暴露对外服务的URL;同时使用一个ESS保证Gateway的高可用及可扩展性。实际项目中,使用Spring Cloud 中的Zuul/Gateway可作为示例Gateway组件。
  • 使用阿里云Kubernetes托管版部署实际业务的应用,可实现业务负载的快速扩展、灵活调度,同时降低Kubernetes群集的运维难度。
  • OSS和CR(容器镜像服务)作为应用部署包以及Docker镜像的仓库,可方便地对接微服务架构中CI/CD各种不同方案。
  • 对于系统中各种公共变量,使用OSS中的参数仓库进行存储。可实现公共变量的动态调整,和应用部署时进行动态注入。

优势

Spring Cloud的Eureka、Gateway等微服务基础设施需要长久地运行,并且独占单个计算资源,保障服务的高可靠性。架构中使用ECS部署服务,而具体业务功能模块选择容器话技术;使用弹性伸缩服务管理Eureka、Gateway两类服务。

  • 使用弹性伸缩可以根据业务需求和策略设置伸缩规则,以保证计算能力和节约成本;
  • 服务器ECS的启动时间为分钟级,持续运行时间为数周至数月;
  • 容器化服务的启动时间为秒级,持续运行时间为数十分钟至数周;

前置条件

  • 熟悉并开通阿里云资源编排ROS;具备管理ROS资源栈技能,点击ROS查看产品相关文档。
  • 熟悉并开通阿里云专有网络VPC;具备搭建基础网络技能,点击VPC查看产品相关文档。
  • 了解并开通阿里云弹性伸缩ESS;点击ESS查看产品相关文档。
  • 了解并开通阿里云负载均衡SLB;点击SLB查看产品相关文档。
  • 了解并开通阿里云对象存储OSS;点击OSS查看产品相关文档。
  • 了解并开通阿里云访问控制RAM;点击RAM查看产品相关文档。
  • 了解并开通阿里云运维编排OOS;点击OOS查看产品相关文档。
  • 了解并开通阿里云容器服务Kubernetes版ACK;点击ACK查看产品相关文档。

资源部署

ROS资源简介

ALIYUN::VPC::EIPAssociation: 用于绑定弹性公网IP

ALIYUN::ESS::ScalingConfiguration: 用于为伸缩组创建伸缩配置。

ALIYUN::VPC::EIP: 用于申请弹性公网IP。

ALIYUN::SLB::LoadBalancer: 用于创建负载均衡。

ALIYUN::ESS::ScalingGroupEnable: 用于启用伸缩组。

ALIYUN::SLB::Listener: 用于创建负载均衡监听(Listener)。

ALIYUN::OOS::Parameter: 用于创建一个普通参数。

ALIYUN::RAM::Role: 用于创建RAM角色。

ALIYUN::CS::ManagedKubernetesCluster: 用于创建Kubernetes托管版集群。

ALIYUN::ESS::ScalingGroup: 用于创建伸缩组。伸缩组是具有相同应用场景的ECS实例的集合,创建成功后不会立即生效,需要使用。

ALIYUN::ESS::ScalingGroupEnable: 启用伸缩组,才能触发伸缩活动,执行伸缩规则。

步骤

  1. 登录资源编排服务控制台。

  2. 点击进入解决方案中心

  3. 在案例筛选中筛选容器 & 微服务,在此类型案例中找到SpringCloud云原生迁移,点击创建资源栈;或先点击查看详情查阅案例的详情介绍再点击创建资源栈

  4. 在创建资源栈界面填写必要的参数,具体如下:

基础信息配置
Spring Cloud - 云原生迁移(混合部署架构)之资源部署_第3张图片
Eureka 相关配置
Spring Cloud - 云原生迁移(混合部署架构)之资源部署_第4张图片
Gateway 相关配置
Spring Cloud - 云原生迁移(混合部署架构)之资源部署_第5张图片
Kubernetes托管版集群相关配置
Spring Cloud - 云原生迁移(混合部署架构)之资源部署_第6张图片

  1. 参数填写完成,可进行资源预览,也可直接进行创建;资源栈进入创建状态,创建完成大约需要10分钟左右。
  2. 创建完成,可在输出界面查询Eureka url、Gateway url,如下图:

Spring Cloud - 云原生迁移(混合部署架构)之资源部署_第7张图片
Spring Cloud - 云原生迁移(混合部署架构)之资源部署_第8张图片

以上步骤,即可完成Spring Cloud 云原生迁移方案所需要的资源(ECS、SLB、Kubernetes等统称为资源)部署;查阅相关资源可在对应资源的控制台进行查阅。

本篇文章由阿里云资源编排服务ROS发布

你可能感兴趣的:(Spring Cloud - 云原生迁移(混合部署架构)之资源部署)