69 lines
1.8 KiB
Bash
Executable File
69 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 向所有三个 Consul 节点注册 Traefik 服务
|
|
# 解决 Consul leader 轮换问题
|
|
|
|
CONSUL_NODES=(
|
|
"master.tailnet-68f9.ts.net:8500"
|
|
"warden.tailnet-68f9.ts.net:8500"
|
|
"ash3c.tailnet-68f9.ts.net:8500"
|
|
)
|
|
|
|
TRAEFIK_IP="100.97.62.111"
|
|
ALLOC_ID=$(nomad job allocs traefik-consul-lb | head -2 | tail -1 | awk '{print $1}')
|
|
|
|
SERVICE_DATA_LB="{
|
|
\"ID\": \"traefik-consul-lb-${ALLOC_ID}\",
|
|
\"Name\": \"consul-lb\",
|
|
\"Tags\": [\"consul\", \"loadbalancer\", \"traefik\", \"multi-node\"],
|
|
\"Address\": \"${TRAEFIK_IP}\",
|
|
\"Port\": 80,
|
|
\"Check\": {
|
|
\"HTTP\": \"http://${TRAEFIK_IP}:80/\",
|
|
\"Interval\": \"30s\",
|
|
\"Timeout\": \"15s\"
|
|
}
|
|
}"
|
|
|
|
SERVICE_DATA_DASHBOARD="{
|
|
\"ID\": \"traefik-dashboard-${ALLOC_ID}\",
|
|
\"Name\": \"traefik-dashboard\",
|
|
\"Tags\": [\"traefik\", \"dashboard\", \"multi-node\"],
|
|
\"Address\": \"${TRAEFIK_IP}\",
|
|
\"Port\": 8080,
|
|
\"Check\": {
|
|
\"HTTP\": \"http://${TRAEFIK_IP}:8080/api/overview\",
|
|
\"Interval\": \"30s\",
|
|
\"Timeout\": \"15s\"
|
|
}
|
|
}"
|
|
|
|
echo "Registering Traefik services to all Consul nodes..."
|
|
echo "Allocation ID: ${ALLOC_ID}"
|
|
echo "Traefik IP: ${TRAEFIK_IP}"
|
|
|
|
for node in "${CONSUL_NODES[@]}"; do
|
|
echo "Registering to ${node}..."
|
|
|
|
# 注册 consul-lb 服务
|
|
curl -s -X PUT "http://${node}/v1/agent/service/register" \
|
|
-H "Content-Type: application/json" \
|
|
-d "${SERVICE_DATA_LB}"
|
|
|
|
# 注册 traefik-dashboard 服务
|
|
curl -s -X PUT "http://${node}/v1/agent/service/register" \
|
|
-H "Content-Type: application/json" \
|
|
-d "${SERVICE_DATA_DASHBOARD}"
|
|
|
|
echo "✓ Registered to ${node}"
|
|
done
|
|
|
|
echo ""
|
|
echo "🎉 Services registered to all Consul nodes!"
|
|
echo ""
|
|
echo "Verification:"
|
|
for node in "${CONSUL_NODES[@]}"; do
|
|
echo "Services on ${node}:"
|
|
curl -s "http://${node}/v1/catalog/services" | jq -r 'keys[]' | grep -E "(consul-lb|traefik-dashboard)" | sed 's/^/ - /'
|
|
done
|