Clickhouse. Debian. Clickhouse + Zookeeper installation

Материал из Wiki
Версия от 14:11, 13 марта 2024; Cless (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Links

https://avamk.ru/nastrojka-klastera-clickhouse-steb-by-step-chast-2.html

Description

Clickhouse 3-node Cluster + Zookeeper.

Installation

Zookeeper

Выполняется на всех нодах Zookeeper. Можно установить на тех же нодах, где будет установлен Clickhouse, но, минимальное количество нод Zookeeper - 3, в то время как для кластера Clickhouse достаточно 2-х нод)

Java

apt update

apt install -y default-jre-headless

Создаем пользователя

useradd --system --no-create-home --shell=/sbin/nologin zookeeper

Скачиваем, распаковываем и переносим в нужное место Zookeeper, подготавливаем папку для данных и раздаем права

wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gz

tar xzf apache-zookeeper-3.8.3-bin.tar.gz -C /app/

mv /app/apache-zookeeper-3.8.3-bin /app/zookeeper

mkdir -p /app/zookeeper-data && chown -R zookeeper:zookeeper /app/zookeeper /app/zookeeper-data

Создаем конфигурационный файл

vim /app/zookeeper/conf/zoo.cfg

dataDir=/app/zookeeper-data
clientPort=2181
maxClientCnxns=0
tickTime=2000
initLimit=10
syncLimit=5
server.1=10.162.201.161:2888:3888
server.2=10.162.201.162:2888:3888
server.3=10.162.201.163:2888:3888
autopurge.purgeInterval=1
autopurge.snapRetainCount=5

На каждой ноде указываем ее ID (соответствует цифре после точки в конфиге: server.1=10.162.201.161:2888:3888)

echo 1 > /app/zookeeper-data/myid

Создаем службу zookeeper.service

vim /lib/systemd/system/zookeeper.service

[Unit]
Description=ZooKeeper Service
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target
 
[Service]
Type=forking
User=zookeeper
Group=zookeeper
ExecStart=/app/zookeeper/bin/zkServer.sh start
ExecStop=/app/zookeeper/bin/zkServer.sh stop
ExecReload=/app/zookeeper/bin/zkServer.sh restart
WorkingDirectory=/app/zookeeper-data
 
[Install]
WantedBy=default.target

systemctl daemon-reload

systemctl start zookeeper.service && systemctl status zookeeper.service

Проверяем

ss -tunlp

...
tcp            LISTEN          0               50                        *:2181                                 *:*              users:(("java",pid=19095,fd=48))
tcp            LISTEN          0               50                        [::ffff:10.162.201.158]:3888           *:*              users:(("java",pid=19095,fd=60))
tcp            LISTEN          0               50                        *:8080                                 *:*              users:(("java",pid=19095,fd=52))
...

Clickhouse

Добавляем gpg-ключ репозитория

vim /tmp/key-clickhouse

-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: Hostname:
Version: Hockeypuck 2.1.0-222-g25248d4
  
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
=SaBk
-----END PGP PUBLIC KEY BLOCK-----

apt-key add /tmp/key-clickhouse

apt install -y apt-transport-https ca-certificates dirmngr

apt autoremove

apt update

Добавление репозитория

echo "deb https://packages.clickhouse.com/deb stable main" >  /etc/apt/sources.list.d/clickhouse.list

apt update

Установка

Крайняя версия

apt  install -y clickhouse-server clickhouse-client

-ИЛИ-

Конкретная версия

apt install clickhouse-common-static=23.3.19.32 clickhouse-server=23.3.19.32 clickhouse-client=23.3.19.32

Назначение прав на файлы конфигурации

chmod 744 /etc/clickhouse-server/users.xml

chmod 744 /etc/clickhouse-server/config.xml

chmod -R g+w /app/zookeeper/

chmod -R g+w /app/zookeeper-data/

Изменение конфигурации пользователей

vim /etc/clickhouse-server/users.xml

После <quota>default</quota> добавить:

...
<quota>default</quota>
<access_management>1</access_management>
<named_collection_control>1</named_collection_control>
<show_named_collections>1</show_named_collections>
<show_named_collections_secrets>1</show_named_collections_secrets>
...

Пароль default user (тот же пароль, который мы вводили при установке) <password><20 символов без спецсимволов></password>

