Настройка нового кластера ClickHouse
| Данная инструкция описывает установку и настройку кластера ClickHouse с нуля. При необходимости настроить уже существующий кластер ClickHouse, обратитесь к разделу Настройка существующего кластера ClickHouse. |
Инструкция предлагает автоматизированный способ установки ClickHouse с помощью Ansible-плейбука.
На узлах, предназначенных для установки нового кластера ClickHouse, должна быть установлена одна из следующих операционных систем:
-
Debian 11, 12;
-
РЕД ОС 7.3, 8.0;
-
Rocky Linux 8, 9.
Установку ClickHouse можно осуществлять как на одном из узлов кластера, так и на АРМ администратора — отдельном узле, имеющем сетевой доступ к узлам кластера. На АРМ администратора может быть установлена любая операционная система семейства Linux.
|
Вы можете установить ClickHouse самостоятельно, пользуясь инструкцией из официальной документации ClickHouse. Если вы установили ClickHouse самостоятельно, перейдите к разделу Установка PostgreSQL на выделенном сервере. |
Установка ClickHouse
Чтобы запустить установку:
-
Скачайте следующие архивы:
-
Архив с Ansible-плейбуком
clickhouse-cluster.tar.gz. -
Архив пакетов для подготовки к установке ClickHouse:
ОС узлов кластера Ссылка на архив Debian
files.rvision.ru/common/clickhouse/sys-prep-clickhouse-debian.tar.gz
РЕД ОС
files.rvision.ru/common/clickhouse/sys-prep-clickhouse-redos.tar.gz
Rocky Linux
files.rvision.ru/common/clickhouse/sys-prep-clickhouse-rocky.tar.gz
Если у вас есть скачанный установщик системы, архивы можно загрузить из его меню. Для этого:
-
Запустите установщик системы:
bash ./evo.platform_<version>.runТребуемая версия bash: 4.0 или выше.
Или сделайте файл установщика исполняемым и запустите непосредственно:
chmod +x ./evo.platform_<version>.run ./evo.platform_<version>.run -
Выберите режим работы Downloading additional packages.

