#!/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 "⏳ 请等待几分钟让所有服务完全启动"