117 lines
3.7 KiB
Bash
Executable File
117 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Consul集群部署脚本 - 遵循最佳变量命名规范
|
||
# 此脚本将部署一个完全遵循 config/{environment}/{provider}/{region_or_service}/{key} 格式的Consul集群
|
||
|
||
set -e
|
||
|
||
# 配置参数
|
||
CONSUL_ADDR="${CONSUL_ADDR:-localhost:8500}"
|
||
ENVIRONMENT="${ENVIRONMENT:-dev}"
|
||
NOMAD_ADDR="${NOMAD_ADDR:-localhost:4646}"
|
||
CONSUL_CONFIG_DIR="${CONSUL_CONFIG_DIR:-/root/mgmt/components/consul/configs}"
|
||
CONSUL_JOBS_DIR="${CONSUL_JOBS_DIR:-/root/mgmt/components/consul/jobs}"
|
||
|
||
echo "开始部署遵循最佳变量命名规范的Consul集群..."
|
||
echo "Consul地址: $CONSUL_ADDR"
|
||
echo "Nomad地址: $NOMAD_ADDR"
|
||
echo "环境: $ENVIRONMENT"
|
||
|
||
# 检查Consul连接
|
||
echo "检查Consul连接..."
|
||
if ! curl -s "$CONSUL_ADDR/v1/status/leader" | grep -q "."; then
|
||
echo "错误: 无法连接到Consul服务器 $CONSUL_ADDR"
|
||
exit 1
|
||
fi
|
||
echo "Consul连接成功"
|
||
|
||
# 检查Nomad连接
|
||
echo "检查Nomad连接..."
|
||
if ! curl -s "$NOMAD_ADDR/v1/status/leader" | grep -q "."; then
|
||
echo "错误: 无法连接到Nomad服务器 $NOMAD_ADDR"
|
||
exit 1
|
||
fi
|
||
echo "Nomad连接成功"
|
||
|
||
# 步骤1: 设置Consul变量
|
||
echo "步骤1: 设置Consul变量..."
|
||
/root/mgmt/deployment/scripts/setup_consul_cluster_variables.sh
|
||
|
||
# 步骤2: 生成Consul配置文件
|
||
echo "步骤2: 生成Consul配置文件..."
|
||
/root/mgmt/deployment/scripts/generate_consul_config.sh
|
||
|
||
# 步骤3: 停止现有的Consul集群
|
||
echo "步骤3: 停止现有的Consul集群..."
|
||
if nomad job status consul-cluster-simple 2>/dev/null; then
|
||
nomad job stop consul-cluster-simple
|
||
echo "已停止现有的consul-cluster-simple作业"
|
||
fi
|
||
|
||
if nomad job status consul-cluster-dynamic 2>/dev/null; then
|
||
nomad job stop consul-cluster-dynamic
|
||
echo "已停止现有的consul-cluster-dynamic作业"
|
||
fi
|
||
|
||
if nomad job status consul-cluster-kv 2>/dev/null; then
|
||
nomad job stop consul-cluster-kv
|
||
echo "已停止现有的consul-cluster-kv作业"
|
||
fi
|
||
|
||
# 步骤4: 部署新的Consul集群
|
||
echo "步骤4: 部署新的Consul集群..."
|
||
nomad job run $CONSUL_JOBS_DIR/consul-cluster-kv.nomad
|
||
|
||
# 步骤5: 验证部署
|
||
echo "步骤5: 验证部署..."
|
||
sleep 10
|
||
|
||
# 检查作业状态
|
||
if nomad job status consul-cluster-kv | grep -q "running"; then
|
||
echo "Consul集群作业正在运行"
|
||
else
|
||
echo "错误: Consul集群作业未运行"
|
||
exit 1
|
||
fi
|
||
|
||
# 检查Consul集群状态
|
||
if curl -s "$CONSUL_ADDR/v1/status/leader" | grep -q "."; then
|
||
echo "Consul集群leader已选举"
|
||
else
|
||
echo "错误: Consul集群leader未选举"
|
||
exit 1
|
||
fi
|
||
|
||
# 检查节点数量
|
||
NODE_COUNT=$(curl -s "$CONSUL_ADDR/v1/status/peers" | jq '. | length')
|
||
if [ "$NODE_COUNT" -eq 3 ]; then
|
||
echo "Consul集群节点数量正确: $NODE_COUNT"
|
||
else
|
||
echo "警告: Consul集群节点数量不正确: $NODE_COUNT (期望: 3)"
|
||
fi
|
||
|
||
# 步骤6: 验证变量配置
|
||
echo "步骤6: 验证变量配置..."
|
||
|
||
# 检查一些关键变量
|
||
if curl -s "$CONSUL_ADDR/v1/kv/config/$ENVIRONMENT/consul/cluster/datacenter" | jq -r '.[].Value' | base64 -d | grep -q "dc1"; then
|
||
echo "Consul数据中心配置正确"
|
||
else
|
||
echo "警告: Consul数据中心配置可能不正确"
|
||
fi
|
||
|
||
if curl -s "$CONSUL_ADDR/v1/kv/config/$ENVIRONMENT/consul/nodes/master/ip" | jq -r '.[].Value' | base64 -d | grep -q "100.117.106.136"; then
|
||
echo "Consul master节点IP配置正确"
|
||
else
|
||
echo "警告: Consul master节点IP配置可能不正确"
|
||
fi
|
||
|
||
# 步骤7: 显示访问信息
|
||
echo "步骤7: 显示访问信息..."
|
||
echo "Consul UI地址: http://100.117.106.136:8500"
|
||
echo "Consul API地址: http://100.117.106.136:8500/v1"
|
||
echo "Nomad UI地址: http://100.117.106.136:4646"
|
||
echo "Nomad API地址: http://100.117.106.136:4646/v1"
|
||
|
||
echo "Consul集群部署完成!"
|
||
echo "集群现在完全遵循最佳变量命名规范: config/{environment}/{provider}/{region_or_service}/{key}" |