#!/bin/bash echo "=== 简单的 Nomad 集群修复脚本 ===" # 定义 Tailscale IP 地址 SEMAPHORE_IP="100.116.158.95" MASTER_IP="100.117.106.136" ASH3C_IP="100.116.80.94" ENCRYPT_KEY="NVOMDvXblgWfhtzFzOUIHnKEOrbXOkPrkIPbRGGf1YQ=" # 创建配置文件函数 create_config() { local node_name=$1 local bind_ip=$2 cat > /tmp/nomad-${node_name}.hcl << EOF datacenter = "dc1" region = "global" data_dir = "/opt/nomad/data" bind_addr = "${bind_ip}" server { enabled = true bootstrap_expect = 3 encrypt = "${ENCRYPT_KEY}" server_join { retry_join = ["${SEMAPHORE_IP}", "${MASTER_IP}", "${ASH3C_IP}"] } } client { enabled = true } ui_config { enabled = true } addresses { http = "0.0.0.0" rpc = "${bind_ip}" serf = "${bind_ip}" } ports { http = 4646 rpc = 4647 serf = 4648 } plugin "docker" { config { allow_privileged = true volumes { enabled = true } } } log_level = "INFO" log_file = "/var/log/nomad/nomad.log" EOF } echo "1. 停止所有 Nomad 服务..." systemctl stop nomad ssh -p 60022 -i ~/.ssh/id_ed25519 ben@${MASTER_IP} "echo '3131' | sudo -S systemctl stop nomad" ssh -p 22 -i ~/.ssh/id_ed25519 ben@${ASH3C_IP} "echo '3131' | sudo -S systemctl stop nomad" echo "2. 清理数据目录..." rm -rf /opt/nomad/data/* ssh -p 60022 -i ~/.ssh/id_ed25519 ben@${MASTER_IP} "echo '3131' | sudo -S rm -rf /opt/nomad/data/*" ssh -p 22 -i ~/.ssh/id_ed25519 ben@${ASH3C_IP} "echo '3131' | sudo -S rm -rf /opt/nomad/data/*" echo "3. 创建新配置文件..." create_config "semaphore" "${SEMAPHORE_IP}" create_config "master" "${MASTER_IP}" create_config "ash3c" "${ASH3C_IP}" echo "4. 部署配置文件..." cp /tmp/nomad-semaphore.hcl /etc/nomad.d/nomad.hcl chown nomad:nomad /etc/nomad.d/nomad.hcl scp -P 60022 -i ~/.ssh/id_ed25519 /tmp/nomad-master.hcl ben@${MASTER_IP}:/tmp/ ssh -p 60022 -i ~/.ssh/id_ed25519 ben@${MASTER_IP} "echo '3131' | sudo -S cp /tmp/nomad-master.hcl /etc/nomad.d/nomad.hcl && echo '3131' | sudo -S chown nomad:nomad /etc/nomad.d/nomad.hcl" scp -P 22 -i ~/.ssh/id_ed25519 /tmp/nomad-ash3c.hcl ben@${ASH3C_IP}:/tmp/ ssh -p 22 -i ~/.ssh/id_ed25519 ben@${ASH3C_IP} "echo '3131' | sudo -S cp /tmp/nomad-ash3c.hcl /etc/nomad.d/nomad.hcl && echo '3131' | sudo -S chown nomad:nomad /etc/nomad.d/nomad.hcl" echo "5. 启动服务..." systemctl start nomad ssh -p 60022 -i ~/.ssh/id_ed25519 ben@${MASTER_IP} "echo '3131' | sudo -S systemctl start nomad" ssh -p 22 -i ~/.ssh/id_ed25519 ben@${ASH3C_IP} "echo '3131' | sudo -S systemctl start nomad" echo "6. 等待集群形成..." sleep 30 echo "7. 检查集群状态..." nomad server members nomad node status echo "=== 修复完成 ==="