GBase 8a 集群安装实操:从环境准备到状态校验,少走弯路的一套做法
1. 先说结论
很多人第一次装 GBase 8a,关注点都放在安装命令本身。
但实际做下来更容易出问题的,往往不是“怎么执行安装”,而是下面这些基础项:
节点之间网络是否互通
SSH 是否能正常连通,端口是否是默认值
ulimit和 systemd 资源限制有没有提前处理安装完成后集群状态是不是真的全都正常
分布信息有没有设置到位
从 GBase 社区里长期被反复讨论的内容来看,安装卸载、ulimit、SSH 端口、参数整理这些都属于高频话题,说明现场里最容易卡住的点,恰恰就是这些“不是数据库语法本身”的部分。
2. GBase 8a 的安装,最好从“集群”视角来理解
GBase 8a 不是那种只装一个单实例就结束的系统。
以社区里的 V953 安装说明为例,gcware、gcluster、gnode 三类组件已经可以独立部署;其中 gcware 通常建议部署 3 个或 5 个节点,而 gcluster 和 gnode 的规划则要结合实际规模来考虑。
所以在准备环境时,建议先把节点规划想清楚,而不是拿到安装包就直接开始。
下面给一个演示用的 3 节点示意:
198.51.100.21 管理节点 + 协调节点 + 数据节点
198.51.100.22 管理节点 + 协调节点 + 数据节点
198.51.100.23 管理节点 + 协调节点 + 数据节点
3. 安装前先把这些系统项处理掉
根据 GBase 社区安装示例,安装前一般会先处理这些基础条件:
节点使用固定 IP
节点间网络互通
SSH 服务正常
防火墙和 SELinux 按要求处理
主机名、解析和节点登录链路没有问题
实际落地时,我更建议先做一轮最基础的检查。
3.1 网络和 SSH 联通检查
# 节点连通性检查
ping 198.51.100.22
ping 198.51.100.23
# SSH 连通性检查
ssh root@198.51.100.22
ssh root@198.51.100.233.2 防火墙与 SELinux 检查
systemctl status firewalld
sestatus如果这些基础项没有处理好,后面安装脚本报错,很多时候只是结果,不是根因。
4. SSH 不是可有可无,很多时候它就是安装链路的一部分
这个点在 GBase 8a 环境里非常容易被低估。
社区安装资料里明确要求在安装前测试节点之间的 SSH 连通;另外在“修改 sshd 默认端口时如何安装 GBase 8a MPP 集群”的说明中,也提到如果 SSH 端口不是默认的 22,就需要额外处理,因为安装配置里可以通过 sshPort 指定端口,而且 gcware 还会通过 SSH 去探测机器状态。
也就是说,在 GBase 8a 集群里,SSH 更像是一条基础管理通道,而不是单纯为了登录方便。
4.1 如果 SSH 端口不是 22,可以这样处理
方式一:在用户级 SSH 配置里指定端口
cat ~/.ssh/configHost 198.51.100.22 198.51.100.23
Port 22022方式二:在安装配置中指定端口
# install.options
sshPort = 22022上面这个思路来自 GBase 社区关于 SSH 非默认端口的安装说明。
4.2 这个现象在现场里很常见
如果节点改过 SSH 端口,但安装配置仍然按默认 22 去连,常见现象就是:
ssh root@198.51.100.22ssh: connect to host 198.51.100.22 port 22: Connection refused所以这类问题不要只盯着安装脚本,先把 SSH 链路打通,后面很多报错自然会少。
5. ulimit 建议提前处理,不要等到安装后再补
GBase 社区里关于 ulimit 的整理比较细,核心思路是同时处理 systemd、profile 和 limits 几个层面,比如:
在
/etc/systemd/system.conf中设置DefaultLimitNOFILE、DefaultLimitNPROC执行
systemctl daemon-reexec重新加载 SSH 服务
在
/etc/profile、/etc/security/limits.conf等位置补充限制项
这类配置平时不一定有明显感觉,但等连接数、并发数、导入任务起来以后,文件句柄数和进程数不够,就很容易表现成各种“不稳定”。
5.1 一个常见的处理方式
vim /etc/systemd/system.confDefaultLimitNOFILE=655350
DefaultLimitNPROC=655350systemctl daemon-reexec
systemctl restart sshdvim /etc/profileulimit -n 655360source /etc/profilevim /etc/security/limits.conf* hard nofile 655360这个处理思路来自社区里的 ulimit 调整示例。
如果后面遇到连接数高一点就抖、批量任务偶发失败、某些进程起不来这类现象,第一反应最好就把这些系统限制一起排查掉。
6. 一个更容易落地的安装流程示例
社区里的 V953 安装示例给了一套比较完整的流程,包括:
创建数据库用户
准备安装目录
解压安装包
执行环境初始化脚本
修改安装配置文件
执行静默安装
查看集群状态
设置分布信息
这里把它整理成一套更适合直接照着理解的版本。下面的目录、用户名、IP 都是演示值。
6.1 创建用户和目录
useradd gbaseadm
passwd gbaseadm
mkdir -p /data/gbase8a
chown -R gbaseadm:gbaseadm /data/gbase8a
chown gbaseadm:gbaseadm /tmp6.2 解压安装包
cd /data
tar xfj GBase8a_MPP_Cluster-NoLicense-FREE-9.5.3-demo-redhat7-x86_64.tar.bz26.3 执行环境初始化脚本
python SetSysEnv.py --dbaUser=gbaseadm --installPrefix=/data/gbase8a --cgroup社区示例里还提到,如果执行时遇到 IPV6 protocol not supported 之类的问题,可能需要先调整系统的相关配置后再继续。
6.4 编写安装配置文件
# install.options
installPrefix = /data/gbase8a
coordinateHost = 198.51.100.21,198.51.100.22,198.51.100.23
coordinateHostNodeID = 21,22,23
dataHost = 198.51.100.21,198.51.100.22,198.51.100.23
gcwareHost = 198.51.100.21,198.51.100.22,198.51.100.23
gcwareHostNodeID = 21,22,23
dbaUser = gbaseadm
dbaGroup = gbaseadm
dbaPwd = 'Gbase@Demo123'
rootPwd = 'Root@Demo123'
sshPort = 22022这里最关键的不是死记每一行,而是先把几类信息分清楚:
安装目录
协调节点
数据节点
管理节点
用户与口令
SSH 端口
6.5 执行安装
./gcinstall.py --silent=install.options如果系统依赖没装齐,安装阶段一般会先报依赖问题。社区说明里也提到可以查看依赖包清单来补齐环境。
7. 安装完成后,别只看“成功”,先看状态是不是全起来了
这个动作很重要。
安装脚本执行完,不代表集群所有角色就都正常。
更稳妥的做法是马上看集群状态。
社区安装示例里,gcadmin 的输出会展示:
GCWARECOORDINATORDATA NODEsyncserver
正常情况下应当看到集群处于 ACTIVE,各角色状态为 OPEN。
7.1 常用状态检查命令
gcadmin演示输出可以理解成下面这种形式:
CLUSTER STATE: ACTIVE
| GBASE GCWARE CLUSTER INFORMATION |
| gcware1 | 198.51.100.21 | OPEN |
| gcware2 | 198.51.100.22 | OPEN |
| gcware3 | 198.51.100.23 | OPEN |
| GBASE COORDINATOR CLUSTER INFORMATION |
| coordinator1 | 198.51.100.21 | OPEN | 0 |
| coordinator2 | 198.51.100.22 | OPEN | 0 |
| coordinator3 | 198.51.100.23 | OPEN | 0 |
| GBASE DATA CLUSTER INFORMATION |
| node1 | 198.51.100.21 | OPEN | OPEN | 0 |
| node2 | 198.51.100.22 | OPEN | OPEN | 0 |
| node3 | 198.51.100.23 | OPEN | OPEN | 0 |这里很适合放一张终端截图。
如果对外发布,建议把主机名、账号、真实 IP 做脱敏。
8. 分布信息不要漏掉,它会影响后面的数据落点
安装完成以后,还有一个经常被忽略的动作:设置分布信息。
根据社区安装示例,需要先准备 XML 文件,再通过 gcadmin distribution 去设置分布模式;设置完成后,可以通过 gcadmin showdistribution node 查看分布结果。
8.1 一个演示用 XML 文件
8.2 设置分布信息
gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 18.3 查看分布结果
gcadmin showdistribution node这个步骤虽然短,但很关键。
因为装完集群只是第一步,后续数据到底怎么分布、节点怎么参与工作,和这里的配置是连在一起的。
9. 参数不要一上来就全调,先抓最常见的几类
GBase 社区里有一篇参数整理,把连接、线程池、并行读、超时、JDBC、加载等方向的参数都做了汇总。里面提到的参数包括 max_connections、gcluster_max_thread_in_pool、gbase_parallel_degree、connect_timeout、connectTimeout、socketTimeout、gcluster_loader_max_data_processors 等。
我比较建议按问题类型来找参数,而不是一上来就一起改。
9.1 如果偏连接和超时问题,先看这些
max_connections
connect_timeout
connectTimeout
socketTimeout9.2 如果偏并发和线程池问题,先看这些
gcluster_max_thread_in_pool
gcluster_max_conn_in_pool
gbase_parallel_degree9.3 如果偏导入和加载问题,先看这些
gcluster_loader_max_data_processors
gbase_loader_parallel_degree
gbase_loader_read_timeout参数能解决问题,但前提是先判断清楚问题在哪一层。
否则最后很容易变成参数改了不少,现象还是没变。
10. 实际环境里最容易漏掉的几个点
把社区高频问题和实际现场经验放一起看,下面这些地方最值得提前盯住:
10.1 只关注安装成功,不关注状态是否真的正常
安装脚本跑完只能说明流程结束,不代表 gcware / gcluster / gnode 都已经处于健康状态。
最稳妥的做法还是立刻跑一次 gcadmin。
10.2 SSH 能登录,但端口和免密没统一
很多环境里 SSH 不是默认 22,或者虽然能手工登录,但安装用户之间免密没打通。
这种情况特别容易让安装过程卡在节点探测、分发或远程执行阶段。
10.3 ulimit 没提前配,后面再回头补
这类问题最麻烦,因为它往往不会在安装第一时间就报得很直接,而是在并发、导入、连接压力起来以后才慢慢暴露。
10.4 分布信息没设或者没核对
装完集群以后如果把这一步忽略掉,后面很容易对数据分布和节点角色产生误判。
11. 一套更稳妥的处理顺序
如果想把安装这件事做得更顺一点,可以按下面这个顺序来:
先确认节点拓扑和角色规划
再检查网络、SSH、主机名解析
处理防火墙、SELinux、
ulimit、systemd 限制准备用户、目录、安装包
执行环境初始化脚本
编写安装配置并执行安装
用
gcadmin核对集群状态设置分布信息并再次核查
最后再进入参数、连接和业务侧验证阶段
这样会比“先装起来再说”少掉不少来回折腾。
12. 结尾
GBase 8a 的安装看起来只是几个步骤,但真正决定后面顺不顺的,很多时候都在安装之前和安装之后的那几件事上:
节点是不是互通
SSH 能不能按预期工作
系统资源上限够不够
集群角色是不是全都处于正常状态
分布信息有没有正确落下去
这些事情做扎实了,后面很多问题其实能少掉一大半。
反过来,如果这些基础项一开始没处理干净,后面遇到的很多“数据库问题”,最后又会绕回系统、网络和集群配置本身。
参考资料
评论
热门帖子
- 12025-12-01浏览数:182609
- 22023-05-09浏览数:24813
- 42023-09-25浏览数:18325
- 52020-05-11浏览数:17320