CentOS 7.9 保姆级教程:从零到一搞定ClickHouse离线RPM包安装与配置
CentOS 7.9 离线部署ClickHouse全流程实战指南
在企业级生产环境中,离线部署数据库系统是许多运维团队面临的常见挑战。本文将手把手带你完成CentOS 7.9系统下ClickHouse的离线安装与配置全过程,特别针对没有外网连接的安全隔离环境。
1. 离线部署前的准备工作
离线部署的核心在于完整的依赖闭环。我们需要在外网环境中预先准备好所有安装包和依赖项,形成一个自包含的部署包。以下是关键准备步骤:
基础环境确认:
- 操作系统:CentOS 7.9 Minimal安装
- 磁盘空间:至少预留10GB可用空间
- 内存:建议8GB以上(OLAP系统内存敏感)
外网环境资源下载:
# 创建下载目录 mkdir -p ~/clickhouse-offline && cd ~/clickhouse-offline # 下载ClickHouse官方RPM包(以20.5.4.40版本为例) wget https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-client-20.5.4.40-1.el7.x86_64.rpm wget https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-20.5.4.40-1.el7.x86_64.rpm wget https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-common-static-20.5.4.40-1.el7.x86_64.rpm wget https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-common-20.5.4.40-1.el7.x86_64.rpm依赖项收集:
# 使用yum-downloadonly插件获取所有依赖 yum install -y yum-plugin-downloadonly mkdir -p ~/clickhouse-offline/dependencies # 获取unixODBC等关键依赖 yum install --downloadonly --downloaddir=~/clickhouse-offline/dependencies unixODBC
提示:建议使用相同版本的CentOS系统进行依赖收集,避免兼容性问题。
2. 制作离线安装介质
将准备好的资源打包成可移植的安装介质是离线部署的关键环节。我们采用以下结构组织文件:
clickhouse-offline-bundle/ ├── packages/ # 主程序RPM包 │ ├── clickhouse-*.rpm ├── dependencies/ # 系统依赖项 │ ├── unixODBC-*.rpm ├── scripts/ # 部署脚本 │ ├── preinstall.sh │ ├── postinstall.sh └── README.md # 部署说明关键脚本示例(preinstall.sh):
#!/bin/bash # 关闭SELinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 # 设置文件描述符限制 echo "* soft nofile 65536" >> /etc/security/limits.conf echo "* hard nofile 65536" >> /etc/security/limits.conf使用以下命令创建部署包:
tar -czvf clickhouse-offline-20.5.4.40.tar.gz clickhouse-offline-bundle3. 离线环境安装实战
将部署包传输到目标服务器后,执行以下安装流程:
3.1 系统基础配置
安装依赖项:
cd /path/to/clickhouse-offline-bundle/dependencies rpm -ivh *.rpm --nodeps --force验证依赖安装:
rpm -qa | grep -E 'unixODBC|libtool'
3.2 ClickHouse主程序安装
按照特定顺序安装RPM包:
cd /path/to/clickhouse-offline-bundle/packages rpm -ivh clickhouse-common-static-20.5.4.40-1.el7.x86_64.rpm rpm -ivh clickhouse-server-common-20.5.4.40-1.el7.x86_64.rpm rpm -ivh clickhouse-server-20.5.4.40-1.el7.x86_64.rpm rpm -ivh clickhouse-client-20.5.4.40-1.el7.x86_64.rpm验证安装结果:
rpm -qa | grep clickhouse3.3 配置文件调整
修改关键配置以适配生产环境:
vim /etc/clickhouse-server/config.xml需要调整的主要参数:
| 参数项 | 推荐值 | 说明 |
|---|---|---|
<listen_host> | 0.0.0.0 | 允许远程连接 |
<max_memory_usage> | 物理内存的70% | 防止OOM |
<path> | /data/clickhouse | 数据存储路径 |
<tmp_path> | /data/clickhouse/tmp | 临时文件路径 |
4. 服务管理与故障排查
4.1 服务控制命令
# 启动服务 systemctl start clickhouse-server # 设置开机自启(可选) systemctl enable clickhouse-server # 检查服务状态 systemctl status clickhouse-server -l4.2 常见问题解决方案
依赖缺失错误:
error: Failed dependencies: libodbc.so.2()(64bit) is needed by clickhouse-server-20.5.4.40-1.el7.x86_64解决方案:确保所有依赖包已正确安装,必要时使用
--nodeps参数强制安装端口冲突问题:
netstat -tulnp | grep 9000内存不足警告: 在
users.xml中调整内存限制:<max_memory_usage>8589934592</max_memory_usage> <!-- 8GB -->
5. 生产环境优化建议
目录结构规划:
mkdir -p /data/clickhouse/{data,metadata,logs,tmp} chown -R clickhouse:clickhouse /data/clickhouse关键性能参数:
<!-- config.xml --> <background_pool_size>16</background_pool_size> <max_concurrent_queries>100</max_concurrent_queries>监控配置:
# 启用Prometheus监控 <prometheus> <endpoint>/metrics</endpoint> <port>9363</port> </prometheus>
在实际部署中遇到过最棘手的问题是权限配置不当导致的数据目录访问失败,解决方案是在config.xml中明确指定<path>和<tmp_path>后,执行chown -R clickhouse:clickhouse /data/clickhouse确保服务账户有完整权限。
