Clickhouse. Debian. Clickhouse + Zookeeper installation
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
|
Просмотреть все элементы конфигурации по умолчанию:
clickhouse-backup default-config
|
Создадим директорию хранения конфигов.
mkdir -p /clickhouse-backup/
|
Укажем параметры для подключения к СУБД clickhouse:
cat > /etc/clickhouse-backup/config.yml
|
Проверить, можем ли мы подключиться к нашей 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