企业应用如何解决Multi-Cloud的基础设施管理及应用部署问题

简介: “Multi-Cloud”即企业将多个应用部署在多个云平台上,比如阿里云、AWS、Azure、OpenStack或其他云平台。通过下面的模形我们可以看到企业选择Multi-Cloud的因素及应用部署策略,包括7个主要因素:云计算平台数据中心的访问速度/云服务的性能/可用性、云计算平台的成本、云计算.

选择Multi-Cloud的因素

“Multi-Cloud”即企业将多个应用部署在多个云平台上,比如阿里云、AWS、Azure、OpenStack或其他云平台。通过下面的模形我们可以看到企业选择Multi-Cloud的因素及应用部署策略,包括7个主要因素:云计算平台数据中心的访问速度/云服务的性能/可用性、云计算平台的成本、云计算平台的安全性、客户服务质量、本地化、云计算平台的提供商、以及企业自有的数据中心地点。

     ![tf](https://yqfile.alicdn.com/7f94679daec3bdbe148d6e0d5782a5d46c71d8be.png) 

RightScale的调查数据显示目前有越来越多的企业选择Multi-Cloud模式(2015年58%, 2016年增长到71%)。

挑战

虽然越来越多的企业选择Multi-Cloud模式,但其也有很多挑战,例如各个云服务平台采用不同的技术、不同的用户操作界面、提供不同的云服务、不同的专业术语。即便是相同的服务(如云服务器),由于是来自多家云计算平台,其API的定义不同,SDK也不同,各自提供的小工具也不能适用于其他云平台。同时对于企业的运维人员要求也较高,运维人员要知道怎样构建各个云计算平台的基础设施,以及部署、运维、监控等,以及各个应用对于云计算平台的最佳选择。

基础设施管理及应用部署的解决方案

本文章将讲述针对于Multi-Cloud模式的基础设施管理及应用部署的解决方案。

Terraform 是来自HashiCorp家族的开源工具,通过“ WRITE, PLAN, AND CREATE INFRASTRUCTURE AS CODE”管理多个云计算平台的基础设施,支持阿里云、AWS、Azure、GoogleCloud、DigitalOcean等。他通过一致的模板形态定义基础设施的创建/更新/销毁的全生命周期。下面列举了阿里云和AWS的模板,可以看到模板形态一致,定义resource,填写不同的参数,比如数量、镜像、实例类型,对于Multi-Cloud的多平台基础设施管理将大幅度降低学习成本:

    resource "alicloud_instance" "app" {
        count = 5
        image_id = "ubuntu1404_64_40G_cloudinit_20160727.raw"
        instance_type = "ecs.n1.small"
    }

    resource "aws_instance" "app" {
        count = 5
        ami = "ami-408c7f28"
        instance_type = "t1.micro"
    }

阿里云针对于 Terraform Provider的官方仓库地址:
https://github.com/alibaba/terraform-provider

其中Example包括云服务器ECS、负载均衡SLB、安全组SecurityGroup、专有网络VPC、路由器VSwitch、Nat网关NatGateway的模板,利用这些模板可以做资源的创建/更新/销毁的管理,如创建多台ECS后,再统一修改Tag;或挂载、卸载SLB的后端服务器等等。
Terraform的命令比较简单,最重要的只需要记住4条命令

    
    terraform get  (获取模板)
    terraform plan  (预览要创建或更新的资源)
    terraform apply  (创建或更新资源)
    terraform destroy  (销毁资源)

运行 terraform apply命令后会在本地生成 terraform.tfstate 文件,此文件做为更新、销毁资源的依据。
同时根据terraform.tfstate文件,由另一个开源工具Terraform-inventory 可直接生成Ansible的Inventory文件,Ansible利用这个Inventory文件将其用playbook编写的应用部署过程部署到相应的云服务中,实现基础资源管理到应用部署的闭环。

    ![tf1](https://yqfile.alicdn.com/8635b287df1353f5d586a7ddbe7f994e1a3c7734.png)

某企业的应用采用Terraform+Ansible的架构将其应用从OpenStack迁移至阿里云,只用了1.5天的时间,而使用传统的手工模式需要一周多的时间。

详细操作步骤

下面以创建云服务器ECS及磁盘,更新其数量,然后部署Nginx为例详细讲解操作过程。

  1. 下载Terraform
  2. 设置环境变量时,需要指向terraform所在的父目录,如:terraform的路径是"~/work/terraform_0.7.10",则指定环境变量时设定为export PATH=$PATH:~/work/terraform_0.7.10
  3. 下载[terraform-alicloud-provider](
    http://opensource-tf.oss-cn-shanghai.aliyuncs.com/terraform-provider-alicloud), 并将其放置与第2步中terraform相同的目录下,如"~/work/terraform_0.7.10"
  4. 安装terraform-inventory,运行命令“brew install terraform-inventory”,详细的说明请参见https://github.com/adammck/terraform-inventory
  5. 编写云服务器ECS的模板

    module "alicloud-ecs" {
    source = "github.com/alibaba/terraform-provider/terraform/examples/alicloud-ecs"
    count = "1"
    count_format = "%03d"
    role = "worker" //这个作用是打标签,此ECS的Tag值将是role:worker
    datacenter = "beijing"
    ecs_type = "ecs.n1.small"
    ecs_password = "alicloudTest1"
    availability_zones = "cn-beijing-b"
    security_group_id = "*" //这里输入SecurityGroupId
    }

  6. 依次运行命令(注意一定要先修改security_group_id参数的值,指向真实的id):

    terraform get //第一次连接时会有些慢
    terraform plan //按照提示输入您的AK信息
    terraform apply //按照提示输入您的AK信息

  7. 此时登录ECS控制台可以看到创建的云服务器。
  8. 修改第5步中的模板”count”参数,将其修改为2,再次运行:

    terraform plan //可以看到变更的资源,即新增加一台ECS以及磁盘
    terraform apply

  9. 此时登录ECS控制台可以看到又创建一台云服务器
  10. 编写Ansible的playbook安装nginx,playbook如下:

    • hosts: instance
      tasks:

      • name: Install Nginx
        apt: pkg=nginx state=installed update_cache=true

      notify:

      - Start Nginx
      

    handlers:

      - name: Start Nginx
        service: name=nginx state=started
    
  11. 执行命令:

        ansible-playbook -i `which terraform-inventory` playbook.yml -u root -k -c paramiko -vvv
    
  12. nginx即安装在以上2台ECS上,可以ssh登录ECS云服务器查看或修改nginx的配置。
  13. 如果想释放两台ECS及磁盘,执行 terraform destroy即可

至此创建ECS云服务器、修改数量、安装Nginx完成。通过Terraform+Ansible的方式可以把基础资源的管理和应用部署分开,Terraform的模板依照一致的模板形态实现对Multi-Cloud的基础设施管理,Ansible的playbook可以被重复执行将应用部署在不同的云平台上。

阿里云会持续提供更多的与流行开源工具的集成为企业的云上部署及运维提供便利。

反馈

本文讲述了基础设施管理及搭建Nginx应用的实践,关于更多的应用场景下Terraform的最佳实践我们会持续发布。大家有问题也可以在github https://github.com/alibaba/terraform-provider的Issue中提问。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
Kubernetes Cloud Native 开发者
阿里云网络发布 alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
**阿里云发布开源版ALB控制器v1.2.0,对齐商业版ALB Ingress Controller v2.10.0。新版本增强了功能特性,提升了用户体验,并提供了最佳实践。功能更新包括自定义标签、QUIC协议支持、转发规则和安全策略等。此外,还引入了ReadinessGate实现滚动升级时的平滑上线和Prestop钩子确保平滑下线。用户可从GitHub获取开源代码,通过Docker Hub拉取镜像,开始使用alibaba-load-balancer-controller v1.2.0。**
320 3
阿里云网络发布 alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
|
6月前
|
Kubernetes Cloud Native 开发者
阿里云网络发布云原生网关 alibaba-load-balancer-controller v1.2.0,持续拥抱开源生态
alibaba-load-balancer-controller开源版本正式推出v1.2.0,能力对齐ALB Ingress Controller商业版v2.10.0。
|
7月前
|
监控 Devops API
构建高效微服务架构:API网关的作用与实践构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【5月更文挑战第28天】 在当今的软件开发领域,微服务架构因其灵活性、可扩展性和容错能力而备受推崇。本文将深入探讨API网关在构建微服务系统中的关键角色,包括它如何促进系统的高可用性、安全性和性能监控。我们将剖析API网关的核心组件,并借助具体实例展示如何实现一个高效的API网关来服务于复杂的微服务环境。 【5月更文挑战第28天】 随着企业数字化转型的深入,传统的IT运维模式已难以满足快速迭代和持续交付的需求。本文聚焦于如何通过融合DevOps理念与容器化技术来构建一个高效、稳定且可扩展的云基础设施。我们将探讨持续集成/持续部署(CI/CD)流程的优化、基于微服务架构的容器化部署以及自动化监
|
监控 安全 Cloud Native
云原生环境下的安全实践:保护应用程序和数据的关键策略
云原生环境下的安全实践:保护应用程序和数据的关键策略
597 0
云原生环境下的安全实践:保护应用程序和数据的关键策略
|
搜索推荐 前端开发 Java
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(2) -挂载自定义登陆以及业务端完整代码
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(2) -挂载自定义登陆以及业务端完整代码
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(2) -挂载自定义登陆以及业务端完整代码
|
自然语言处理 运维 监控
《云原生架构容器&微服务优秀案例集》——01 互联网——站酷 基于 ASM 解决多语言技术栈下服务管理难题,实现运维提效
《云原生架构容器&微服务优秀案例集》——01 互联网——站酷 基于 ASM 解决多语言技术栈下服务管理难题,实现运维提效
241 0
|
运维 供应链 安全
《云原生架构容器&微服务优秀案例集》——07 Landing Zone/咨询—— 商龙科技 容器化上云,保障业务稳定运行
《云原生架构容器&微服务优秀案例集》——07 Landing Zone/咨询—— 商龙科技 容器化上云,保障业务稳定运行
148 0
|
消息中间件 监控 Cloud Native
基于SpringCloud体系实现的一套支持云原生的分布式微服务架构,提供OAuth2/JWT权限认证、分布式事务、灰度、限流、链路追踪等功能,支持Docker容器化部署、镜像交付、K8S容器编排
lion是基于Spring Cloud体系实现的一套支持云原生的分布式微服务架构,为了让中小型公司解决当下技术瓶颈,快速将现有应用服务架构拆分改造为分布式微服务架构,进入 All-in-Cloud 时代,只需在本架构上进行相关业务开发即可,大大减少了分布式微服务架构的门槛,仅在本框架上做"减法"的目的,使架构师及开发人员不必过多的关注架构本身,只需专注于业务开发
基于SpringCloud体系实现的一套支持云原生的分布式微服务架构,提供OAuth2/JWT权限认证、分布式事务、灰度、限流、链路追踪等功能,支持Docker容器化部署、镜像交付、K8S容器编排
|
Kubernetes Cloud Native JavaScript
【Quarkus技术系列】「云原生架构体系」配置参考指南相关的功能机制配置介绍分析
【Quarkus技术系列】「云原生架构体系」配置参考指南相关的功能机制配置介绍分析
481 0
【Quarkus技术系列】「云原生架构体系」配置参考指南相关的功能机制配置介绍分析
|
弹性计算 前端开发 JavaScript
如何将传统 Web 框架迁移部署到 Serverless 架构?
与其说 Serverless 架构是一个新的概念,不如说它是一种全新的思路,一种新的编程范式。
199071 0