因为服务器之前因为不可抗拒的原因导致服务器故障。
时间飘忽不定,我可能在睡觉又或者在线能及时处理。
于是我弄了这么一个简单的小工具,前提是域名托管在 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,但是这个端口没有进程占用,也视为故障。