Files
dsh_shenxian/scripts/switch-B2-dropin.sh
T
admin 5ec99ce227
build / build-and-scan (push) Canceled after 0s
chore: 文档库全量重新入库(2026-10-20)
2026-10-20 15:05:55 +08:00

40 lines
2.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# 切换 B 步(在 47 上跑):加 systemd drop-in → 重启 dshs(= 切换时刻,约 1-2 秒中断)
# · 用 drop-in 而非改 unit:unit 本体 hash 不变 ⇒ 回滚只需删 drop-in
# · 同时把 106 的 worker lib 也更新到同一版本(两侧代码必须一致)
set -uo pipefail
. "$(cd "$(dirname "$0")/.." && pwd)/config/load.sh"
mkdir -p /etc/systemd/system/dshs.service.d
cat > /etc/systemd/system/dshs.service.d/cluster.conf <<CONF
# T08 集群化(2026-09-15):Manager 在 47、实例落在 <host-a>(既有用户)/ <host-b>(新用户)
# 回滚:删除本文件 → systemctl daemon-reload → systemctl restart dshs
[Service]
Environment="DSHS_DEPLOY_MODE=cluster"
Environment="DSHS_DB_URL=$DSHS_DB_URL"
Environment="DSHS_CLUSTER_HOST_ID=$DSHS_CLUSTER_HOST_ID"
Environment="DSHS_CLUSTER_AGENT_URL=http://127.0.0.1:19100"
Environment="DSHS_CLUSTER_AGENT_TOKEN=$DSHS_CLUSTER_AGENT_TOKEN"
Environment="DSHS_CLUSTER_INSTANCE_HOST=127.0.0.1"
Environment="DSHS_CLUSTER_WORKER_DATA_ROOT=$DSHS_DATA_ROOT"
Environment="DSHS_CLUSTER_CAPACITY_MB=-1"
Environment="DSHS_CLUSTER_REGISTER_SELF=0"
Environment="DSHS_CLUSTER_LEASE_TTL_MS=30000"
CONF
echo " ✓ drop-in 已写($(wc -l < /etc/systemd/system/dshs.service.d/cluster.conf) 行)"
systemctl daemon-reload
systemctl restart dshs
sleep 6
echo "=== 切换后自检 ==="
echo " dshs=$(systemctl is-active dshs) | dshs-pg=$(systemctl is-active dshs-pg) | dshs-worker=$(systemctl is-active dshs-worker)"
echo " 生效 env(systemd 解析后):"
systemctl show dshs -p Environment 2>/dev/null | tr ' ' '\n' | grep -E "DEPLOY_MODE|CLUSTER_HOST_ID|CLUSTER_AGENT_URL|DB_URL" | sed 's/^/ /'
echo " 门户: login.html=$(curl -s -o /dev/null -w '%{http_code}' -m 8 http://127.0.0.1:3080/login.html)"
echo " 公网: https://$DSHS_BASE_DOMAIN/login.html = $(curl -s -o /dev/null -w '%{http_code}' -m 12 https://$DSHS_BASE_DOMAIN/login.html)"
echo " --- dshs cluster status ---"
cd "$DSH_INSTALL_DIR" && set -a && . /etc/dshs.env && set +a && set -a && . /etc/systemd/system/dshs.service.d/cluster.conf 2>/dev/null || true
cd "$DSH_INSTALL_DIR" && node lib/cli.js cluster status 2>&1 | head -8 | sed 's/^/ /'
echo " --- 回滚命令(随时可用) ---"
echo " rm -f /etc/systemd/system/dshs.service.d/cluster.conf && systemctl daemon-reload && systemctl restart dshs"