Skip to content
闲时流量包切换
Go
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md
config.go
dnspod.go
dnspodData.go
main.go
rule.conf
service.conf
service.go
time.go

README.md

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

You can’t perform that action at this time.