Конфигурация ClickHouse-кластера

В качестве примера будем рассматривать конфигурацию кластера, состоящего из двух узлов: clickhouse1 и clickhouse2.

Настройки содержатся в конфигурационном файле /etc/clickhouse-server/config.xml.

Для использования репликации необходимо указать в конфигурационном файле адреса ZooKeeper кластера. Пример:

<zookeeper>
    <node index="1">
        <host>zookeeper1</host>
        <port>2181</port>
    </node>
    <node index="2">
        <host>zookeeper2</host>
        <port>2181</port>
    </node>
</zookeeper>

Также, необходимо указать топологию кластера. В данном случае один шард и две реплики:

<remote_servers>
    <logs>
        <shard>
            <replica>
                <host>clickhouse1</host>
                <port>9000</port>
            </replica>
            <replica>
                <host>clickhouse2</host>
                <port>9000</port>
            </replica>
        </shard>
    </logs>
</remote_servers>

Создание реплицируемых таблиц

При создание реплицируемых таблиц ClickHouse удобно использовать макросы.

Пример:

<macros>
    <layer>01</layer>
    <shard>01</shard>
    <replica>clickhouse1</replica>
</macros>

Значения из директивы macros используем при создании таблиц.

На каждом узле кластера создадим реплицируемую таблицу:

CREATE TABLE hits (
    EventDate Date, 
    UserID UInt32, 
    CounterID UInt32, 
    EventTime DateTime 
) 
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/hits', '{replica}', EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID), EventTime), 8192)
  • /clickhouse/tables/{layer}-{shard}/hits - путь к таблице в ZooKeeper
  • {replica} - имя реплики в ZooKeeper