摘要: 本文是基於資源編排和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集群搭建成功後的資源拓撲圖如下所示:
相關產品:
- 資源編排ROS
- 巨量資料計算服務(MaxCompute)
- 高速通道
- 雲端服務器ECS