ClickHouse 集群快速搭建
创始人
2024-05-26 15:01:01

本文介绍 ClickHouse 集群的搭建方法,为了方便和便于读者尝试,我们使用 docker 的方式来启动 ClickHouse Server 和 Zookeeper,并且后续会提供一套自动化脚本来方便读者搭建一套集群来尝试使用 ClickHouse。这里使用的 ClickHouse docker 镜像版本为latest,因为只是测试使用,新版本会有更多的新功能让我们来体验。Zookeeper docker 镜像为 3.6.1 版本,这个版本是生产上运行比较稳定的且提供 Prometheus 监控的版本。

所需文件

docker-compose.yml

docker compose 文件,用来描述各个 docker 间的拓扑关系,这里不过多介绍 docker compose 相关的内容,专注于我们的集群拓扑关系。本例子是创建一个 1 ZK 节点 4 CK 节点的 ClickHouse 集群,其中 ClickHouse 集群为 2 分片 2 副本。由于只是为了测试功能,ZK 没有采用集群式部署,所以本例子也只是用于测试,不适用于生产环境。

version: '3.5'
services:zookeeper:image: zookeeper:3.6.1container_name: zookeeperhostname: zookeepernetworks:clickhouse-network:ipv4_address: 172.1.0.10clickhouse-s1-r1:image: clickhouse/clickhouse-servercontainer_name: clickhouse-s1-r1hostname: clickhouse-s1-r1networks:clickhouse-network:ipv4_address: 172.1.0.11ports:- "127.0.0.1:8123:8123"- "127.0.0.1:9000:9000"volumes:- ${PWD}/clickhouse-s1-r1:/etc/clickhouse-serverdepends_on:- zookeeperclickhouse-s1-r2:image: clickhouse/clickhouse-servercontainer_name: clickhouse-s1-r2hostname: clickhouse-s1-r2networks:clickhouse-network:ipv4_address: 172.1.0.12volumes:- ${PWD}/clickhouse-s1-r2:/etc/clickhouse-serverdepends_on:- zookeeperclickhouse-s2-r1:image: clickhouse/clickhouse-servercontainer_name: clickhouse-s2-r1hostname: clickhouse-s2-r1networks:clickhouse-network:ipv4_address: 172.1.0.13volumes:- ${PWD}/clickhouse-s2-r1:/etc/clickhouse-serverdepends_on:- zookeeperclickhouse-s2-r2:image: clickhouse/clickhouse-servercontainer_name: clickhouse-s2-r2hostname: clickhouse-s2-r2networks:clickhouse-network:ipv4_address: 172.1.0.14volumes:- ${PWD}/clickhouse-s2-r2:/etc/clickhouse-serverdepends_on:- zookeepernetworks:clickhouse-network:name: clickhouse-networkipam:config:- subnet: 172.1.0.0/24

config.xml

ClickHouse 的主配置文件,具体可以参考官网,这里主要的改动是精简了一些配置,包括一些系统表配置等,然后指定了集群配置 remote_servers 为 2 分片 2 副本,并且指定了节点的宏配置 macro


debugtruesystemquery_log
0.0.0.081239000clickhouse-s${SHARD}-r${REPLICA}90094096310085899345925368709120/var/lib/clickhouse//var/lib/clickhouse/tmp//var/lib/clickhouse/user_files/users.xmldefaultdefaultfalseclickhouse-s1-r19000clickhouse-s1-r29000clickhouse-s2-r19000clickhouse-s2-r29000zookeeper2181default${SHARD}clickhouse-s${SHARD}-r${REPLICA}/clickhouse/task_queue/ddl/var/lib/clickhouse/format_schemas/

users.xml

ClickHouse 的用户配置文件,指定用户的权限、资源限制等配置。这里指定了 default 用户不需要密码登录。


100000000000in_order1default::/0default360000000

Makefile

为了方便配置文件的统一管理,这里使用 Makefile config 来复用一份配置文件。

