基于 ROS 交付应用的相关机制介绍

本文涉及的产品
云服务器 ECS,每月免费额度280元 3个月
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云服务器ECS,u1 2核4GB 1个月
简介: 阿里云资源编排服务(ROS)为我们快速搭建和整合云计算资源环境提供一个低成本、标准化的方案。基于ROS提供的能力,我们所要做的就是将所需的资源以资源模板的形式进行定义,然后就可实现对所定义云资源的快速生产。除此之外,ROS将应用构建和资源释放的过程也进行了简化。 阿里云资源编排服务目前只支持 VP

阿里云资源编排服务(ROS)为我们快速搭建和整合云计算资源环境提供一个低成本、标准化的方案。基于ROS提供的能力,我们所要做的就是将所需的资源以资源模板的形式进行定义,然后就可实现对所定义云资源的快速生产。除此之外,ROS将应用构建和资源释放的过程也进行了简化。

本文将主要介绍 VPC 的网络机制以及利用 ROS 在 VPC 网络环境下快速交付应用的原理和机制。本文将主要从如下两个方面进行介绍:

  • VPC 环境的网络机制
  • 基于 Ansible 快速交付应用

VPC 环境的网络机制

专有网络VPC(Virtual Private Cloud),帮助用户基于阿里云构建出一个隔离的网络环境。在这个网络环境中,您可以完全自己配置网络,包括选择自有IP地址范围、划分网段、配置路由表和网关等。此外对于应用开发者而言,VPC为应用提供了一个与外界隔离的、安全的运行环境。

下图是 VPC 的网络架构图:
vpc
由图可知,一个典型的 VPC 网络环境,包括一个VPC、虚拟路由器(VRouter)、虚拟交换机(VSwitch)、安全组(Security Group)和云服务器(ECS)。

虚拟路由器是VPC网络中的重要功能组件,它可以连接VPC内的各个交换机,同时也是连接VPC与其他网络的网关设备。每个路由器中维护一张路由表,它会根据具体的路由条目的设置来转发网络流量。

虚拟交换机为VPC网络提供基础网络设备,它连接不同的ECS。在VPC网络内创建ECS时,必须指定云产品实例所在的交换机。

安全组类似虚拟防火墙功能,用于设置单个或多个 ECS 实例的网络访问控制,它是重要的安全隔离手段。在创建 ECS 实例时,必须选择一个安全组。您还可以添加安全组规则,对该安全组下的所有 ECS 实例的出方向和入方向进行网络控制。

一个 VPC 网络环境通过虚拟路由器划分网段、配置路由表和网关来管理多个虚拟交换机,而每个虚拟交换机又连接着不同的ECS,除此之外,VPC中加入安全组,帮助用户更好的提高网络控制的灵活度。

下一跳

VPC 在帮助用户构建一个隔离的网络环境的同时,带来的问题便是 VPC环境下的 ECS 实例不能直接访问公网。对于一些特定的情况,ECS 实例需要访问公网去获取一些资源,此时一种做法是给需要访问公网的ECS实例申请弹性IP,但当面对多个 ECS 实例需要同时访问公网的需求时,这种做法的并不可行,另一种做法就是以SNAT网关访问公网的方式为 VPC 网络环境设置下一跳,如下图所示 :
next_hop
在VPC环境下申请一台额外的ECS实例并为其绑定EIP,然后配置这台ECS实例的iptables,最后在指定的VPC 网络的路由表中添加一条下一跳是这台 ECS 的路由项,此时这台 ECS 即可做为指定 VPC 网络的SNAT 网关,并且 VPC 下的其他 ECS 均可通过该网关实现对公网的访问。

对于大多数的开发者而言,他们希望所开发的应用可以方便的从公网上获取资源,但又不希望应用及其运行环境完全暴露在公网下,下一跳的出现正好解决了这个问题,它不仅满足了利用较少的EIP实现大量ECS同时访问公网的需求,而且没有破环 VPC 隔离和安全的特性。

额外 EIP

下一跳机制完美的解决了 VPC 环境下 ECS 访问外网的问题,但是对于一个应用而言,最终是能够被外界用户访问到,在VPC环境下,部署在ECS上的应用外网是访问不到的,为此,需要为应用申请一个额外的 EIP,以解决公网访问 VPC 环境下应用的问题。

