GCDW 云数据仓库部署问题及解决方案汇总(物理机版本)
部署环境:3 台 CentOS 7 虚拟机(IP:192.168.100.100/101/102),VMware Workstation,NAT 网络。
目标组件:FoundationDB 集群、MinIO 对象存储、GCDW 集群(含 GCware、Coordinator、Data 节点)。
一、虚拟机网络与基础环境
1. 虚拟机无法上网(ping 不通外网)
现象:ping 8.8.8.8 显示 Destination Host Unreachable,DNS 解析失败。
原因:VMware NAT Service 未启动;网关配置错误;DNS 未设置。
解决:
在宿主机 services.msc 中启动 VMware NAT Service。
修改网卡配置 /etc/sysconfig/network-scripts/ifcfg-ens33,确保 GATEWAY 与 VMware 虚拟网络编辑器中的 NAT 网关一致(本例为 192.168.100.1)。
设置 DNS:echo "nameserver 8.8.8.8" > /etc/resolv.conf。
2. Xshell 无法 SSH 连接虚拟机
现象:Could not connect to '192.168.100.100' port 22: Connection failed.
原因:CentOS 防火墙未关闭;SSH 服务未启动;PermitRootLogin 未启用。
解决:
bash
systemctl stop firewalld
systemctl start sshd
sed -i 's/^#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
systemctl restart sshd
3. SSH 免密登录配置
需求:从 node1 免密 SSH 到 node2/node3。
操作:
bash
ssh-keygen -t rsa -N ""
ssh-copy-id root@192.168.100.101
ssh-copy-id root@192.168.100.102
注意:若 ssh-copy-id 报错,可手动将 ~/.ssh/id_rsa.pub 追加到目标主机的 ~/.ssh/authorized_keys。
4. 批量执行命令(all 函数)
需求:避免每台机器重复输入。
配置:
bash
echo 'all() { for ip in 192.168.100.100 192.168.100.101 192.168.100.102; do echo "===== $ip ====="; ssh root@$ip "$1"; done }' >> ~/.bashrc
source ~/.bashrc
用法:all "yum install -y vim"
二、依赖包与软件源问题
1. yum 无法解析 mirrorlist.centos.org
原因:CentOS 7 已 EOL,官方镜像源不可用;DNS 失效。
解决:
更换阿里云源:
bash
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache
若 curl 不可用,手动创建 repo 文件(内容略)。
2. 安装 lrzsz 等工具
现象:rz 命令未找到。
解决:yum install -y lrzsz
3. rsync 未安装导致大文件传输失败
解决:所有节点安装 rsync:all "yum install -y rsync"
并行传输命令:
bash
rsync -avzP --partial /path/to/bigfile root@node2:/dest/ &
rsync -avzP --partial /path/to/bigfile root@node3:/dest/ &
三、FoundationDB(FDB)集群部署
1. FDB 自动化工具安装失败(dnf 相关)
现象:fatal: ... dnf install -y python2-dnf ... [Errno 2] 没有那个文件或目录
原因:CentOS 7 无 dnf,脚本误用 dnf 模块。
解决:修改 playbook 中所有 dnf 为 yum:
bash
find . -type f -name "*.yml" -exec sed -i 's/\bdnf\b/yum/g' {} \;
2. FDB 集群部署失败(回滚)
现象:显示 failed to install foundationDB to all hosts! Rollback has been completed!,无具体错误。
解决:通过环境变量开启 Ansible 详细日志:
bash
export ANSIBLE_VERBOSITY=4
./auto.sh -h "..." -e "..."
发现是 RPM 包文件名不匹配,本次foundati,修正 -e 中的包名后成功,。
文档中FDB版本:foundationdb-clients-6.3.25-20250327171341.el7.x86_64.rpm
实操中FDB版本:foundationdb-clients-6.3.25-20260408143753.el7.x86_64.rpm
四、MinIO 对象存储部署
1. MinIO 前台启动正常,systemd 启动超时
原因:服务文件包含 CentOS 7 不支持的选项(如 ProtectProc)。
解决:注释掉不兼容选项,并使用简化版 service 文件:
ini
[Service]
ExecStart=/usr/local/bin/minio server /data --console-address :9001
TimeoutStartSec=0
最终可用配置文件见对话末尾。
2. MinIO WebUI 无法登录(Access Denied)
原因:访问了 API 端口(9000)而非 WebUI 端口(9001)。
解决:浏览器访问 http://<IP>:9001,用 minioadmin/minioadmin 登录。
3. 新用户登录后只显示 “Create Access Key”
说明:新用户默认无管理权限,需用 minioadmin 为其附加策略(如 consoleAdmin)。
五、GCDW 集群安装(核心难点)
1. demo.options 参数解析错误
问题1:dbaPwd 报 unknown parameter,同时要求 dbaUserPwdFile 或 dbaPwd 二者选一。
解决:使用 dbaUserPwdFile 方式,创建密码文件并指定路径:
bash
echo 'gbase2026' > /home/gbase/.dbapwd
chmod 600 /home/gbase/.dbapwd
# demo.options 中添加
dbaUserPwdFile = /home/gbase/.dbapwd
注意:参数值不能用单引号包裹,直接写值。
问题2:GCDW_JAVA_HOME 无法识别,报 Can not find valid env(JAVA_HOME)。
原因:路径错误;脚本要求路径下存在 bin/java;且参数值不能有引号。
解决:
安装完整 JDK:yum install -y java-1.8.0-openjdk-devel
获取正确路径:readlink -f /usr/bin/java | sed 's:/bin/java::'(得到 /usr/lib/jvm/.../jre)
在 demo.options 中添加(无引号、无空格):
text
GCDW_JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64/jre
问题3:/opt 目录权限不足(gbase 用户无法写入)。
解决:all "setfacl -m u:gbase:rwx /opt" 或 chmod 777 /opt(测试环境)。
2. 安装后 gcluster 目录缺失
现象:安装成功提示,但 /opt/gcdw/gcluster 不存在,实际目录为 /opt/192.168.100.100/。
原因:脚本启用了多实例模式,每个节点独立目录以 IP 命名。
解决:所有启动、日志路径需使用 /opt/<IP>/gcluster/...,而非 /opt/gcdw/gcluster。
3. gcluster 服务启动超时
现象:Starting gbase ... [FAIL],/bin/gcmonit.sh 找不到。
原因:gcluster_services 脚本硬编码 $GCLUSTER_HOME/bin/gcmonit.sh,但实际文件在 $GCLUSTER_HOME/server/bin/。
解决:创建软链接:
bash
mkdir -p /opt/<IP>/gcluster/bin
ln -s /opt/<IP>/gcluster/server/bin/gcmonit.sh /opt/<IP>/gcluster/bin/gcmonit.sh
对所有节点执行:
bash
for ip in 192.168.100.100 192.168.100.101 192.168.100.102; do
ssh gbase@$ip "mkdir -p /opt/$ip/gcluster/bin && ln -sf /opt/$ip/gcluster/server/bin/gcmonit.sh /opt/$ip/gcluster/bin/gcmonit.sh"
done
4. 部分节点状态 CLOSE
现象:gcadmin showcluster 显示 node2/node3 的 coordinator 和 gnode 为 CLOSE。
原因:服务未在那些节点启动。
解决:在所有节点执行 gcluster_services all start:
bash
for ip in 192.168.100.100 192.168.100.101 192.168.100.102; do
ssh gbase@$ip "/opt/$ip/gcluster/server/bin/gcluster_services all start"
done
5. libjvm.so 加载失败
现象:error while loading shared libraries: libjvm.so: cannot open shared object file。
原因:LD_LIBRARY_PATH 未包含 JVM 库路径,或 JDK 未正确安装。
解决:确保安装了 java-1.8.0-openjdk-devel,并在 ~/.gbase_profile 中设置:
bash
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64/jre
export LD_LIBRARY_PATH=$JAVA_HOME/lib/amd64/server:$LD_LIBRARY_PATH
六、其他通用问题
1. 大文件传输中断
方案:使用 rsync --partial 支持断点续传,并行传输。
2. 命令未找到(如 netstat)
解决:yum install -y net-tools
3. SELinux 或防火墙干扰
临时关闭:setenforce 0,systemctl stop firewalld
七、最终验证命令
bash
# 查看集群状态
gcadmin showcluster
# 登录数据库测试
gccli -uroot -p111111 -e "show databases;"
# 检查服务进程
ps aux | grep -E "gclusterd|gbased|gcware"
八、部署经验总结
注意参数格式:demo.options 中等号两边不要有空格,值不要加引号。
多实例模式:路径以 IP 命名,启动脚本需对应调整。
软链接:解决脚本预期路径与实际路径不符问题。
日志为王:善用 gcinstall.log、gclusterd.log、journalctl 定位问题。
环境变量:确保 .gbase_profile 正确加载 GCLUSTER_HOME、JAVA_HOME。
评论
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25049
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526