.PHONY: config
config:rm -rf clickhouse-s1-r1 clickhouse-s1-r2 clickhouse-s2-r1 clickhouse-s2-r2mkdir -p clickhouse-s1-r1 clickhouse-s1-r2 clickhouse-s2-r1 clickhouse-s2-r2REPLICA=1 SHARD=1 envsubst < config.xml > clickhouse-s1-r1/config.xmlREPLICA=2 SHARD=1 envsubst < config.xml > clickhouse-s1-r2/config.xmlREPLICA=1 SHARD=2 envsubst < config.xml > clickhouse-s2-r1/config.xmlREPLICA=2 SHARD=2 envsubst < config.xml > clickhouse-s2-r2/config.xmlcp users.xml clickhouse-s1-r1/users.xmlcp users.xml clickhouse-s1-r2/users.xmlcp users.xml clickhouse-s2-r1/users.xmlcp users.xml clickhouse-s2-r2/users.xml.PHONY: up
up:docker-compose up -d.PHONY: start
start:docker-compose start.PHONY: down
down:docker-compose down

体验集群

启动集群

通过一下命令可以执行 Makefile 中的 config 和 up 命令,先将 config.xml 和 users.xml 复制到对应的目录,然后启动集群。

make config up

查看集群

执行 docker compose ps 就可以查看当前的 ClickHouse 集群了,可以看到以下五个容器都是 running 状态。

[root@centos clickhouse-cluster]# docker compose ps    
NAME                COMMAND                  SERVICE             STATUS              PORTS
clickhouse-s1-r1    "/entrypoint.sh"         clickhouse-s1-r1    running             127.0.0.1:8123->8123/tcp, 127.0.0.1:9000->9000/tcp, 9009/tcp
clickhouse-s1-r2    "/entrypoint.sh"         clickhouse-s1-r2    running             8123/tcp, 9000/tcp, 9009/tcp
clickhouse-s2-r1    "/entrypoint.sh"         clickhouse-s2-r1    running             8123/tcp, 9000/tcp, 9009/tcp
clickhouse-s2-r2    "/entrypoint.sh"         clickhouse-s2-r2    running             8123/tcp, 9000/tcp, 9009/tcp
zookeeper           "/docker-entrypoint.…"   zookeeper           running             2181/tcp, 2888/tcp, 3888/tcp, 8080/tcp

登录 ClickHouse

docker exec -it clickhouse-s1-r1 clickhouse-client -h localhost

通过 clusterAllReplicas 函数来查询所有节点的 system.macros 表,可以看到有 4 个节点的值。

SELECT_shard_num,*
FROM clusterAllReplicas('default', system.macros)
ORDER BY _shard_num ASC┌─_shard_num─┬─macro───┬─substitution─────┐
│          1 │ cluster │ default          │
│          1 │ replica │ clickhouse-s1-r1 │
│          1 │ shard   │ 1                │
└────────────┴─────────┴──────────────────┘
┌─_shard_num─┬─macro───┬─substitution─────┐
│          2 │ cluster │ default          │
│          2 │ replica │ clickhouse-s1-r2 │
│          2 │ shard   │ 1                │
└────────────┴─────────┴──────────────────┘
┌─_shard_num─┬─macro───┬─substitution─────┐
│          3 │ cluster │ default          │
│          3 │ replica │ clickhouse-s2-r1 │
│          3 │ shard   │ 2                │
└────────────┴─────────┴──────────────────┘
┌─_shard_num─┬─macro───┬─substitution─────┐
│          4 │ cluster │ default          │
│          4 │ replica │ clickhouse-s2-r2 │
│          4 │ shard   │ 2                │
└────────────┴─────────┴──────────────────┘

小结

我们可以通过几个文件快速搭建一个分布式的 ClickHouse 集群,方便体验 ClickHouse 完整功能。并且后续的复杂操作都会提供脚本来辅助我们快速完成复杂的搭建和修改配置等操作。


欢迎添加微信:xideyantu,讨论技术问题。

相关内容

热门资讯

世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
怎么样的桃花 桃花近看远看的样... 今年的“三八”妇女节,阳光明媚,踏青赏花正当时。遂与姐妹们共赴十里蓝山,与花海来一场春天的约会。十里...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
怎么样的桃花 桃花近看远看的样... 今年的“三八”妇女节,阳光明媚,踏青赏花正当时。遂与姐妹们共赴十里蓝山,与花海来一场春天的约会。十里...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
怎么样的桃花 桃花近看远看的样... 今年的“三八”妇女节,阳光明媚,踏青赏花正当时。遂与姐妹们共赴十里蓝山,与花海来一场春天的约会。十里...