跳转至

💊 安装 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 配置文件移除密码配置项。因为脚本始终会尝试设置该值。

🪜 安装步骤

  1. 在 Load Proxy 节点运行以下命令,传入相应参数:

    wget https://files.ops2.net/ops/anycast/prod/install.sh && bash install.sh <版本> <Anycast_prefix> <本地 IP> <本地 AS> <对等体 IP> <对等体 AS> <BGP 密码>
    

  2. 编辑 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:

    sed -i 's/999/400/g' /etc/anycast-checker/http-healthcheck.sh
    


安装完成后,以下文件将被生成于 /etc 目录下:

etc/
├──anycast-checker
│   ├── dns-healthcheck.sh
│   └── http-healthcheck.sh
├──bird
│   ├── bird.conf
│   └── ....
├──....

系统服务单元也会被注册,可通过以下命令查看运行状态:

systemctl status anycast-healthchecker