ClickHouse(04)如何搭建ClickHouse叢集

張飛的豬發表於2022-07-12

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經典中文文件分享

文章參考:ClickHouse(04)如何搭建ClickHouse叢集

相關文章