| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #!/bin/bash
- # 启动etcd服务
- set -e
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- BACKEND_DIR="$(dirname "$SCRIPT_DIR")"
- # 检测操作系统
- OS_TYPE="$(uname -s)"
- case "$OS_TYPE" in
- Darwin*) PLATFORM="darwin" ;;
- Linux*) PLATFORM="linux" ;;
- CYGWIN*|MINGW*|MSYS*) PLATFORM="windows" ;;
- *) echo "不支持的操作系统: $OS_TYPE"; exit 1 ;;
- esac
- # 根据平台选择 etcd 二进制文件
- ETCD_BIN="$BACKEND_DIR/bin/$PLATFORM/etcd"
- if [ "$PLATFORM" = "windows" ]; then
- ETCD_BIN="$BACKEND_DIR/bin/$PLATFORM/etcd.exe"
- fi
- ETCD_DATA_DIR="$BACKEND_DIR/data/etcd"
- ETCD_LOG="$BACKEND_DIR/logs/etcd.log"
- ETCD_PID="$BACKEND_DIR/logs/etcd.pid"
- # 检查 etcd 是否已安装
- if [ ! -f "$ETCD_BIN" ]; then
- echo "错误: 找不到 $PLATFORM 平台的 etcd 二进制文件"
- echo "路径: $ETCD_BIN"
- echo ""
- echo "请下载对应平台的 etcd 并放置到正确位置:"
- echo " macOS: backend/bin/darwin/etcd"
- echo " Linux: backend/bin/linux/etcd"
- echo " Windows: backend/bin/windows/etcd.exe"
- echo ""
- echo "下载地址: https://github.com/etcd-io/etcd/releases/tag/v3.6.10"
- exit 1
- fi
- # 检查etcd是否已运行
- if [ -f "$ETCD_PID" ]; then
- PID=$(cat "$ETCD_PID")
- if ps -p "$PID" > /dev/null 2>&1; then
- echo "✓ etcd 已在运行 (PID: $PID)"
- exit 0
- fi
- fi
- # 创建数据目录
- mkdir -p "$ETCD_DATA_DIR"
- mkdir -p "$(dirname "$ETCD_LOG")"
- echo "启动 etcd..."
- # 启动etcd
- nohup "$ETCD_BIN" \
- --name cloudpods-etcd \
- --data-dir "$ETCD_DATA_DIR" \
- --listen-client-urls http://localhost:2379 \
- --advertise-client-urls http://localhost:2379 \
- --listen-peer-urls http://localhost:2380 \
- --initial-advertise-peer-urls http://localhost:2380 \
- --initial-cluster cloudpods-etcd=http://localhost:2380 \
- > "$ETCD_LOG" 2>&1 &
- PID=$!
- echo $PID > "$ETCD_PID"
- # 等待etcd启动
- sleep 2
- if ps -p "$PID" > /dev/null 2>&1; then
- echo "✓ etcd 启动成功 (PID: $PID)"
- echo " - Client URL: http://localhost:2379"
- echo " - Data Dir: $ETCD_DATA_DIR"
- else
- echo "✗ etcd 启动失败"
- tail -10 "$ETCD_LOG"
- exit 1
- fi
|