2025-08-21 11:34:16 +08:00

185 lines
6.3 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

#!/bin/bash
echo "=== 采集端一键启动脚本 ==="
# 检查htpasswd是否安装
if ! command -v htpasswd &> /dev/null; then
echo "❌ htpasswd 未安装,正在安装..."
if command -v apt &> /dev/null; then
sudo apt update && sudo apt install -y apache2-utils
elif command -v yum &> /dev/null; then
sudo yum install -y httpd-tools
else
echo "❌ 无法自动安装htpasswd请手动安装后重试"
exit 1
fi
fi
# 创建认证配置
echo "🔐 创建Pulsar基本认证配置..."
mkdir -p ./pulsar/auth
htpasswd -cmb ./pulsar/auth/.htpasswd admin 0fd7afb8b0d04e6abc4fdfdac2190a79
echo "✅ 认证配置完成 - 用户名: admin, 密码: 0fd7afb8b0d04e6abc4fdfdac2190a79"
# 创建数据目录
echo "📁 创建数据目录..."
sudo mkdir -p /mnt/dockerdata/appservice/{pulsar,redis,mysql,iotdb,adminapi}
sudo mkdir -p /mnt/dockerdata/appservice/pulsar/{zookeeper-data,bookkeeper-data,pulsar-data}
sudo mkdir -p /mnt/dockerdata/appservice/{redis/{outdata,conf},mysql/{conf,log,data},iotdb/{conf,data,logs},adminapi/{conf,logs}}
sudo chown -R 10000:0 /mnt/dockerdata/appservice/pulsar/
# 创建本地目录的软链接(如果不存在)
echo "🔗 创建本地目录链接..."
mkdir -p ./pulsar/{zookeeper-data,bookkeeper-data,pulsar-data,auth}
mkdir -p ./redis/{outdata,conf}
mkdir -p ./mysql/{conf,log,data}
mkdir -p ./iotdb/{conf,data,logs}
mkdir -p ./adminapi/{conf,logs}
# 修复MySQL目录权限
echo "🔧 修复MySQL目录权限..."
sudo chown -R 1000:1000 ./mysql/data
sudo chown -R 1000:1000 ./mysql/log
sudo chmod -R 755 ./mysql/data
sudo chmod -R 755 ./mysql/log
sudo chmod -R 755 ./adminapi/logs
# 第一步启动IoTDB独立服务获取配置
echo "🚀 第一步启动IoTDB独立服务获取配置..."
docker-compose -f docker-compose-iotdb-standalone.yml up -d
# 等待IoTDB启动完成
echo "⏳ 等待IoTDB服务启动完成..."
sleep 10
# 第二步:拷贝配置目录
echo "📁 第二步拷贝IoTDB配置目录..."
docker cp iotdb-standalone:/iotdb/conf ./iotdb
echo "✅ IoTDB配置目录拷贝完成"
# 第三步:修改时间戳精度配置
echo "⚙️ 第三步修改IoTDB时间戳精度配置..."
if [ -f "./iotdb/conf/iotdb-system.properties" ]; then
# 检查是否已经包含配置
if ! grep -q "timestamp_precision=ns" ./iotdb/conf/iotdb-system.properties; then
# 添加换行和说明
echo "" >> ./iotdb/conf/iotdb-system.properties
echo "# ms 毫秒 us 微秒 ns 纳秒" >> ./iotdb/conf/iotdb-system.properties
echo "timestamp_precision=ns" >> ./iotdb/conf/iotdb-system.properties
echo "✅ 时间戳精度配置已添加timestamp_precision=ns"
else
echo " 时间戳精度配置已存在"
fi
else
echo "❌ 配置文件不存在,请检查配置目录"
fi
# 第四步停止IoTDB独立服务
echo "🛑 第四步停止IoTDB独立服务..."
docker-compose -f docker-compose-iotdb-standalone.yml down
# 第五步清理IoTDB数据目录保留配置目录
echo "🧹 第五步清理IoTDB数据目录保留配置目录..."
sudo rm -rf ./iotdb/data/*
sudo rm -rf ./iotdb/logs/*
echo "✅ IoTDB数据目录已清理配置目录已保留"
# MySQL配置检查
#echo "⚙️ 检查MySQL配置..."
#if [ ! -d "./mysql/init" ]; then
# echo "❌ MySQL初始化脚本目录不存在请检查"
# exit 1
#fi
#
#if [ ! -f "./mysql/init/init-db.sql" ]; then
# echo "❌ MySQL初始化脚本不存在请检查"
# exit 1
#fi
#
#echo "✅ MySQL配置检查通过"
sleep 15
# 启动主服务
echo "🚀 启动 部署主脚本 ..."
# 检查是否是Pulsar重启
if [ -d "./pulsar/zookeeper-data" ] && [ "$(ls -A ./pulsar/zookeeper-data)" ]; then
echo "⚠️ 检测到Pulsar数据目录已存在可能是重启操作"
echo "🧹 清理Pulsar状态数据以确保正常启动..."
# 停止可能运行的服务
docker-compose -f docker-compose.yml down
# 清理Pulsar状态数据保留数据目录
echo "清理Zookeeper状态..."
sudo rm -rf ./pulsar/zookeeper-data/*
echo "清理BookKeeper状态..."
sudo rm -rf ./pulsar/bookkeeper-data/*
echo "清理Pulsar broker状态..."
sudo rm -rf ./pulsar/pulsar-data/*
echo "✅ Pulsar状态数据已清理"
sleep 5
fi
docker-compose -f docker-compose.yml up -d
# 等待IoTDB启动完成
echo "⏳ 等待IoTDB服务启动完成..."
sleep 10
# 设置IoTDB密码
echo "🔐 设置IoTDB root用户密码..."
docker exec -i iotdb-standalone /bin/bash << 'EOF'
# 等待IoTDB完全启动
echo "等待IoTDB服务就绪..."
sleep 10
echo "IoTDB服务已就绪开始设置密码和创建数据库..."
# 使用非交互式方式创建表模型数据库
echo "CREATE DATABASE jisheiotdata;" | ./start-cli.sh -h iotdb-standalone -sql_dialect table
# 使用非交互式方式设置密码
echo "ALTER USER root SET PASSWORD 'Lixiao@1980';" | ./start-cli.sh -h iotdb-standalone
# 等待一下再执行确认密码
sleep 2
echo "Lixiao@1980" | ./start-cli.sh -h iotdb-standalone
echo "IoTDB密码设置完成"
EOF
echo "✅ IoTDB密码设置完成 - 用户名: root, 密码: Lixiao@1980"
echo ""
echo "🎉 Pulsar 基本认证集群启动完成!"
echo ""
echo "📋 连接信息:"
echo " Pulsar Broker: 47.110.53.196:9093"
echo " Pulsar Admin: http://47.110.53.196:9094"
echo " IoTDB: 47.110.53.196:30710 (root/Lixiao@1980)"
echo " Redis: 47.110.53.196:6379"
echo " MySQL: 47.110.53.196:13306"
echo " Admin API: http://47.110.53.196:28080"
echo " Admin UI: http://47.110.53.196:30711"
echo " 用户名: admin"
echo " 密码: 0fd7afb8b0d04e6abc4fdfdac2190a79"
echo ""
echo "🔧 常用命令:"
echo " 查看状态: docker-compose -f docker-compose.yml ps"
echo " 查看日志: docker-compose -f docker-compose.yml logs -f"
echo " 停止服务: docker-compose -f docker-compose.yml down"
echo ""
echo "🧪 测试连接:"
echo " Pulsar: curl -u admin:0fd7afb8b0d04e6abc4fdfdac2190a79 http://47.110.53.196:9094/admin/v2/clusters"
echo " Redis: redis-cli -h 47.110.53.196 -p 6379 ping"
echo " MySQL: mysql -h 47.110.53.196 -P 13306 -u root -pJiShe!aqG#5kGgh&0 -e 'SELECT 1'"
echo " IoTDB: docker exec -it iotdb-standalone ./start-cli.sh -h iotdb-standalone -u root -p Lixiao@1980"
echo ""
echo "🎯 等待服务启动完成..."
echo "⏳ 请等待几分钟让所有服务完全启动"