共计 1274 个字符,预计需要花费 4 分钟才能阅读完成。
本博客目前是托管在 Github Pages 上,突发奇想部署一份在私人服务器上,并且两边资源都能够动态访问到。于是了解到几种来分流资源的策略:
- DNS 轮询
- 开源平台 Nginx、Apache 等
- 各大云商提供的负载器服务等
- CND
起初想尝试 Cloudflare 平台的智能 DNS 服务,但是需要付费($5/mo)。于是就想通过 Cloudflare Workers 来尝试一下。
注册 Cloudflare 账户
- 前往 Cloudflare 注册开通账户,并将域名托管至 CF
- 添加 CNAME 记录将
aaa.com
解析至 YourGithubRepoName.github.io。这里需要在 Github Pages 仓库中设置自定义域名。具体见 - 添加 A 记录将
blog.aaa.com
解析至你的服务器真实 IP - SSL/TLS 开启完全严格模式
- (必须) 开启 DNS 记录中的 Proxy(小橘云)
创建 Workers
- 转到 Workers 和 Pages
- 选择
创建应用程序
- 贴上以下代码
addEventListener('fetch', event => {event.respondWith(handleRequest(event.request)) }) // 轮询的目标服务 const TARGETS = [ 'aaa.com', 'blog.aaa.com' ] async function handleRequest(request) {const url = new URL(request.url) url.hostname = getRandomServer() return await fetch(url, request) } // 每小时切换不同的目标 function getServerEveryHour() {const d = new Date() const h = d.getHours() return TARGETS[h%TARGETS.length] } // 每次都随机目标(要注意目标之间是否有跨域)function getRandomServer() {return TARGETS[Math.floor(Math.random() * TARGETS.length)] }
- 保存并部署
使用 Worker
- 查看刚刚创建的 Worker,详情页选择触发器
- 在
路由
界面点击
添加路由
- 路由:可以填
aaa.com
,可以使用通配符。具体可见 - 选择区域:刚才创建的
aaa.com
- 路由:可以填
验证
在刚刚创建的 Workers 配置页面顶部右上角点可以编辑并调试、实施预览 JavaScript 代码
修改这一段代码来验证分流是否生效:
// 轮询的目标服务
const TARGETS = [
'bing.com',
'blog.aaa.com'
]
刷新页面有时你会发现加载到 Bing.com 就说明配置生效了
最后验证完记得把地址改回去~
总结
想尝试 Cloudflare 平台的 Workers 功能可以试试,以上方式仅图一乐,真正的负载均衡需要考虑更多方方面面的因素:负载均衡策略、扩展性、故障容灾等等等等(我也不会
本文原地址:https://noooy.com/2023/12/ee41db1fbb83.html 已经授权转载。
更多资源请 点击这里 关注 TG 频道
正文完