#!/bin/bash # Consul 持久化存储配置脚本 # 需要在每个 Nomad 节点上运行 set -e echo "=== Consul 持久化存储配置 ===" # 1. 创建数据目录 CONSUL_DATA_DIR="/opt/consul/data" echo "创建 Consul 数据目录: $CONSUL_DATA_DIR" sudo mkdir -p $CONSUL_DATA_DIR sudo chown -R nomad:nomad $CONSUL_DATA_DIR sudo chmod 755 $CONSUL_DATA_DIR # 2. 检查 Nomad 客户端配置 NOMAD_CONFIG="/etc/nomad.d/nomad.hcl" echo "检查 Nomad 配置文件: $NOMAD_CONFIG" # 3. 添加 host volume 配置 if ! grep -q "consul-data" $NOMAD_CONFIG; then echo "添加 consul-data host volume 配置到 Nomad" # 备份原配置 sudo cp $NOMAD_CONFIG $NOMAD_CONFIG.backup.$(date +%Y%m%d_%H%M%S) # 添加 host volume 配置 sudo tee -a $NOMAD_CONFIG << 'EOF' # Consul 持久化存储 client { host_volume "consul-data" { path = "/opt/consul/data" read_only = false } } EOF echo "✅ 已添加 consul-data host volume 配置" else echo "✅ consul-data host volume 配置已存在" fi # 4. 重启 Nomad 客户端 echo "重启 Nomad 客户端以应用配置..." sudo systemctl restart nomad sleep 5 # 5. 验证配置 echo "验证 Nomad 客户端状态..." sudo systemctl status nomad --no-pager -l echo "" echo "=== 配置完成 ===" echo "数据目录: $CONSUL_DATA_DIR" echo "权限: $(ls -ld $CONSUL_DATA_DIR)" echo "" echo "下一步:" echo "1. 在所有节点 (ch4, ash3c, warden) 运行此脚本" echo "2. 停止当前 Consul job: nomad job stop consul-cluster-nomad" echo "3. 部署新的持久化配置: nomad job run consul-cluster-persistent.nomad"