基于资源编排和 Ansible 在经典网络下快速交付应用

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
资源编排,不限时长
简介: 本文是基于资源编排和 Ansible 在 VPC 下快速交付应用的姊妹篇,即在经典网络下基于资源编排和 Ansible 实现对应用的快速交付。 在经典网络环境和 VPC 环境下交付应用的最大区别在于经典网络环境不需要 VPC、VSwitch等其他相关资源的支持,只需要 ECS 和 EIP 资源即可

本文是基于资源编排和 Ansible 在 VPC 下快速交付应用的姊妹篇,即在经典网络下基于资源编排和 Ansible 实现对应用的快速交付。

在经典网络环境和 VPC 环境下交付应用的最大区别在于经典网络环境不需要 VPC、VSwitch等其他相关资源的支持,只需要 ECS 和 公网 IP 资源即可。除此之外,基于资源编排和 Ansible 在经典网络下快速交付应用的流程和步骤与在 VPC 下完全相同。下面本文仍以搭建 Redis 集群为例,展示在经典网络下快速交付应用。

基于 ROS 和 Ansible 在经典网络下快速搭建 Redis 集群

和上一篇一样,在搭建应用之前,首先需要在 Master 机器上安装 ROS SDK 和 Ansible。

下面展示基于 ROS API 和 Ansible 在经典网络下快速搭建一主(Master)两备(Slave) Redis 集群的详细过程。

为了提高 Redis 集群的高可用性,在搭建 Redis 集群时为其部署高可用性解决方案 Sentinel,以帮助 Redis 集群实现自动化的主备切换。

构建资源环境

首先定义资源栈模板。由于是经典网络环境,所以在模板中只需要定义构建三台云主机 ECS 资源和对应数量的 EIP 资源即可。为了方便起见,我在模板中使用资源 "Type": "ALIYUN::ECS::InstanceGroup" 定义 ECS 资源。定义资源栈的模板可详见附件中的 python 文件 create_instancegroup_template.py。

模板定义成功后,编辑 python 代码,以模板作为参数,调用 ROS API 即可实现对资源环境的搭建。需要注意的是,在传递参数时应注意增加关于分配公网 IP 的参数。如下是调用 ROS API 的 python 文件 create_stack_instancegroup.py:

# invoke CreateStackRequest to create InstanceGroup stack

from aliyunsdkcore.client import AcsClient
from aliyunsdkros.request.v20150901 import CreateStacksRequest
import create_instancegroup_template
import json

# define stack creation timeout(minutes)
create_timeout = 60

# define func to create stack
def create_stack(stack_name, ak_id, ak_secret, region_id):
    print('invoke CreateStackRequest to create instances...')
    client = AcsClient(ak_id, ak_secret, region_id)
    req = CreateStacksRequest.CreateStacksRequest()
    req.set_headers({'x-acs-region-id': region_id})

    template = create_instancegroup_template.generate_template(io_optimized='optimized', network_type='classic', image_id='centos6u5_64_40G_cloudinit_20160427.raw', instance_password='******', instance_min_amount=3, system_disk_category='cloud_ssd', instance_max_amount=3, allocate_public_ip='true', instance_type='ecs.n1.small')

    create_stack_body = '''
    {
        "Name": "%s",
        "TimeoutMins": %d,
        "Template": %s
    }
    ''' % (stack_name, create_timeout, template)
    req.set_content(create_stack_body)
    # get response
    response = client.get_response(req)

    # deal response
    if 201 == response[0]:
        parameters = json.loads(response[-1])
        print('Create stack succeccfully!!!')
        return parameters
    else:
        print('Unexpected errors: status=%d, error=%s' % (response[0], response[-1]))
        return None    

调用成功后,登录 ROS 控制台即可看到正在创建的资源栈。

创建 Inventory,获取 Playbook

这部分跟在 VPC 环境下的一样,此处不再赘述。

执行 Playbook,快速部署应用

这部分也跟在 VPC 环境下的一样,不再赘述。

