ClickHouse(04)如何搭建ClickHouse集群

ClickHouse集群的搭建和部署和单机的部署是类似的,主要在于配置的不一致,如果需要了解ClickHouse单机的安装设部署,可以看看这篇文章,ClickHouse(03)ClickHouse怎么安装和部署

ClickHouse集群部署流程大概如下:

  1. 环境准备
  2. 在每台机器上安装单机版ClickHouse
  3. config.xml配置
  4. Zookeeper配置
  5. 进入ClickHouse测试

环境准备

  1. 下载安装包

按照ClickHouse(03)ClickHouse怎么安装和部署中的介绍下载即可

  1. 设置FQDN,也就是主机名称,命令如下
bash 复制代码
# hostnamectl --static set-hostname ck1.com
  1. 配置hosts文件
bash 复制代码
# cat /etc/hosts
......
10.37.129.10 ck1
10.37.129.11 ck2

在每台机器上安装单机版ClickHouse

按照ClickHouse(03)ClickHouse怎么安装和部署中的介绍安装即可

config.xml配置

要配置集群,需要在 /etc/clickhouse-server/config.xml的 <remote_servers> 标签下添加相关集群信息。或者在/etc/metrika.xml中进行配置,这二者选其中一个就可以。

每一台机器的congfig.xml或者metrika.xml都要写入这样的配置。

如果在config.xml中配置

xml 复制代码
# 全局配置config.xml文件中引入metrika.xml
<include_from>/etc/clickhouse-server/metrika.xml</include_from>

#引用zookeeper配置的定义
<zookeeper incl="zookeeper-servers" optional="true" />

<remote_servers>
        <test_cluster1>
            <shard>
                <replica>
                    <host>ck1</host>
                    <port>9000</port>
                </replica>
            </shard>
            <shard>
                <replica>
                    <host>ck2</host>
                    <port>9000</port>
                </replica>
            </shard>
        </test_cluster1>
</remote_servers>

如果在metrika.xml中配置

xml 复制代码
<yandex>
    <clickhouse_remote_servers>
        <!--自定义集群名称-->
        <test_cluster1>
            <!--定义集群的分片数量,2个shard标签说明有2个节点-->
            <shard>
                <!--定义分片的副本数量,这里副本只有1个-->
                <replica>
                    <host>ck1</host>
                    <port>9000</port>
                </replica>
            </shard>
            <shard>
                <replica>
                    <host>ck2</host>
                    <port>9000</port>
                </replica>
            </shard>
        </test_cluster1>
    </clickhouse_remote_servers>

</yandex>

Zookeeper的配置

zookeeper在clickhouse中主要用在副本表数据的同步(ReplicatedMergeTree引擎)以及分布式表(Distributed)的操作上,zookeeper不参与任何实质性的数据传输。

在/etc/clickhouse-server目录下创建一个metrika.xml的配置文件(如果已存在,则直接往里面写入即可),新增内容:

xml 复制代码
# 类似这样子,host 和 port填上自己的
<zookeeper-servers>
    <node index="1">
        <host>10.10.1.20</host>
        <port>2181</port>
    </node>
    <node index="2">
        <host>10.10.1.21</host>
        <port>2181</port>
    </node>
    <node index="3">
        <host>10.10.1.22</host>
        <port>2181</port>
    </node>
</zookeeper-servers>

进入ClickHouse测试

配置完之后,无需重启clickhouse服务,clickhouse会热加载这些配置。我们可以分别登陆所有clickhouse,通过 select * from system.clusters; 查看当前节点所属集群的相关信息:

进入ClickHouse客户端

bash 复制代码
clickhouse-client --host="127.0.0.1" --port="9000" --user="****" --password="****"

当前节点所属集群的相关信息

sql 复制代码
select * from system.clusters where cluster = 'test_cluster1';

查询结果

bash 复制代码
SELECT *
FROM system.clusters
WHERE cluster = 'test_cluster1'

Query id: eb2064de-92f3-41b0-ac74-6b025d5082a1

┌─cluster──────┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name─────┬─host_address──┬─port─┬─is_local─┬─user────┬─default_database─┬─errors_count─┬─slowdowns_count─┬─estimated_recovery_time─┐
│ test_cluster1 │         1 │            1 │           1 │ ck1 │ 10.37.129.10 │ 9000 │        0 │ default │                  │            0 │               0 │                       0 │
│ test_cluster1 │         2 │            1 │           1 │ ck2 │ 10.37.129.11 │ 9000 │        1 │ default │                  │            0 │               0 │                       0 │
└──────────────┴───────────┴──────────────┴─────────────┴───────────────┴───────────────┴──────┴──────────┴─────────┴──────────────────┴──────────────┴─────────────────┴─────────────────────────┘

3 rows in set. Elapsed: 0.002 sec. 

到了这里,就完成clickhouse 2shard1replica集群部署。

注意,clickhouse集群是非主从结构,各个节点是相互独立的。因此,和hdfs、yarn的集群不同,我们可以根据配置,灵活的配置集群,甚至可以将一个节点同时分配给多个集群。

资料分享

ClickHouse经典中文文档分享

系列文章

clickhouse系列文章

相关推荐
夏玉林的学习之路28 分钟前
正则表达式
数据库·c++·qt·mysql·正则表达式
JIngJaneIL44 分钟前
财务管理|基于SprinBoot+vue的个人财务管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·财务管理系统
B站计算机毕业设计之家1 小时前
python图像识别系统 AI多功能图像识别检测系统(11种识别功能)银行卡、植物、动物、通用票据、营业执照、身份证、车牌号、驾驶证、行驶证、车型、Logo✅
大数据·开发语言·人工智能·python·图像识别·1024程序员节·识别
JIngJaneIL1 小时前
口腔健康系统|口腔医疗|基于java和小程序的口腔健康系统小程序设计与实现(源码+数据库+文档)
java·数据库·spring boot·小程序·论文·毕设·口腔医疗小程序
白帽子黑客罗哥2 小时前
常见Web安全漏洞全解析:从原理到防御的实战指南
数据库·web安全·渗透测试·漏洞利用·权限提升
寒山李白4 小时前
IDEA连接MySQL服务器数据库指南
java·数据库·mysql·intellij-idea·idea·database
数字化脑洞实验室5 小时前
如何理解不同行业AI决策系统的功能差异?
大数据·人工智能·算法
亿坊电商7 小时前
PHP后端项目中多环境配置管理:开发、测试、生产的优雅解决方案!
服务器·数据库·php
韩立学长7 小时前
基于Springboot的影视评论网站的设计与实现58py6238(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
未来之窗软件服务7 小时前
未来之窗昭和仙君(四十七)开发商品进销存——东方仙盟筑基期
数据库·进销存·仙盟创梦ide·东方仙盟·昭和仙君·东方仙盟架构