教程 867 字

一个PHP文件+cloudflare实现故障转移!

因为服务器之前因为不可抗拒的原因导致服务器故障。

时间飘忽不定,我可能在睡觉又或者在线能及时处理。

于是我弄了这么一个简单的小工具,前提是域名托管在cloudflare才可以。

文件:点我下载

具体教程:

1.先登录cloudflare,点击一个域名。找到区域ID复制到PHP文件中。

//区域ID
$id = '';

2.区域ID下面有一个获取您的API令牌点进去。

点击创建令牌,然后使用编辑区域DNS这个模板。

在区域资源这一行选择你的域名,客户端IP地址筛选可以添加白名单。

创建好后复制到PHP文件中。

//创建API后得到的token,写在Bearer 后
$Authorization = 'Authorization: Bearer ';

ps.Bearer和你的token中间是有空格的。

3.添加好两个信息后,到25行。

//获取DNS记录ID列表,改成true后访问PHP地址会显示JSON格式的DNS记录列表。
$get_dnsid = false;

false修改成true,然后上传服务器访问。

会出现一些json,选择你目前需要做故障转移的那条解析的ID。

填写到:

//需要修改的DNS记录ID,  $get_dnsid = true 获取记录列表,设置dnsid后将$get_dnsid设置成false
$dnsid = '';

再吧**$get_dnsid = true;** 修改成 $get_dnsid = false; 即可!

4.修改其他参数

//ping 检测的IP
$pingip='baidu.com';

修改成你要ping的地址。

$dnstype = 'A';
//名字
$dnsname = '';
//修改后的IP
$dnscontent = '';
//代理
(bool)$dnsproxied = true;
//ttl
$dnsttl = 3600;

上面的是出现故障后修改解析IP的参数,第一个默认a解析。

第二是解析内容,第三是备用服务器的IP,第四修改成false就是关闭cf的cdn功能。

默认是开启的,第五是ttl时间,默认一个小时,修改成自动可以把值改成1。

5.ping地址的端口

if (pingDomain($pingip, 80) === -1) {

来自43行,这里默认80端口,可以修改成其他端口。

上面全部部署好后,设置监控访问URL即可。

温馨提示,此文件的ping的方式和你电脑终端ping的方式不是一样的。

此方式类似于端口扫描,端口设置为80或者443可以监控web。

端口设置3306,可以监控mysql,但是端口必须放行部署PHP文件的IP。

比如你在宝塔放行端口7777,但是这个端口没有进程占用,也视为故障。