Big Data 134 - ClickHouse Single Machine + Cluster Node Deployment Guide | Installation Configuration | systemd Management / config.d

TL;DR

  • Scenario: Quickly install ClickHouse on Ubuntu, first run through single machine, then build 3-node cluster.
  • Conclusion: Use official repo + signed-by method for installation; use systemd to manage service, don’t manually sudo -u clickhouse clickhouse-server; cluster recommends using ClickHouse Keeper instead of ZooKeeper.
  • Output: One-click installation script, single machine MRE (3 minutes)

Minimum Runnable Example

# 1) Dependencies & keyring
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
curl -fsSL 'https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key' \
  | sudo gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg

# 2) Repo (choose one of stable or lts)
ARCH=$(dpkg --print-architecture)
echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg arch=${ARCH}] https://packages.clickhouse.com/deb stable main" \
 | sudo tee /etc/apt/sources.list.d/clickhouse.list

sudo apt-get update
sudo apt-get install -y clickhouse-server clickhouse-client

Start and Boot Auto-start

sudo systemctl enable --now clickhouse-server
sudo systemctl status clickhouse-server --no-pager

Single Machine Installation

Ubuntu server installation steps:

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates dirmngr

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4
echo "deb https://repo.clickhouse.com/deb/stable/ main/" | sudo tee /etc/apt/sources.list.d/clickhouse.list

sudo apt-get update
sudo apt-get install -y clickhouse-server clickhouse-client

Default password path is: /etc/clickhouse-server/users.d/default-password.xml

Configure Permissions

sudo chown -R clickhouse:clickhouse /etc/clickhouse-server
sudo chmod -R 755 /etc/clickhouse-server
sudo chown -R clickhouse:clickhouse /var/lib/clickhouse
sudo chmod -R 755 /var/lib/clickhouse

Single Machine Test

Start ClickServer:

sudo -u clickhouse clickhouse-server

Start ClickClient:

clickhouse-client -m

Cluster Installation

Cluster Nodes

  • h121 2C4G
  • h122 2C4G
  • h123 2C4G

Configuration Files

config.xml

Modify /etc/clickhouse-server/config.xml:

<!-- Path to data directory, with trailing slash. -->
<path>/var/lib/clickhouse/</path>

<!-- Open remote access, allow all connections -->
<listen_host>::</listen_host>

<!-- Add content under root tag -->
<include_from>/etc/clickhouse-server/config.d/metrika.xml</include_from>

metrika.xml

Create /etc/clickhouse-server/config.d/metrika.xml:

<yandex>
  <remote_servers>
    <perftest_3shards_1replicas>
      <shard>
        <internal_replication>true</internal_replication>
        <replica>
          <host>h121.wzk.icu</host>
          <port>9000</port>
          <user>default</user>
          <password>clickhouse@wzk.icu</password>
        </replica>
      </shard>
      <shard>
        <internal_replication>true</internal_replication>
        <replica>
          <host>h122.wzk.icu</host>
          <port>9000</port>
          <user>default</user>
          <password>clickhouse@wzk.icu</password>
        </replica>
      </shard>
      <shard>
        <internal_replication>true</internal_replication>
        <replica>
          <host>h123.wzk.icu</host>
          <port>9000</port>
          <user>default</user>
          <password>clickhouse@wzk.icu</password>
        </replica>
      </shard>
    </perftest_3shards_1replicas>
  </remote_servers>
  <zookeeper-servers>
    <node index="1">
      <host>h121.wzk.icu</host>
      <port>2181</port>
    </node>
    <node index="2">
      <host>h122.wzk.icu</host>
      <port>2181</port>
    </node>
    <node index="3">
      <host>h123.wzk.icu</host>
      <port>2181</port>
    </node>
  </zookeeper-servers>
  <macros>
    <shard>01</shard>
    <replica>h121.wzk.icu</replica>
  </macros>
  <networks>
    <ip>::/0</ip>
  </networks>
  <clickhouse_compression>
    <case>
      <min_part_size>10000000000</min_part_size>
      <min_part_size_ratio>0.01</min_part_size_ratio>
      <method>lz4</method>
    </case>
  </clickhouse_compression>
</yandex>

Modify permissions:

sudo chown -R clickhouse:clickhouse /etc/clickhouse-server/config.d/metrika.xml

Modify Password

Modify /etc/clickhouse-server/users.d/default-password.xml:

<clickhouse>
    <users>
        <default>
            <password>clickhouse@wzk.icu</password>
            <networks>
                <ip>::/0</ip>
            </networks>
        </default>
    </users>
</clickhouse>

Start Test

sudo -u clickhouse clickhouse-server --config-file=/etc/clickhouse-server/config.xml

Official Start

systemctl start clickhouse-server
systemctl status clickhouse-server