
快速搭建两个clickhouse集群,考虑使用docker compose的方式在单台服务器上快速启动一个clickhouse集群。本文参考:https://github.com/tetafro/clickhouse-cluster
一、镜像,配置文件准备
1.涉及的镜像有 zookeeper 和clickhouse-server,提前拉取好。例如:
docker pull zookeeper:3.7docker pull clickhouse/clickhouse-server:22.10.1.1877
2.主配置文件config.xml 如下:(示例是2分片2副本,可以根据实际情况调整)
<?xml version="1.0"?><company><logger><level>debug</level><console>true</console><log remove="remove"/><errorlog remove="remove"/></logger><query_log><database>system</database><table>query_log</table></query_log><listen_host>0.0.0.0</listen_host><http_port>8123</http_port><tcp_port>9000</tcp_port><interserver_http_host>clickhouse${REPLICA}</interserver_http_host><interserver_http_port>9009</interserver_http_port><max_connections>4096</max_connections><keep_alive_timeout>3</keep_alive_timeout><max_concurrent_queries>100</max_concurrent_queries><uncompressed_cache_size>8589934592</uncompressed_cache_size><mark_cache_size>5368709120</mark_cache_size><path>/var/lib/clickhouse/</path><tmp_path>/var/lib/clickhouse/tmp/</tmp_path><user_files_path>/var/lib/clickhouse/user_files/</user_files_path><users_config>users.xml</users_config><default_profile>default</default_profile><default_database>default</default_database><timezone>Europe/Moscow</timezone><mlock_executable>false</mlock_executable><remote_servers><company_cluster><shard><replica><host>clickhouse01</host><port>9000</port></replica><replica><host>clickhouse02</host><port>9000</port></replica></shard><shard><replica><host>clickhouse03</host><port>9000</port></replica><replica><host>clickhouse04</host><port>9000</port></replica></shard></company_cluster></remote_servers><zookeeper><node index="1"><host>zookeeper</host><port>2181</port></node></zookeeper><macros><cluster>company_cluster</cluster><shard>${SHARD}</shard><replica>clickhouse${REPLICA}</replica></macros><distributed_ddl><path>/clickhouse/task_queue/ddl</path></distributed_ddl><format_schema_path>/var/lib/clickhouse/format_schemas/</format_schema_path></company>
3.用户配置文件user.xml,此示例用户: default 是空密码,admin 密码123
<?xml version="1.0"?><company><profiles><default><max_memory_usage>10000000000</max_memory_usage><use_uncompressed_cache>0</use_uncompressed_cache><load_balancing>in_order</load_balancing><log_queries>1</log_queries></default></profiles><users><default><password></password><profile>default</profile><networks><ip>::/0</ip></networks><quota>default</quota></default><admin><password>123</password><profile>default</profile><networks><ip>::/0</ip></networks><quota>default</quota></admin></users><quotas><default><interval><duration>3600</duration><queries>0</queries><errors>0</errors><result_rows>0</result_rows><read_rows>0</read_rows><execution_time>0</execution_time></interval></default></quotas></company>
二、运行docker-compose up前初始化脚本
rm -rf clickhouse01 clickhouse02 clickhouse03 clickhouse04mkdir -p clickhouse01 clickhouse02 clickhouse03 clickhouse04REPLICA=01 SHARD=01 envsubst < config.xml > clickhouse01/config.xmlREPLICA=02 SHARD=01 envsubst < config.xml > clickhouse02/config.xmlREPLICA=03 SHARD=02 envsubst < config.xml > clickhouse03/config.xmlREPLICA=04 SHARD=02 envsubst < config.xml > clickhouse04/config.xmlcp users.xml clickhouse01/users.xmlcp users.xml clickhouse02/users.xmlcp users.xml clickhouse03/users.xmlcp users.xml clickhouse04/users.xml
三、docker-compose.yaml文件
version: '3.5'services:zookeeper:image: zookeeper:3.7container_name: zookeeperhostname: zookeepernetworks:clickhouse-network:ipv4_address: 172.23.0.10clickhouse01:image: clickhouse/clickhouse-server:22.5container_name: clickhouse01hostname: clickhouse01networks:clickhouse-network:ipv4_address: 172.23.0.11ports:- "127.0.0.1:8123:8123"- "127.0.0.1:9000:9000"volumes:- ${PWD}/clickhouse01:/etc/clickhouse-serverdepends_on:- zookeeperclickhouse02:image: clickhouse/clickhouse-server:22.5container_name: clickhouse02hostname: clickhouse02networks:clickhouse-network:ipv4_address: 172.23.0.12volumes:- ${PWD}/clickhouse02:/etc/clickhouse-serverdepends_on:- zookeeperclickhouse03:image: clickhouse/clickhouse-server:22.5container_name: clickhouse03hostname: clickhouse03networks:clickhouse-network:ipv4_address: 172.23.0.13volumes:- ${PWD}/clickhouse03:/etc/clickhouse-serverdepends_on:- zookeeperclickhouse04:image: clickhouse/clickhouse-server:22.5container_name: clickhouse04hostname: clickhouse04networks:clickhouse-network:ipv4_address: 172.23.0.14volumes:- ${PWD}/clickhouse04:/etc/clickhouse-serverdepends_on:- zookeepernetworks:clickhouse-network:name: clickhouse-networkipam:config:- subnet: 172.23.0.0/24
数据会持久化到docker-compose.yaml 所在目录下的clickhouse01-04下的data01-04 目录下。
PS:在运行的时候可能会出现docker的subenet冲突,修改下subnet网段或者清理对应的subnet。
docker network ls 和docker network inspect id 查看subnet网段docker network rm id 删除即可。
最后启动:docker-compose up -d
“运维笔谈”公众号,对话回复 “阿里云k8s” 可以获取 “阿里云Kubernetes项目实战手册”
如果您在日常运维工作中遇到了任何问题或挑战,无论是关于系统配置、性能优化、故障排除还是其他方面,都欢迎您随时留言或私信我。我会尽我所能为您提供解决方案或建议。相互学习,积累更多的经验和知识,让工作更加顺畅高效!
文章转载自运维笔谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




