当前位置: 首页 > news >正文

linux环境docker-compose部署Clickhouse 集群

服务器配置

💻 服务器配置参考(每台)

硬件资源最小可运行开发/测试 (可用)推荐配置 (生产环境)
CPU2 核,支持 SSE 4.24 核16 核或以上
内存4 GB8 GB64 GB 或以上
磁盘20 GB SSD50 GB+ SSDNVMe SSD或高性能云盘
网络1 Gbit/s1 Gbit/s10 Gbit/s

说明

  • 4GB 内存可以完成 ClickHouse 的安装、启动和基础功能验证,但仅限功能验证,无法承载任何数据加载或查询负载。
  • 8GB 内存可满足开发测试和小规模数据加载,但需对默认配置进行调优(降低缓存、减少并行度等)。
  • 生产环境磁盘容量需根据数据量和保留策略规划,建议内存与存储空间比例1:100 ~ 1:130
  • 如果每台服务器运行2 个 ClickHouse 实例,内存需按实例数累加。

🦒 ZooKeeper / ClickHouse Keeper 配置参考

硬件资源最小可运行开发/测试推荐配置 (生产环境)
CPU1 核2 核4 核或以上
内存1 GB4 GB8 GB 或以上
磁盘10 GB HDD20 GB SSDNVMe SSD
实例数1 个1 个3 个

注意:如果资源充足,强烈建议将 ZooKeeper / ClickHouse Keeper 部署在独立的服务器上,与 ClickHouse 数据节点分离,避免资源竞争。

💎 总结

  • 最小可运行:4GB 内存即可安装启动,适合做功能验证和"能不能跑起来"的测试。
  • 开发/测试:8GB 内存可以执行简单查询和小规模数据加载。
  • 生产环境:建议 64GB 以上内存,具体规格需根据数据量、查询复杂度和并发量综合评估。

准备工作

每台服务器运行 2 个 ClickHouse 实例 + 1 个 ZooKeeper 节点,使用host网络模式
在每台服务器上配置host:

cat>>/etc/hosts<<EOF 192.168.50.6 server01 192.168.50.157 server02 192.168.50.110 server03 EOF

1. 整体设计

  • 服务器规划(与原文一致)

    IP主机名服务
    192.168.50.6server01ZooKeeper (myid=1), ch-main, ch-sub (副本)
    192.168.50.157server02ZooKeeper (myid=2), ch-main, ch-sub (副本)
    192.168.50.110server03ZooKeeper (myid=3), ch-main, ch-sub (副本)
  • 网络模式:全部使用host,避免端口映射和跨容器通信问题。


2. 前置准备(每台服务器)

2.1 创建目录结构

mkdir-p/usr/soft/zookeeper/{data,datalog,logs,conf}mkdir-p/usr/soft/clickhouse-server/{main,sub}/{data,conf,log}# 任何用户都能写入chmod-R777/usr/soft/clickhouse-server/main/{data,log}chmod-R777/usr/soft/clickhouse-server/sub/{data,log}

2.2 准备 ZooKeeper 配置文件

每台服务器/usr/soft/zookeeper/conf/zoo.cfg中写入相同内容(注意 IP 改为您实际环境):

dataDir=/data dataLogDir=/datalog tickTime=2000 initLimit=5 syncLimit=2 clientPort=2181 autopurge.snapRetainCount=3 autopurge.purgeInterval=0 maxClientCnxns=60 server.1=192.168.50.6:2888:3888 server.2=192.168.50.157:2888:3888 server.3=192.168.50.110:2888:3888

2.3 准备 ClickHouse 配置文件

(1) 获取基础配置(任选一台执行)
dockerrun--rm-d--name=temp-ch docker.1ms.run/clickhouse/clickhouse-server:26.4dockercptemp-ch:/etc/clickhouse-server/ /etc/dockerrm-ftemp-ch

然后将/etc/clickhouse-server复制到/usr/soft/clickhouse-server/main/conf/usr/soft/clickhouse-server/sub/conf

# 复制配置到 maincp-r/etc/clickhouse-server/* /usr/soft/clickhouse-server/main/conf/# 复制配置到 subcp-r/etc/clickhouse-server/* /usr/soft/clickhouse-server/sub/conf/# 将配置分发到 server02 和 server03或者手动复制scp-r/usr/soft/clickhouse-server/main/ server02:/usr/soft/clickhouse-server/main/scp-r/usr/soft/clickhouse-server/main/ server03:/usr/soft/clickhouse-server/main/scp-r/usr/soft/clickhouse-server/sub/ server02:/usr/soft/clickhouse-server/sub/scp-r/usr/soft/clickhouse-server/sub/ server03:/usr/soft/clickhouse-server/sub/
(2) 修改config.xml

