摘要:云计算 客户需求 上海区云、北京区云、IDC互通。 上海区是生产环境、北京区是灾备、IDC是办公室机房 具体要求: 1、2条专线分
云计算 客户需求
上海区云、北京区云、IDC互通。
上海区是生产环境、北京区是灾备、IDC是办公室机房
1、由于网段重叠,无法使用对等连接,只能使用云联网 来解决网段重叠问题。
2、客户IDC也是172.18.0.0/16网段,导致在上海、北京分别到IDC的路由冲突,无法同时存在。故只能做到主备,正常开启上海的路由,上海-IDC专线中断后切换到北京-IDC。使用python调用云联网SDK操作开启/关闭路由。
3、北京灾备方面,云数据库用DTS实时同步数据、网站文件利用COS迁移工具将上海CVM数据迁移到北京COS,然后北京服务器再从COS取数据。或者直接使用rsync同步数据。北京服务器可由上海已配置环境的服务器做镜像,镜像复制到北京,再利用镜像开出服务器。
2、专线配置(云平台)
专线网关创建配置(云产品->私有网络->专线网关)
创建专用通道时选择专线类型,本例使用的是共享专线,需要填写专线提供方的账户ID、共享专线ID,接入网络选择云联网。一条专线(专用通道)对应一个专线网关。
VLAN ID、IDC侧BGP AS号这些需向专线提供方索要,边界IP和专线提供方协商规划。这些配置完毕后等待专线提供方接受提交的申请,然后再IDC设置上配置BGP宣告IDC内网网段,如果路由方式是静态路由那就在设备上写到云上的路由。
3、专线网关上添加路由
点击需要添加路由的专线网关,进入IDC网段添加需要的IDC网段如果此专线网关未加入云联网,请在云联网下关联此专线网关,在专线网关上添加的路由会自动添加到云联网路由表里。
在云联网路由表里可看出路由的详情,下一跳、是否启动该路由等。如果存在路由重叠,优先匹配长掩码(例如同网段24和25掩码,优先匹配25掩码的路由)。如果路由网段相同后添加的则自动禁用此路由。
1、编写相关代码
将代码放置到相关服务器上,触发脚本条件可设置为ping隧道边界ip及IDC内网ip,如果同时不通则触发脚本切换专线。
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# Auther: liyk time:2019/1/3
# File : CCN.py
from tencentcloud.common import credential
from tencentcloud.vpc.v20170312 import vpc_client,models
import json
#
def Auth_vpc(id,key):
# 认证ak
cred = credential.Credential(id,key)
Vpc_client = vpc_client.VpcClient(cred,ap-shanghai)
return Vpc_client
#
def SH_DescribeCcnRoutesRequest(Vpc_client):
# 获取上海专线网关路由ID
req = models.DescribeCcnRoutesRequest()
req.CcnId = \'ccn-a187ua1z\'
resp = Vpc_client.DescribeCcnRoutes(req)
result = json.loads(resp.to_json_string())
RouteSet = result[\'RouteSet\']
SH_RouteIds = []
for i in RouteSet:
if i[\'InstanceName\'] == shanghai-IDC:
SH_RouteId = i[\'RouteId\']
SH_RouteIds.append(SH_RouteId)
return SH_RouteIds
#
def BJ_DescribeCcnRoutesRequest(Vpc_client):
# 获取北京专线网关路由ID
req = models.DescribeCcnRoutesRequest()
req.CcnId = \'ccn-a187ua1z\'
resp = Vpc_client.DescribeCcnRoutes(req)
result = json.loads(resp.to_json_string())
RouteSet = result[\'RouteSet\']
BJ_RouteIds = []
for i in RouteSet:
if i[\'InstanceName\'] == beijing-IDC:
BJ_RouteId = i[\'RouteId\']
BJ_RouteIds.append(BJ_RouteId)
return BJ_RouteIds
#
def SH_EnableCcnRoutes(Vpc_client,SH_id):
# 开启上海路由
req = models.EnableCcnRoutesRequest()
req.CcnId = \'ccn-a187ua1z\'
req.RouteIds = [\'%s\' %SH_id]
print(\'开启上海路由 %s\' % SH_id)
resp = Vpc_client.EnableCcnRoutes(req)
# print(resp.to_json_string())
#
def BJ_EnableCcnRoutes(Vpc_client,BJ_id):
# 开启北京路由
req = models.EnableCcnRoutesRequest()
req.CcnId = \'ccn-a187ua1z\'
req.RouteIds = [\'%s\' %BJ_id]
print(\'开启北京路由 %s\' % BJ_id)
resp = Vpc_client.EnableCcnRoutes(req)
#
def SH_DisableCcnRoutes(Vpc_client,SH_id):
req = models.DisableCcnRoutesRequest()
req.CcnId = \'ccn-a187ua1z\'
req.RouteIds = [\'%s\' %SH_id]
print(\'关闭上海路由 %s\' % SH_id)
resp = Vpc_client.DisableCcnRoutes(req)
#
def BJ_DisableCcnRoutes(Vpc_client,BJ_id):
req = models.DisableCcnRoutesRequest()
req.CcnId = \'ccn-a187ua1z\'
req.RouteIds = [%s %BJ_id]
print(\'关闭北京路由 %s\' % BJ_id)
resp = Vpc_client.DisableCcnRoutes(req)
#
if __name__ == __main__:
id = \'AKID*******sTzK\'
key = \'KUWT*******M\'
Vpc_client = Auth_vpc(id, key)
SH_RouteIds = SH_DescribeCcnRoutesRequest(Vpc_client)
BJ_RouteIds = BJ_DescribeCcnRoutesRequest(Vpc_client)
# 这里可使用ping返回结果
oper = normal
if oper == normal:
for BJ_id in BJ_RouteIds:
BJ_DisableCcnRoutes(Vpc_client, BJ_id)
for SH_id in SH_RouteIds:
SH_EnableCcnRoutes(Vpc_client, SH_id)
# SH_DisableCcnRoutes(Vpc_client, SH_id)
else:
for SH_id in SH_RouteIds:
SH_DisableCcnRoutes(Vpc_client, SH_id)
for BJ_id in BJ_RouteIds:
BJ_EnableCcnRoutes(Vpc_client, BJ_id)
2、测试效果 如果网络不重叠,2个VPC之间使用对等连接、使用2个云联网然后分别加入对应VPC和IDC的专线,这样从IDC到云上可实现双活。例如IDC-上海中断,可通过IDC-北京再通过对等连接到上海。
相关文章推荐
虚拟主机的专业参数,分别都是什么意思?2022-09-09
中非域名注册规则是怎样的?注册域名有什么用处? 2022-01-10
HostEase新年活动促销 美国/香港主机全场低至五折2021-12-28
HostGator下载完整备份教程分享2021-12-28
Flink中有界数据与无界数据的示例分析2021-12-28