下面将介绍在 VPC 网络环境构建一个连接 SLB 和 RDS 资源的应用,如下图所示:
slb
上图显示在VPC下构建一个SLB资源,然后在SLB下连接了运行应用的ECS实例,而ECS向下又连接了一个RDS。在应用部署过程中,ECS实例可通过下一跳实现对外网资源的访问和获取。应用部署完成后,外界用户如何访问已搭建的应用呢?此时就需要为SLB配置一个额外的EIP,外界用户通过额外的EIP或者该EIP对应的域名将请求发送到SLB,SLB收到请求后根据监听和分发机制,将请求进一步转发给某台ECS,ECS根据请求内容,获取相应资源后,作出响应。

基于 Ansible 快速交付应用

到目前为止,用户基于 ROS 交付应用可以有两种途径:一种是通过ROS构建好资源,然后登陆到ECS上手动搭建应用运行环境,另一种是利用Cloud-Init机制,将构建应用的步骤编写成脚本,然后将脚本随着ECS资源的构建发送到ECS的User-Data中,Cloud-Init执行User-Data 以完成应用的构建。这两种方式随着ECS数量的增多,操作成本也会相应的增大。那么如何在降低构建应用操作成本的同时,实现对应用的快速交付呢?这里就要使用自动化管理工具Ansible,如下图所示:
ansible
用户首先在一台Master机器上安装 Ansible,然后在这台 Master 机器上通过python调用ROS API完成 IaaS 资源的的生产,并用生产出来的 ECS 的登录信息更新 Ansible 的 Inventory 文件,最后根据所要部署的应用,从 Git 上获取相应的 playbook 或者用户可根据应用部署过程自己编写 playbook,进而通过执行playbook完成应用的部署。这种方式带来的最大的好处是,不论所要部署应用的 ECS 数量有多少,在应用部署时只需调用一次命令即可完成所有的部署工作,大大降低的了应用部署的复杂度。

基于 Ansible 快速搭建Redis集群

为了更好的阐述 Ansible 快速交付应用的功能,下面将介绍在 VPC 网络环境下基于 Ansible 快速搭建Redis集群(一主两备)的交付过程,如下图所示:
redis
首先在安装有 Ansible 的 Master 机器上通过 python 调用 ROS API 生成三台ECS用于搭建 Redis 集群,然后根据ECS的登录信息更新 Ansible 的 Inventory 文件,并生成搭建 Redis 的 playbook 执行文件,接着从 Git 上获取搭建 Redis 的 Playbook,最后,在 Ansible 服务器上运行 playbook 执行文件,即可完成Redis集群的搭建。

值得注意的是,根据 playbook 执行文件的设置,用户可以搭建只有一台 Master 的 Redis,也可以搭建拥有一台 Master(主服务器)、两台 Slave(从服务器)的标准配置的 Redis 集群,并且为了提高Redis 集群的高可用性,可以在搭建 Redis 集群后为其部署高可用解决方案 Sentinel。所有的这些工作,Ansible 可以实现一键部署,大大提高了工作效率。

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
1月前
|
网络协议 机器人 中间件
单片机和FreeRTOS上跑机器人ROS的应用
单片机和FreeRTOS上跑机器人ROS的应用
51 0
|
监控 开发者
ROS-使用样例模板部署应用|学习笔记
快速学习 ROS-使用样例模板部署应用
71 0
ROS-使用样例模板部署应用|学习笔记
|
存储 数据采集 大数据
《机器人操作系统ROS原理与应用》——导读
随着2013年大数据元年的开启,各行各业都已经将大数据视为推动企业发展、推进行业进步、加快产业升级、促进民生繁荣、巩固社会安全甚至提升国家竞争力的核心武器。从个性化推荐、关联销售到精准营销,从云平台、云服务、云计算到大数据产业链,从百度迁徙、高考预测到冬季流感预测,从机器学习、图像识别到智能交通,从奥巴马总统竞选到美国中央情报局反恐,从美国的大数据研究和发展计划到中国的促进大数据发展行动纲要等一系列事实说明了大数据正受到来自政治、经济、社会、文化、军事等各个领域的广泛关注,并越来越彰显其巨大价值。
1831 0

推荐镜像

更多