Tencent云联网灾备方案
admin
2023-04-09 12:23:30
0

客户需求

上海区云、北京区云、IDC互通。
上海区是生产环境、北京区是灾备、IDC是办公室机房

  • 具体要求:
    1、2条专线分别从IDC-上海、IDC-北京,能做到双活切换
    2、上海、北京互通,北京灾备保持与上海的数据一致。

实施难点

  • 网段重叠:客户的上海、北京、IDC均是172.18.0.0/16网段
  • 专线切换:IDC-上海、IDC-北京,任意一条专线中断可自动切换到另外一条。

需求分析

1、由于网段重叠,无法使用对等连接,只能使用云联网 来解决网段重叠问题。
2、客户IDC也是172.18.0.0/16网段,导致在上海、北京分别到IDC的路由冲突,无法同时存在。故只能做到主备,正常开启上海的路由,上海-IDC专线中断后切换到北京-IDC。使用python调用云联网SDK操作开启/关闭路由。
3、北京灾备方面,云数据库用DTS实时同步数据、网站文件利用COS迁移工具将上海CVM数据迁移到北京COS,然后北京服务器再从COS取数据。或者直接使用rsync同步数据。北京服务器可由上海已配置环境的服务器做镜像,镜像复制到北京,再利用镜像开出服务器。

Tencent云联网灾备方案

操作配置

  • 1、云联网配置
    • 新建云联网(目前公测阶段,需要申请此产品),并关联对应实例
      Tencent云联网灾备方案
    • 关联实例后会自动把实例所拥有的路由自动添加到云联网路由表里。
  • 2、专线配置(云平台)

    • 专线网关创建配置(云产品->私有网络->专线网关)
      Tencent云联网灾备方案
      新建专线网关时,关联网络类型要选择为云联网,云联网实例可现在关联也可之后关联。
    • 专用通道创建配置(云产品->专线接入->专用通道)

    Tencent云联网灾备方案

    创建专用通道时选择专线类型,本例使用的是共享专线,需要填写专线提供方的账户ID、共享专线ID,接入网络选择云联网。一条专线(专用通道)对应一个专线网关。

    Tencent云联网灾备方案

    VLAN ID、IDC侧BGP AS号这些需向专线提供方索要,边界IP和专线提供方协商规划。这些配置完毕后等待专线提供方接受提交的申请,然后再IDC设置上配置BGP宣告IDC内网网段,如果路由方式是静态路由那就在设备上写到云上的路由。

  • 3、专线网关上添加路由

    • 点击需要添加路由的专线网关,进入IDC网段添加需要的IDC网段
      Tencent云联网灾备方案

    如果此专线网关未加入云联网,请在云联网下关联此专线网关,在专线网关上添加的路由会自动添加到云联网路由表里。

    Tencent云联网灾备方案
    在云联网路由表里可看出路由的详情,下一跳、是否启动该路由等。如果存在路由重叠,优先匹配长掩码(例如同网段24和25掩码,优先匹配25掩码的路由)。如果路由网段相同后添加的则自动禁用此路由。

使用云联网SDK自动切换路由

  • 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、测试效果
    模拟异常时切换:
    Tencent云联网灾备方案
    Tencent云联网灾备方案
    Tencent云联网灾备方案
    切换完毕时中间大概中断30秒左右。
最佳方案

如果网络不重叠,2个VPC之间使用对等连接、使用2个云联网然后分别加入对应VPC和IDC的专线,这样从IDC到云上可实现双活。例如IDC-上海中断,可通过IDC-北京再通过对等连接到上海。

相关内容

热门资讯

徐巧芯剖析赖清德:最怕自己丢掉... 海峡导报综合报道 大罢免投票一周年纪念活动26日举行,台北市长蒋万安出席并怒轰,民进党一年过后仍没有...
中国红十字会总会紧急向广东调拨... 记者从中国红十字会总会了解到,针对台风“红霞”给广东造成的灾情,中国红十字会总会启动四级应急响应,紧...
这些少年,正被“毒蛋”围猎 李梦抽了几口电子烟,吐出了白色的烟雾,有一股浓烈的水果香味。随后,她看着自己握电子烟的手,跟身边人说...
蒋万安号召“倒阁”,卢秀燕认为... 海峡导报综合报道 台北市长蒋万安27日抛出震撼议题,表示多名民代向他提议推动“倒阁”,要求台行政机构...
特朗普将在白宫会见两位重要客人 俄乌战争仍未结束,美伊冲突又有升级风险。在此背景下,美国总统特朗普将在白宫接见乌克兰和以色列领导人。...
新租客打扫卧室柜子上掉落4万元... 近日,莲前西路某小区内,张倩签下一套房子的租赁合同。当天上午,她带着12岁的大女儿周馨怡和11岁的小...
六部门通告:禁止涉军队退役报废... 关于禁止涉军队退役报废装备销售活动的通告近年来,部分经营者在线上线下公开销售涉及我军退役报废装备(指...
九寨沟景区发生泥石流,部分道路... 7月26日,九寨沟风景名胜区管理局发布泥石流灾害通报:2026年7月26日15时50分,九寨沟景区局...
空调26度不凉是什么原因 从空调内部元器件来说,不凉的原因有可能是温度传感器出现故障了,也有可能是空调压缩机或者铜管出现问题,...
鲸鸿动能携手香港国际机场、鸿蒙...   2026 年 7 月 25 日,十余位鸿蒙车主组成的车队从珠海出发,经港珠澳大桥通关抵达香港国际...