基於資源編排和 Ansible 在經典網路下快速交付套用

來源:互聯網
上載者:User

摘要: 本文是基於資源編排和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

相關產品:

  1. 資源編排ROS
  2. 巨量資料計算服務(MaxCompute)
  3. 高速通道
  4. 雲端服務器ECS
相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.