-
Загрузите необходимый дополнительный пакет.
-
-
Распакуйте архив подготовительных пакетов:
mkdir -p ./sysprep tar xvf ./<sysprep_archive> -C ./sysprepЗдесь:
-
<sysprep_archive>— архив подготовительных пакетов для вашей ОС:sys-prep-clickhouse-debian.tar.gz,sys-prep-clickhouse-redos.tar.gzилиsys-prep-clickhouse-rocky.tar.gz.
-
-
Запустите скрипт установки Ansible:
cd ./sysprep ./update-system.sh ansibleСкрипт установит Ansible и коллекции, требуемые для работы плейбука установки кластера ClickHouse.
-
Вернитесь в директорию, в которую был загружен архив с Ansible-плейбуком, и распакуйте его:
cd .. tar xvf clickhouse-cluster.tar.gzВ дальнейшем полный путь к директории, в которую распакован архив плейбука, будет упоминаться как <clickhouse_playbook_dir>. -
Перейдите в директорию
<clickhouse_playbook_dir>и измените файлinventory/hosts.ini:-
В разделе
[clickhouse]укажите полные доменные имена (FQDN) узлов, на которых будет развернут кластер ClickHouse. -
В разделе
[clickhouse_keeper]укажите FQDN узлов кластера, которым будет присвоена роль Keeper. Эта роль требуется для координации работы узлов.Рекомендуется использовать нечетное количество узлов с ролью Keeper, не менее трех, поскольку для консенсуса используется алгоритм Raft, который принимает решения по правилу большинства. -
В разделе
[clickhouse_shard<shard_id>]укажите FQDN узлов, на которых будут размещены реплики шарда с номером<shard_id>. Каждый узел в списке соответствует одной реплике. Номера шардов должны быть неповторяющимися целыми числами, начиная с 0. Порядок номеров не важен.
Пример содержимого файла
hosts.iniВ данном примере настроен кластер ClickHouse из 5 узлов, 3 из которых имеют роль Keeper. Кластер состоит из 2 шардов, по 2 реплики для каждого.
[clickhouse] node1.my.lan node2.my.lan node3.my.lan node4.my.lan node5.my.lan [clickhouse_keeper] node1.my.lan node2.my.lan node3.my.lan [clickhouse_shard1] node1.my.lan node2.my.lan [clickhouse_shard2] node4.my.lan node5.my.lan -
-
Настройте подключение к кластеру и параметры сервера ClickHouse в файле
inventory/group_vars/clickhouse.yml:-
Настройте учетные данные для подключения системных пользователей к ClickHouse.
К паролям пользователей предъявляются следующие требования:
-
Пароль может содержать только строчные латинские буквы (
a—z), заглавные латинские буквы (A—Z) и цифры (0—9). -
Минимальная длина пароля: 8 знаков.
Эти пароли необходимо использовать на этапах настройки общесистемного экземпляра ClickHouse и ClickHouse для событий ИБ при установке системы.
В целях повышения безопасности при подключении к ClickHouse и управлении базой данных плейбук создает специального пользователя. Учетные данные этого пользователя задаются в следующих параметрах:
-
dcc_clickhouse_user— имя пользователя. -
dcc_clickhouse_password— пароль пользователя.
Для работы системы необходимо, чтобы в ClickHouse были настроены три пользователя с разным набором прав:
-
owner — пользователь с расширенным набором прав. Используется для создания, обновления и удаления таблиц (хранилищ событий), а также получения служебной информации.
-
writer — пользователь с правами на запись. Используется в коллекторах для записи событий в ClickHouse.
-
reader — пользователь с правами только на чтение. Используется для выполнения поисковых запросов.
Пример настроек данных пользователей в
clickhouse.ymldcc_clickhouse_user: evo-user dcc_clickhouse_password: EvoUserPassword dcc_owner_password: OwnerPassword dcc_writer_password: WriterPassword dcc_reader_password: ReaderPassword -
-
Если необходимо включить шифрование трафика между системой и кластером ClickHouse (режим SSL), добавьте в файл
inventory/group_vars/clickhouse.ymlследующие строки:dcc_clickhouse_ssl_enabled: true dcc_https_port: <https_port>Здесь:
-
<https_port>— порт для взаимодействия с ClickHouse по протоколу HTTPS. По умолчанию 8443.
Опция
dcc_clickhouse_ssl_enabledвключает прослушивание HTTPS-трафика по портуdcc_https_port. Также включается шифрование gRPC-трафика по портуdcc_grpc_port. При этом HTTP-портdcc_http_portостается открытым, однако портdcc_grpc_portпринимает только зашифрованный трафик.Подробное описание назначения портов
dcc_https_port,dcc_http_portиdcc_grpc_portприведено в разделе Порты для взаимодействия системы и ClickHouse. -
-
При необходимости настройте параметры кластера. Подробное описание параметров приведено в разделе Параметры кластера ClickHouse.
-
Имена параметров следует записывать с префиксом
dcc: например,dcc_background_buffer_flush_schedule_pool_size. -
Значения параметров по умолчанию можно просмотреть в файле
roles/clickhouse_cluster/defaults/main.yml. Редактировать этот файл не рекомендуется.
Пример настроек в
clickhouse.yml# Учетные данные пользователей ClickHouse. dcc_clickhouse_user: evo-user dcc_clickhouse_password: EvoUserPassword dcc_owner_password: OwnerPassword dcc_writer_password: WriterPassword dcc_reader_password: ReaderPassword # API-порт для взаимодействия системы и ClickHouse. dcc_grpc_port: 9100 # HTTP-порт для взаимодействия системы и ClickHouse. По умолчанию порт 8123, можно скорректировать (будет запрошен установщиком системы). dcc_http_port: 8123 # HTTPS-порт для взаимодействия системы и ClickHouse. По умолчанию порт 8443, можно скорректировать (будет запрошен установщиком системы). dcc_https_port: 8443 # Параметры сервера ClickHouse. dcc_background_buffer_flush_schedule_pool_size: 6 dcc_background_common_pool_size: 4 dcc_background_distributed_schedule_pool_size: 8 dcc_background_fetches_pool_size: 4 dcc_background_message_broker_schedule_pool_size: 8 dcc_background_move_pool_size: 4 dcc_background_pool_size: 8 dcc_background_merges_mutations_concurrency_ratio: 4 dcc_background_schedule_pool_size: 64 dcc_mark_cache_size: 5368709120 dcc_max_concurrent_queries: 0 dcc_max_server_memory_usage_to_ram_ratio: 0.9 dcc_max_server_memory_usage: 0 dcc_input_format_allow_errors_num: 0 dcc_input_format_allow_errors_ratio: 1 dcc_max_execution_time: 10 dcc_queue_max_wait_ms: 1000 dcc_connect_timeout_with_failover_ms: 750 dcc_connections_with_failover_max_tries: 2 dcc_skip_unavailable_shards: 1 dcc_insert_distributed_sync: 0 dcc_prefer_localhost_replica: true dcc_allow_suspicious_ttl_expressions: 1 # Параметры таблиц MergeTree. dcc_max_bytes_to_merge_at_max_space_in_pool: 2147483648 dcc_merge_max_block_size: 2048 dcc_number_of_free_entries_in_pool_to_lower_max_size_of_merge: 4 dcc_max_suspicious_broken_parts: 500 # Директории хранения данных. dcc_hot_volume_path: /var/lib/clickhouse/hot-1/ dcc_cold_volume_path: /var/lib/clickhouse/cold-1/ -
-
-
Вернитесь в директорию, в которую загружены архивы подготовительных пакетов и плейбука.
-
Скопируйте архив подготовительных пакетов в директорию
filesраспакованного архива плейбука:cp <sysprep_archive> <clickhouse_playbook_dir>/filesЗдесь:
-
<sysprep_archive>— архив подготовительных пакетов для вашей ОС:sys-prep-clickhouse-debian.tar.gz,sys-prep-clickhouse-redos.tar.gzилиsys-prep-clickhouse-rocky.tar.gz.
-
-
Если вы включили опцию
dcc_clickhouse_ssl_enabled, настройте TLS-сертификаты для работы ClickHouse в режиме SSL.По умолчанию роль
generate_certificates, встроенная в плейбук, производит генерацию самоподписанных сертификатов. Все генерируемые сертификаты и ключи сохраняются в директории<clickhouse_playbook_dir>/files/certsна хосте, с которого производится запуск плейбука.Если у вас есть заранее подготовленные TLS-сертификаты, которые вы хотите использовать для ClickHouse, выполните следующие действия:
-
В директории
<clickhouse_playbook_dir>/filesсоздайте директориюcerts. -
Добавьте в директорию
certsфайлы сертификатов и ключей, соблюдая следующие правила именования:Имя файла Назначение ca-certificate.crtСертификат доверенного центра сертификации.
ca-certificate.keyКлюч доверенного центра сертификации.
Данный ключ используется для выпуска и подписания сертификатов, которые генерируются ролью
generate_certificatesпри работе плейбука.При использовании своих сертификатов создайте пустой файл с таким именем.
<node_fqdn>_server.crtСертификат сервера, выпущенный доверенным центром сертификации.
Сертификаты должны быть сгенерированы для каждого узла кластера ClickHouse.
<node_fqdn>_server.keyПриватный ключ для сертификата
<node_fqdn>_server.crt.Приватные ключи должны быть сгенерированы для каждого узла кластера ClickHouse.
Здесь:
-
<node_fqdn>— FQDN узла, указанное в файлеhosts.ini.
-
При запуске плейбука с заранее подготовленными сертификатами генерация сертификатов производиться не будет. Произойдет копирование подготовленных сертификатов на узлы кластера.
Если установка системы будет производиться не с того же хоста, с которого выполняется развертывание ClickHouse, скопируйте сертификат доверенного центра сертификации
<clickhouse_playbook_dir>/files/certs/ca-certificate.crtна этот хост.Путь к сертификату центра сертификации на хосте, с которого производится установка системы, потребуется указать на этапе ClickHouse setup установки системы.
-
-
Перейдите в директорию распакованного архива и запустите плейбук установки:
cd <clickhouse_playbook_dir> ansible-playbook -i inventory/hosts.ini playbooks/deploy_clickhouse_cluster.ymlОпциональные параметры запуска плейбука:
-
-u <user>— имя пользователя, от имени которого будет создана SSH-сессия для развертывания ClickHouse. -
-K— запрос пароля, если для выполнения операций от имени пользователя, который производит развертывание, требуется повышение привилегий. -
-vvv— расширенное логирование.
-
|
После установки кластера ClickHouse рекомендуется настроить балансировку запросов к его узлам. Методы балансировки запросов к СУБД описаны в разделе Настройка балансировки запросов к ClickHouse и PostgreSQL. |
Параметры кластера ClickHouse
Порты для взаимодействия системы и ClickHouse
API-порт для взаимодействия системы и ClickHouse задается в параметре dcc_grpc_port. По умолчанию установлен порт 9100.
Для взаимодействия системы и ClickHouse по протоколу HTTP по умолчанию используется порт 8123. Его можно изменить в параметре dcc_http_port.
Для взаимодействия системы и ClickHouse по протоколу HTTPS по умолчанию используется порт 8443. Его можно изменить в параметре dcc_https_port.
Параметры ClickHouse
В зависимости от планируемой нагрузки на систему и доступных вычислительных ресурсов вы можете настроить параметры сервера ClickHouse и таблиц MergeTree, перечисленные в разделе Справка о параметрах ClickHouse.
Пример настройки параметров ClickHouse
dcc_background_buffer_flush_schedule_pool_size: 6
dcc_background_common_pool_size: 4
dcc_background_distributed_schedule_pool_size: 8
dcc_background_fetches_pool_size: 4
dcc_background_message_broker_schedule_pool_size: 8
dcc_background_move_pool_size: 4
dcc_background_pool_size: 8
dcc_background_merges_mutations_concurrency_ratio: 4
dcc_background_schedule_pool_size: 64
dcc_mark_cache_size: 5368709120
dcc_max_concurrent_queries: 0
dcc_max_server_memory_usage_to_ram_ratio: 0.9
dcc_max_server_memory_usage: 0
dcc_input_format_allow_errors_num: 0
dcc_input_format_allow_errors_ratio: 1
dcc_max_execution_time: 10
dcc_queue_max_wait_ms: 1000
dcc_connect_timeout_with_failover_ms: 750
dcc_connections_with_failover_max_tries: 2
dcc_skip_unavailable_shards: 1
dcc_insert_distributed_sync: 0
dcc_prefer_localhost_replica: true
dcc_allow_suspicious_ttl_expressions: 1
Пример настройки параметров таблиц MergeTree
dcc_max_bytes_to_merge_at_max_space_in_pool: 2147483648
dcc_merge_max_block_size: 2048
dcc_number_of_free_entries_in_pool_to_lower_max_size_of_merge: 4
dcc_max_suspicious_broken_parts: 500
Директории хранения данных
Директории хранения данных ClickHouse задаются в следующих параметрах:
-
dcc_hot_volume_path— директория для хранения часто используемых данных (горячее хранение); -
dcc_cold_volume_path— директории для хранения редко используемых данных (холодное хранение).
Если хранение событий планируется в корневую директорию ClickHouse, то оставьте настройки по умолчанию.
dcc_hot_volume_path: /var/lib/clickhouse/hot-1/
dcc_cold_volume_path: /var/lib/clickhouse/cold-1/
Если планируется хранить события в отдельной директории, то:
-
Создайте необходимые директории под горячее и холодное хранение данных с помощью команды:
mkdir <dir_path>Здесь:
-
<dir_path>— путь до директории горячего или холодного хранения.
-
-
Выдайте права на созданные директории группе пользователей clickhouse с помощью команды:
chown -R clickhouse:clickhouse <dir_path>Здесь:
-
<dir_path>— путь до директории горячего или холодного хранения.
-
-
Укажите пути до созданных директорий в параметрах
dcc_hot_volume_pathиdcc_cold_volume_pathв файлеclickhouse.yml.
Пример настройки отдельных директорий
Например, необходимо хранить события ClickHouse в директориях /storage/hot (горячее хранение) и /storage/cold (холодное хранение).
Чтобы настроить хранение в этих директориях:
-
Создайте директории с помощью команд:
mkdir /storage/hot mkdir /storage/cold -
Выдайте права на директории группе пользователей clickhouse с помощью команд:
chown -R clickhouse:clickhouse /storage/hot chown -R clickhouse:clickhouse /storage/coldЕсли в директории
/storageпланируется хранение только данных событий ClickHouse, то, вместо выдачи прав на каждую поддиректорию по отдельности, вы можете выдать права сразу на всю директорию/storage:chown -R clickhouse:clickhouse /storage -
Укажите пути до директорий в параметрах
dcc_hot_volume_pathиdcc_cold_volume_pathв файлеclickhouse.yml:dcc_hot_volume_path: /storage/hot/ dcc_cold_volume_path: /storage/cold/
Была ли полезна эта страница?