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/hostsEOF 192.168.50.6 server01 192.168.50.157 server02 192.168.50.110 server03 EOF1. 整体设计服务器规划(与原文一致)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:38882.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_host0.0.0.0/listen_hosttimezoneAsia/Shanghai/timezone!-- 删除原有 remote_servers 节点,并添加以下配置(与 remote_servers 同级) --remote_serversincl="clickhouse_remote_servers"/include_from/etc/clickhouse-server/metrika.xml/include_fromzookeeperincl="zookeeper-servers"optional="true"/macrosincl="macros"optional="true"/默认配置中可能还有 listen_host::/listen_host(IPv6)或其他 listen_host 节点。建议:只保留一个 listen_host0.0.0.0/listen_host,将其他的都注释掉或删除,避免配置冲突。Sub 实例需额外修改端口(避免与 Main 冲突):/usr/soft/clickhouse-server/sub/conf/config.xml 中除了上述修改外,还需将端口改为:!-- 改为未被占用的端口 --http_port8124/http_porttcp_port9001/tcp_portmysql_port9005/mysql_portpostgresql_port9006/postgresql_portinterserver_http_port9010/interserver_http_port(3) 创建metrika.xml在main/conf和sub/conf中创建metrika.xml。vi/usr/soft/clickhouse-server/main/conf/metrika.xmlvi/usr/soft/clickhouse-server/sub/conf/metrika.xml