198 lines
6.8 KiB
Bash
198 lines
6.8 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# 检查环境变量配置文件
|
|||
|
|
if [ ! -f "./.env" ]; then
|
|||
|
|
echo "❌ 配置文件 .env 不存在,请先创建配置文件"
|
|||
|
|
echo "💡 可以复制 .env.example 为 .env 并修改配置"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "📁 使用 .env 配置文件,Docker Compose 将自动加载环境变量"
|
|||
|
|
|
|||
|
|
echo "=== Docker 镜像仓库登录 ==="
|
|||
|
|
|
|||
|
|
docker login --username=yunjichaobiao --password hub.jishe.com registry.cn-qingdao.aliyuncs.com
|
|||
|
|
|
|||
|
|
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 \${PULSAR_ADMIN_USER} \${PULSAR_ADMIN_PASSWORD}
|
|||
|
|
|
|||
|
|
echo "✅ 认证配置完成 - 用户名: \${PULSAR_ADMIN_USER}, 密码: \${PULSAR_ADMIN_PASSWORD}"
|
|||
|
|
|
|||
|
|
# 创建数据目录
|
|||
|
|
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 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 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 '\${IOTDB_ROOT_PASSWORD}';" | ./start-cli.sh -h iotdb-standalone
|
|||
|
|
|
|||
|
|
# 等待一下再执行确认密码
|
|||
|
|
sleep 2
|
|||
|
|
echo "\${IOTDB_ROOT_PASSWORD}" | ./start-cli.sh -h iotdb-standalone
|
|||
|
|
|
|||
|
|
echo "IoTDB密码设置完成"
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
echo "✅ IoTDB密码设置完成 - 用户名: root, 密码: \${IOTDB_ROOT_PASSWORD}"
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "🎉 Pulsar 基本认证集群启动完成!"
|
|||
|
|
echo ""
|
|||
|
|
echo "📋 连接信息:"
|
|||
|
|
echo " Pulsar Broker: \${SERVER_IP}:\${PULSAR_BROKER_PORT}"
|
|||
|
|
echo " Pulsar Admin: http://\${SERVER_IP}:\${PULSAR_ADMIN_PORT}"
|
|||
|
|
echo " IoTDB: \${SERVER_IP}:\${IOTDB_PORT} (root/\${IOTDB_ROOT_PASSWORD})"
|
|||
|
|
echo " Redis: \${SERVER_IP}:6379"
|
|||
|
|
echo " MySQL: \${SERVER_IP}:\${MYSQL_PORT}"
|
|||
|
|
echo " Admin API: http://\${SERVER_IP}:\${ADMIN_API_PORT}"
|
|||
|
|
echo " Admin UI: http://\${SERVER_IP}:\${ADMIN_WEB_PORT}"
|
|||
|
|
echo " 用户名: \${PULSAR_ADMIN_USER}"
|
|||
|
|
echo " 密码: \${PULSAR_ADMIN_PASSWORD}"
|
|||
|
|
echo ""
|
|||
|
|
echo "🔧 常用命令:"
|
|||
|
|
echo " 查看状态: docker compose ps"
|
|||
|
|
echo " 查看日志: docker compose logs -f"
|
|||
|
|
echo " 停止服务: docker compose down"
|
|||
|
|
echo ""
|
|||
|
|
echo "🧪 测试连接:"
|
|||
|
|
echo " Pulsar: curl -u \${PULSAR_ADMIN_USER}:\${PULSAR_ADMIN_PASSWORD} http://\${SERVER_IP}:\${PULSAR_ADMIN_PORT}/admin/v2/clusters"
|
|||
|
|
echo " Redis: redis-cli -h \${SERVER_IP} -p 6379 ping"
|
|||
|
|
echo " MySQL: mysql -h \${SERVER_IP} -P \${MYSQL_PORT} -u root -p\${MYSQL_ROOT_PASSWORD} -e 'SELECT 1'"
|
|||
|
|
echo " IoTDB: docker exec -it iotdb-standalone ./start-cli.sh -h iotdb-standalone -u root -p Lixiao@1980"
|
|||
|
|
echo ""
|
|||
|
|
echo "🎯 等待服务启动完成..."
|
|||
|
|
echo "⏳ 请等待几分钟让所有服务完全启动"
|