首页 存档 技术 查看内容

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

2018-3-30 13:00 |来自: 互联网 470 0

摘要: 作者|尹书威编辑|Bella选择Multi-Cloud的因素 “Multi-Cloud”即企业将多个应用部署在多个云平台上,比如阿里云、AWS、Azure、OpenStack或其他云平台。通过下面的模形我们可以看到企业选择Multi-Cloud的因素及应用 ...

作者|尹书威
编辑|Bella
选择Multi-Cloud的因素

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

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

挑战

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

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

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"
}

其中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编写的应用部署过程部署到相应的云服务中,实现基础资源管理到应用部署的闭环。

详细操作步骤

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

  1. 下载Terraform:https://www.terraform.io/intro/getting-started/install.html

  2. 设置环境变量时,需要指向terraform所在的父目录,如:terraform的路径是"~/work/terraform_0.8.2",则指定环境变量时设定为export PATH=$PATH:~/work/terraform_0.8.2

  3. 下载terraform-alicloud-provider,各平台的下载地址如下:Mac OS X 64-bit http://tf-mac.oss-cn-shanghai.aliyuncs.com/terraform-provider-alicloud.zipLinux 64-bit:http://tf-linux.oss-cn-shanghai.aliyuncs.com/terraform-provider-alicloud.zipWindows 64-bit:http://tf-windows.oss-cn-shanghai.aliyuncs.com/terraform-provider-alicloud.exe,并将其放置与第2步中terraform相同的目录下,如"~/work/terraform_0.8.2"

  4. 安装terraform-inventory,运行命令“brew install terraform-inventory”,详细的说明请参见https://github.com/adammck/terraform-inventory

  5. 编写云服务器ECS的模板

resource "alicloud_instance" "webserver" {
  count = 1

  # cn-beijing
  availability_zone = "cn-beijing-b"
  security_groups = ["****"]  //需要替换为真实的安全组ID
  allocate_public_ip = true
  instance_charge_type = "PostPaid"
  instance_type = "ecs.n1.small"
  internet_charge_type = "PayByTraffic"
  internet_max_bandwidth_out = 5

  system_disk_category = "cloud_efficiency"
  image_id = "ubuntu_140405_64_40G_cloudinit_20161115.vhd"
  instance_name = "tf_snat"

  tags {
    role = "webserver"
  }
}

依次运行命令

terraform plan  //按照提示输入您的AK信息
terraform apply //按照提示输入您的AK信息

6.此时登录ECS控制台可以看到创建的云服务器。

7.修改第5步中的模板”count”参数,将其修改为2,再次运行:

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

8.此时登录ECS控制台可以看到又创建一台云服务器

9.编写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

10.执行命令:

ansible-playbook -i `which terraform-inventory` playbook.yml -u root -k -c paramiko -vvv

11.nginx即安装在以上2台ECS上,可以ssh登录ECS云服务器查看或修改nginx的配置。

12.如果想释放两台ECS及磁盘,执行 terraform destroy即可

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

由于篇幅有限,本文只讲述了基础设施管理及搭建Nginx应用的实践,大家有问题也可以在github(https://github.com/alibaba/terraform-provider)的Issue中提问。

作者介绍

尹书威,阿里云高级专家,负责过阿里云主要产品线的管控系统,带领团队完成管控系统的服务化改造。目前主要负责开源管理工具与阿里云的集成,励志通过主流开源高效的自动化工具提高云上运维/开发的便利性。

今日荐文

点击下方图片即可阅读

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部