在经典网络下搭建 Redis 集群的所有代码文件可详见附件。在经典网络下,Redis 集群搭建成功后的资源拓扑图如下所示:
redis_classic

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
2月前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible实战应用
【9月更文挑战第33天】本文将带你深入理解Ansible,一个强大的自动化运维工具。我们将从基础概念开始,逐步探索其配置管理、任务调度等功能,并通过实际案例演示其在自动化部署和批量操作中的应用。文章旨在通过浅显易懂的语言和实例,为读者揭开Ansible的神秘面纱,展示其在简化运维工作中的强大能力。
172 64
|
24天前
|
运维 应用服务中间件 Linux
自动化运维的利器:Ansible在配置管理中的应用
【10月更文挑战第39天】本文旨在通过深入浅出的方式,向读者展示如何利用Ansible这一强大的自动化工具来优化日常的运维工作。我们将从基础概念讲起,逐步深入到实战操作,不仅涵盖Ansible的核心功能,还会分享一些高级技巧和最佳实践。无论你是初学者还是有经验的运维人员,这篇文章都会为你提供有价值的信息,帮助你提升工作效率。
|
3月前
|
运维 安全 应用服务中间件
自动化运维的利剑:Ansible实战应用
【9月更文挑战第24天】在现代IT基础设施的快速迭代与扩展中,自动化运维成为提升效率、保障稳定性的关键。本文将深入探讨Ansible这一流行的自动化工具,通过实际案例分析其如何简化日常运维任务,优化工作流程,并提高系统的可靠性和安全性。我们将从Ansible的基础概念入手,逐步深入到高级应用技巧,旨在为读者提供一套完整的Ansible应用解决方案。
|
27天前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
52 4
|
25天前
|
运维 安全 应用服务中间件
自动化运维的利剑:Ansible在配置管理中的应用
【10月更文挑战第37天】本文将深入探讨如何利用Ansible简化和自动化复杂的IT基础设施管理任务。我们将通过实际案例,展示如何用Ansible编写可重用的配置代码,以及这些代码如何帮助运维团队提高效率和减少人为错误。文章还将讨论如何构建Ansible playbook来自动部署应用、管理系统更新和执行常规维护任务。准备好深入了解这个强大的工具,让你的运维工作更加轻松吧!
35 2
|
2月前
|
运维 关系型数据库 MySQL
自动化运维工具Ansible的实战应用
【10月更文挑战第9天】在现代IT运维领域,效率和可靠性是衡量一个系统是否健康的重要指标。自动化运维工具Ansible因其简洁、易用的特性,成为了众多企业和开发者的首选。本文将通过实际案例,展示如何利用Ansible进行日常的运维任务,包括配置管理、软件部署以及批量操作等,帮助读者深入理解Ansible的应用场景及其带来的效益。
|
2月前
|
存储 运维 负载均衡
为什么阿里云国际版 要使用CDN(内容交付网络)?
为什么阿里云国际版 要使用CDN(内容交付网络)?
|
3月前
|
运维 应用服务中间件 网络安全
自动化运维之路:Ansible在配置管理中的应用
【9月更文挑战第15天】本文深入探讨了自动化运维工具Ansible的基本原理和实际应用,通过实例演示如何利用Ansible进行高效的配置管理和批量部署。文章不仅涵盖了Ansible的安装、配置以及基础使用,还详细介绍了如何编写有效的Playbook来自动化日常任务,并讨论了Ansible的最佳实践和常见问题的解决策略,为读者提供了一套完整的解决方案。
|
3月前
|
运维 应用服务中间件 Linux
自动化运维的利剑——Ansible在配置管理中的应用
【9月更文挑战第13天】 随着IT基础设施的日益复杂,手动进行系统配置和管理变得越来越低效且容易出错。Ansible,一个开源的IT自动化工具,因其简单易用和高效的特性成为运维工程师的新宠。本文将通过浅显易懂的语言和具体案例,带你了解如何利用Ansible简化日常的运维任务,实现快速、一致的配置部署与管理。
|
3月前
|
运维 监控 应用服务中间件
自动化运维的利剑:Ansible在配置管理中的应用
【9月更文挑战第11天】 当运维工作遇到瓶颈,效率和可靠性成为制约因素时,自动化工具Ansible如同一把锋利的利剑,为配置管理和批量部署带来革命性的改变。本文将深入探讨Ansible的核心功能、使用方法及其在实际运维场景中的强大作用,带领读者领略自动化运维的魅力,并分享如何通过代码示例实现高效管理。
43 1

推荐镜像

更多