ClickHouse集群的建立和布置和单机的布置是相似的,首要在于装备的不一致,假如需求了解ClickHouse单机的装置设布置,能够看看这篇文章,ClickHouse(03)ClickHouse怎样装置和布置

ClickHouse集群布置流程大概如下:

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

环境预备

  1. 下载装置包

依照ClickHouse(03)ClickHouse怎样装置和布置中的介绍下载即可

  1. 设置FQDN,也便是主机名称,命令如下
# hostnamectl --static set-hostname ck1.com
  1. 装备hosts文件
# 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中装备

# 全局装备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中装备

<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的装备文件(假如已存在,则直接往里面写入即可),新增内容:

# 相似这姿态,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客户端

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

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

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

查询结果

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系列文章