阅读 76

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,也就是主机名称,命令如下

  1. # hostnamectl --static set-hostname ck1.com

  1. 配置hosts文件

  1. # cat /etc/hosts

  2. ……

  3. 10.37.129.10 ck1

  4. 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中配置

  1. # 全局配置config.xml文件中引入metrika.xml

  2. <include_from>/etc/clickhouse-server/metrika.xml</include_from>

  3. #引用zookeeper配置的定义

  4. <zookeeper incl="zookeeper-servers" optional="true" />

  5. <remote_servers>

  6.        <test_cluster1>

  7.            <shard>

  8.                <replica>

  9.                    <host>ck1</host>

  10.                    <port>9000</port>

  11.                </replica>

  12.            </shard>

  13.            <shard>

  14.                <replica>

  15.                    <host>ck2</host>

  16.                    <port>9000</port>

  17.                </replica>

  18.            </shard>

  19.        </test_cluster1>

  20. </remote_servers>

如果在metrika.xml中配置

  1. <yandex>

  2.    <clickhouse_remote_servers>

  3.        <!--自定义集群名称-->

  4.        <test_cluster1>

  5.            <!--定义集群的分片数量,2个shard标签说明有2个节点-->

  6.            <shard>

  7.                <!--定义分片的副本数量,这里副本只有1个-->

  8.                <replica>

  9.                    <host>ck1</host>

  10.                    <port>9000</port>

  11.                </replica>

  12.            </shard>

  13.            <shard>

  14.                <replica>

  15.                    <host>ck2</host>

  16.                    <port>9000</port>

  17.                </replica>

  18.            </shard>

  19.        </test_cluster1>

  20.    </clickhouse_remote_servers>

  21. </yandex>

Zookeeper的配置

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

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

  1. # 类似这样子,host 和 port填上自己的

  2. <zookeeper-servers>

  3.    <node index="1">

  4.        <host>10.10.1.20</host>

  5.        <port>2181</port>

  6.    </node>

  7.    <node index="2">

  8.        <host>10.10.1.21</host>

  9.        <port>2181</port>

  10.    </node>

  11.    <node index="3">

  12.        <host>10.10.1.22</host>

  13.        <port>2181</port>

  14.    </node>

  15. </zookeeper-servers>

进入ClickHouse测试

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

进入ClickHouse客户端

  1. clickhouse-client --host="127.0.0.1" --port="9000" --user="****" --password="****"

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

  1. select * from system.clusters where cluster = 'test_cluster1';

查询结果

  1. SELECT *

  2. FROM system.clusters

  3. WHERE cluster = 'test_cluster1'

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

  5. ┌─cluster──────┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name─────┬─host_address──┬─port─┬─is_local─┬─user────┬─default_database─┬─errors_count─┬─slowdowns_count─┬─estimated_recovery_time─┐

  6. test_cluster1         1            1           1 ck1 10.37.129.10 9000        0 default                              0               0                       0

  7. test_cluster1         2            1           1 ck2 10.37.129.11 9000        1 default                              0               0                       0

  8. └──────────────┴───────────┴──────────────┴─────────────┴───────────────┴───────────────┴──────┴──────────┴─────────┴──────────────────┴──────────────┴─────────────────┴─────────────────────────┘

  9. 3 rows in set. Elapsed: 0.002 sec.

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

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


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