/usr/soft/clickhouse-server/main/conf/config.xml 中添加或修改以下内容(其他保持默认):

<listen_host>0.0.0.0</listen_host><timezone>Asia/Shanghai</timezone><!-- 删除原有 <remote_servers> 节点,并添加以下配置(与 <remote_servers> 同级) --><remote_serversincl="clickhouse_remote_servers"/><include_from>/etc/clickhouse-server/metrika.xml</include_from><zookeeperincl="zookeeper-servers"optional="true"/><macrosincl="macros"optional="true"/>

默认配置中可能还有 <listen_host>::</listen_host>(IPv6)或其他 listen_host 节点。建议:只保留一个 <listen_host>0.0.0.0</listen_host>,将其他的都注释掉或删除,避免配置冲突。

  • Sub 实例需额外修改端口(避免与 Main 冲突):
    /usr/soft/clickhouse-server/sub/conf/config.xml 中除了上述修改外,还需将端口改为:
<!-- 改为未被占用的端口 --><http_port>8124</http_port><tcp_port>9001</tcp_port><mysql_port>9005</mysql_port><postgresql_port>9006</postgresql_port><interserver_http_port>9010</interserver_http_port>
(3) 创建metrika.xml

main/confsub/conf中创建metrika.xml

vi/usr/soft/clickhouse-server/main/conf/metrika.xmlvi/usr/soft/clickhouse-server/sub/conf/metrika.xml <
http://www.jsqmd.com/news/1098674/

相关文章:

  • 基于 Simulink 的工业离心机变频调速系统 S-Ramp(S型加减速)曲线规划仿真实战教程。
  • 扣子【Coze】实战:别再花钱买绘本了!用扣子一键生成,孩子天天要看新故事
  • 基于 Simulink 的工业离心机变频调速系统 S-Ramp(S型加减速)曲线规划仿真实战教程
  • YOLO26N 姿态估计 ONNX 导出与模型简化
  • JMeter 实现:上接口失败则不执行下一个接口
  • vm虚拟机安装win10系统步骤
  • AI写作技巧:把你的想法翻译成AI能理解的语言
  • TVA在具身智能全栈能力体系中的关键作用(10)
  • JavaScript的DOM操作基础
  • 给宝宝起名字找哪个网站靠谱
  • docker python images Docker Python镜像别乱拉!容器和镜像傻傻分不清,你还在踩坑?
  • 第九次作业---基于springboot+mybatis+vue的项目实战之增删改查CRUD—Restful风格
  • 学 Simulink——输送带多电机驱动的转速同步与主从控制(Droop / 带载分配)仿真
  • 从Google论文到Hadoop实战:MapReduce核心思想如何帮你搞定海量日志分析
  • YOLO26N 姿态估计 TensorRT 部署:Jetson 实时推理
  • 经典 CNN 网络 VGG
  • 2026Word文档过大怎么瘦身,多种压缩Word文件大小实操方法指南
  • 配置外置与敏感隔离:基于 Django-environ 的多环境配置管理策略
  • 基于HarmonyOS 7.0 跨端开发的全球火山活动监测页面实战
  • 性能测试进阶:从压测工具到容量规划的系统工程实践
  • 学 Simulink — 航空航天 270 V DC 高压直流电源变换器的短路保护仿真
  • Prompt工程设计实践:从基础模板到场景化策略
  • 二升三年级暑假特色作业(pdf图文版)
  • Python判断数字?别再用isdigit了,这些坑踩过的人都哭了
  • Pentaho Kettle企业级ETL架构设计与性能优化深度解析
  • 【论文阅读笔记10】小样本充电数据驱动的电池寿命预测——双流ViT与ESA
  • DeepSeek 开始摇人,有点猛啊。
  • 机器人顶刊T-RO收录!同济大学:扔掉标定板,实现全自动在线对齐
  • 抖音批量下载终极指南:3分钟学会高效采集视频、音乐、封面
  • 3步解决华硕笔记本控制难题:G-Helper轻量化性能管理实战指南