多节点部署
在多个地理区域部署 smtp-probe,实现低延迟验证。节点间通过心跳协调,将请求路由到地理位置最近的节点。
架构
客户端请求 → 节点 A(新加坡)
↓(若 MX 服务器更靠近美国)
路由到节点 B(美国西部)
↓
节点 B 执行验证启动节点
smtp-probe serve --port 8080 \
--node-id sg-01 --region asia-southeast1 \
--lat 1.35 --lon 103.82 \
--peers http://us-node:8080,http://eu-node:8080多节点参数
| 参数 | 默认值 | 说明 |
|---|---|---|
--node-id | (自动) | 本节点的唯一标识 |
--region | — | 区域名称 |
--lat | 0 | 本节点的纬度 |
--lon | 0 | 本节点的经度 |
--peers | — | 初始对等节点地址(逗号分隔) |
--heartbeat | 30s | 心跳间隔 |
路由原理
- 每个节点通过心跳(每 30 秒)向所有对等节点注册
- 收到验证请求后,节点解析目标MX 服务器的 IP
- 通过 GeoIP 查询确定 MX 服务器的地理位置
- 将请求路由到最近的节点(Haversine 距离)
- 若远端节点不可用,请求回退到本地执行
对等节点 API 接口
| 接口 | 方法 | 说明 |
|---|---|---|
/v1/peer/register | POST | 注册新的对等节点 |
/v1/peer/peers | GET | 列出已注册的对等节点 |
/v1/peer/heartbeat | POST | 心跳信号 |
/v1/peer/geo | GET | IP 的 GeoIP 查询 |
示例:3 节点部署
# 新加坡
smtp-probe serve --port 8080 \
--node-id sg-01 --region asia-southeast1 \
--lat 1.35 --lon 103.82 \
--peers http://us-node:8080,http://eu-node:8080
# 美国西部
smtp-probe serve --port 8080 \
--node-id us-01 --region us-west1 \
--lat 37.77 --lon -122.42 \
--peers http://sg-node:8080,http://eu-node:8080
# 欧洲(法兰克福)
smtp-probe serve --port 8080 \
--node-id eu-01 --region eu-west1 \
--lat 50.11 --lon 8.68 \
--peers http://sg-node:8080,http://us-node:8080