您好,登錄后才能下訂單哦!
上海區云、北京區云、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、專線網關上添加路由
如果此專線網關未加入云聯網,請在云聯網下關聯此專線網關,在專線網關上添加的路由會自動添加到云聯網路由表里。
在云聯網路由表里可看出路由的詳情,下一跳、是否啟動該路由等。如果存在路由重疊,優先匹配長掩碼(例如同網段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個VPC之間使用對等連接、使用2個云聯網然后分別加入對應VPC和IDC的專線,這樣從IDC到云上可實現雙活。例如IDC-上海中斷,可通過IDC-北京再通過對等連接到上海。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。