/AutoDnsPodScript

闲时流量包切换

Primary LanguageGo

AutoScaleDnspodTool

支持 Dnspod 进行两厂商闲时和非闲时自动切换功能

使用说明

1.前置条件

该工具使用的前置条件如下所示:

1.1.使用者必须有访问https://www.dnspod.cn 的权限,也就是说,必须要有API Token, 格式为: ID,Token 组合而成的,用英文的逗号分割。

申请方法参考:https://support.dnspod.cn/Kb/showarticle/tsid/227/

1.2.使用者必须要有DnsPod上面的两种权限

权限一:同一个域名下面可以配置2条以上记录的权限; 权限二:域名对应的记录上面可以更改权重的权限。

2.功能介绍

该工具支持立即切量和定时切量两种方式,同时还可以按照灰度的方式进行切换。备注:灰度指的是,在一定的时间内,可以每隔一段时间切换一部分量到目标CDN厂商。

2.1 立即切量功能

表示的是,在执行工具后,会按照配置规则,立马执行切量的操作。 有两种方式可选: 第一种,立马100切到目标CDN厂商; 另一种,按照一个固定的时间粒度,去灰度切量,例子: 时间粒度是 5分钟,切向目标厂商时间假设为9:00,会按照下面的规则切量:9:00 切量5%到目标厂商,9:05切量15%,9:10切量30%,9:15切量50%,9:20切量75%,9:25切量100%。

2.2 定时切量

表示的是,一天之内,到了指定的切向目标厂商的时间之后,自动执行向目标厂商的切量操作;到了指定的切回源厂商的时间之后,自动执行切回源厂商的操作。同样支持立马100切量和灰度切量两种方式。 例子: 切向目标厂商T的时间为24:00:00,切回源厂商S的时间为9:00:00,灰度切换的时间粒度为5分钟。

1). 24:00:00的时刻,S向T切量:24:00 切量5%, 24:05切量15%, 24:10 切量30%,24:15切量50%,24:20切量75%, 24:25切量100% 。
2). 第二天9:00:00的时刻,T向S切量:9:00 切量10%,9:05切量30%,9:10切量60%,9:15切量100% 。
3). 工具不被手动停止的情况下,会继续下次的切量操作。

3.配置介绍

3.1 基础配置service.conf中,说明如下所示:

{
"apitoken":"id,token", // 用户名的apitoken, id,token构成
"partlyscale":true,    // 灰度切量标识,true表示灰度切量,false表示立即切量
"timely":true,   // 是否定时切量标识,true表示定时切量,false表示立即切量
"scalein":true,  // 是否向目标厂商切量的标识,true表示向目标厂商切量,false表示的是切回源厂商。备注:这个标识只有在timely是false的情况下生效
"start-time": {  // 源厂商向目标厂商切量的定时时间,例如 24:00:00,那么hour:24,min:0,sec:0
        "hour": 10,
        "min": 20,
        "sec":0
},
"end-time": {   // 目标厂商向源厂商切量的定时时间,例如 9:00:00,那么hour:9,min:0,sec:0
        "hour": 10,
        "sec":0
},
"time-rate":5 //灰度切量的时间粒度,单位是秒,5表示的是5秒。
}

3.2 规则配置rule.conf中,说明如下所示:

{ // 可以配置单个域名,也可以配置多个域名,多个域名会并发执行
"cnames":[
        {
                "zone":"baidu.com",// 域名的后缀,一般有两个或三个,例如baidu.com和pud.edu.cn
                "domain":"findback.test.baidu.com", // 需要切量的整个域名名称
                "view":"华东", // Dnspod上面的线路类型,例如:默认,华东,上海移动,上海电信等等
                "from":"test-ali.ali.com", // 源厂商的cname名称
                "to":"test-baidu.baidu.com" // 目标厂商的cname名称
        }
]
}

4.执行

4.1.下载代码到本地:

go clone git@github.com:dagedaniao/AutoScaleDnspodTool.git

4.2.编译代码:

go build,会生成可执行文件AutoScaleDnspodTool

4.3.修改配置文件

service.conf 和 rule.conf

4.4.执行文件

./AutoScaleDnspodTool