...
<password>4fgh947g9485g70ghg</password>
...

Бэкап оригинального конфига сервера

cp /etc/clickhouse-server/config.xml /etc/clickhouse-server/config.xml.ORIG

Изменение конфигурации сервера

vim /etc/clickhouse-server/config.xml

...
<listen_host>0.0.0.0</listen_host>
...
<path>/app/clickhouse/</path>
...
# Для кластерной конфигурации добавить
# Несколько shard
<remote_servers>
    <default>
        <shard>
            <replica>
                <host>node1.domain.local</host>
                <port>9000</port>
            </replica>
        </shard>
        <shard>
            <replica>
                <host>node2.domain.local</host>
                <port>9000</port>
            </replica>
        </shard>
        <shard>
            <replica>
                <host>node3.domain.local</host>
                <port>9000</port>
            </replica>
        </shard>
    </default>
</remote_servers>

# ИЛИ для одного shard

<remote_servers>
    <default>
        <shard>
            <replica>
                <host>node1.domain.local</host>
                <port>9000</port>
            </replica>
            <replica>
                <host>node2.domain.local</host>
                <port>9000</port>
            </replica>
            <replica>
                <host>node3.domain.local</host>
                <port>9000</port>
            </replica>
        </shard>
    </default>
</remote_servers>

# Секция zookeeper (можно удалить, если не будет использоваться Zookeeper)
<zookeeper>
    <node>
        <host>zoo01.domain.local</host>
        <port>2181</port>
    </node>
    <node>
        <host>zoo02.domain.local</host>
        <port>2181</port>
    </node>
    <node>
        <host>zoo03.domain.local</host>
        <port>2181</port>
    </node>
</zookeeper>

# Секция macros
<macros>
        <shard>01</shard>
        # Количество реплик (фактически - нод)
        <replica>03</replica>
    </macros>
...

chown -R clickhouse /app

systemctl enable clickhouse-server

systemctl start clickhouse-server && systemctl status clickhouse-server

Проверка

Clickhouse

clickhouse-client --user default --password PbHwtDHp0Zfy7bmDon4x

 SELECT * FROM system.clusters FORMAT Vertical;

 SELECT * FROM system.zookeeper WHERE path = '/'

Zookeeper

/app/zookeeper/bin/zkCli.sh -server localhost:2181 get /zookeeper/config

Проверяем и создаем пользователей

clickhouse-client --user default --password 4fgh947g9485g70ghg

Пример - adm01

CREATE USER adm01 IDENTIFIED by 'PassWord#1';

GRANT ALL ON *.* TO adm01 WITH GRANT OPTION;

show users;

Резервное копирование

установка deb

wget https://github.com/Altinity/clickhouse-backup/releases/download/v2.4.2/clickhouse-backup_2.4.2_amd64.deb

apt install ./clickhouse-backup_2.4.2_amd64.deb

Просмотреть все элементы конфигурации по умолчанию:

clickhouse-backup default-config

Создадим директорию хранения конфигов.

mkdir -p /clickhouse-backup/

Укажем параметры для подключения к СУБД clickhouse:

cat > /etc/clickhouse-backup/config.yml

clickhouse:

username: default

password: "RwWw1UOQcIcLk6bVsDBF"

host: localhost

port: 9000

data_path: "/app/clickhouse/"

remote_storage: none

general:

remote_storage: none

backups_to_keep_local: 7

backups_to_keep_remote: 31

Проверить, можем ли мы подключиться к нашей clickhouse. Можно сделать это простым запросом:

clickhouse-backup tables

Для проверки создадим резервную копию

clickhouse-backup create test.backup-07112023

-Просмотр файлов резервных копий

clickhouse-backup list

-Удалить файл резервной копии

clickhouse-backup delete local "name-backup"

-Очистить временный файл резервной копии

clickhouse-backup  clean

- Восстановление данных

clickhouse-backup restore "name_backup"

Добавление в cron задачи резервного копирования:

vi /var/lib/clickhouse/backup-clickhouse.sh

#!/bin/bash

BACKUP_NAME=backup-clickhouse-$(date +%Y-%m-%d)

clickhouse-backup create $BACKUP_NAME

crontab -e

23 00 * * * /var/lib/clickhouse/backup-clickhouse.sh