跳至内容
多节点部署

多节点部署

在多个地理区域部署 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区域名称
--lat0本节点的纬度
--lon0本节点的经度
--peers初始对等节点地址(逗号分隔)
--heartbeat30s心跳间隔

路由原理

  1. 每个节点通过心跳(每 30 秒)向所有对等节点注册
  2. 收到验证请求后,节点解析目标MX 服务器的 IP
  3. 通过 GeoIP 查询确定 MX 服务器的地理位置
  4. 将请求路由到最近的节点(Haversine 距离)
  5. 若远端节点不可用,请求回退到本地执行

对等节点 API 接口

接口方法说明
/v1/peer/registerPOST注册新的对等节点
/v1/peer/peersGET列出已注册的对等节点
/v1/peer/heartbeatPOST心跳信号
/v1/peer/geoGETIP 的 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