💊 安装 Anycast-HealthChecker
📝 概述
Anycast Healthchecker 安装于配置了 BGP-Anycast 的 Load Proxy 节点。这些节点应在环回地址上配置公网 IP,并在物理网卡上使用 Transit IP 连接 BGP 对等体。
注意
Anycast-HealthChecker 组件没有区分测试环境与生产环境,只有版本号标签。
安装脚本需要在运行时传入多个参数,例如 IP 地址和 BGP 对等体。以下是脚本所需参数的详细说明:
| 参数名 | 说明 | 示例值 |
|---|---|---|
| Version | 脚本版本 (参考 bitbucket 仓库 rootnetworksllc/anycast 中的 tag) |
1.0.9 |
| anycast_prefix | 要广播的 IP 前缀,即配置在 loopback 接口上的公网 IP | 102.100.0.1/32 |
| local_ip | 物理网卡上对 BGP 对等体的 Transit IP | 10.0.0.10 |
| local_asn | 本地 BGP AS 编号,用于 BIRD 守护进程 |
100 |
| remote_ip | BGP 对等体的 IP 地址 | 10.0.0.11 |
| remote_asn | BGP 对等体的 AS 编号 | 101 |
| bgp_password | BGP 认证预共享密钥 | It'sASecret |
无 BGP 密码的情况
如果不需要 BGP 密码,脚本仍需填写一个虚拟值,然后手动编辑 BIRD 配置文件移除密码配置项。因为脚本始终会尝试设置该值。
🪜 安装步骤
-
在 Load Proxy 节点运行以下命令,传入相应参数:
wget https://files.ops2.net/ops/anycast/prod/install.sh && bash install.sh <版本> <Anycast_prefix> <本地 IP> <本地 AS> <对等体 IP> <对等体 AS> <BGP 密码>
-
编辑
http-healthcheck.sh文件默认情况下,Anycast-HealthChecker 使用脚本
/etc/anycast-checker/http-healthcheck.sh查询本地 NGINX 服务。如果返回HTTP 状态码 400,表示节点健康,并返回退出码 0,避免撤回路由。注意
返回 400 而不是 200 的原因是直接访问 NGINX 会因缺少合法 Header 被视为非法请求。
但安装完成后默认设置为
if [ $status -eq 999 ]; exit 0来禁止广播 BGP 前缀。管理员需要手动将该值改为 400:
安装完成后,以下文件将被生成于 /etc 目录下:
etc/
├──anycast-checker
│ ├── dns-healthcheck.sh
│ └── http-healthcheck.sh
├──bird
│ ├── bird.conf
│ └── ....
├──....
系统服务单元也会被注册,可通过以下命令查看运行状态: