Настройка нового кластера ClickHouse
Установка и настройка кластера ClickHouse с нуля выполняется автономно с помощью Ansible-плейбука и рассчитана на Red OS 7.3. Плейбук содержится в архиве clickhouse_offline-playbook.zip, который поставляется сетевыми инженерами по запросу.
Данная инструкция описывает установку и настройку кластера ClickHouse с нуля. При необходимости настроить уже существующий кластер ClickHouse, обратитесь к разделу Настройка существующего кластера ClickHouse. |
Подготовка к установке
Во время развертывания кластера Kubernetes с помощью плейбука kubespray происходит автоматическое отключение репозиториев Red OS. Перед установкой ClickHouse необходимо включить эти репозитории. Для этого на каждом узле кластера выполните следующие действия:
-
Перейдите в директорию
/etc/yum.repos.d
, содержащую конфигурационные файлы репозиториев:cd /etc/yum.repos.d
-
Включите репозиторий RedOS-Base:
-
Откройте файл RedOS-Base.repo любым удобным способом.
Пример 1. Пример открытия файла через редактор vivi RedOS-Base.repo
-
Измените в файле значение параметра
enabled
на1
:enabled=1
-
-
Включите репозиторий RedOS-Updates:
-
Откройте файл RedOS-Updates.repo любым удобным способом.
Пример 2. Пример открытия файла через редактор vivi RedOS-Updates.repo
-
Измените в файле значение параметра
enabled
на1
:enabled=1
-
Установка ClickHouse
Действия выполняются на управляющем узле кластера. |
Чтобы запустить установку:
-
Скачайте и распакуйте архив clickhouse_offline-playbook.zip на управляющем узле кластера Kubernetes.
-
Перейдите в директорию распакованного архива и измените файл hosts.ini:
-
В разделе
[clickhouse]
укажите полные доменные адреса (FQDN) машин, на которых будет развернут кластер ClickHouse. Рядом с каждым адресом необходимо также указать ее идентификаторid
. Рекомендуется указыватьid
по порядку начиная с "1". -
В разделе
[clickhouse:vars]
укажите данные учетной записи с правами администратора для работы под суперпользователем. Если к узлам кластера настроен SSH-доступ, то удалите строкуansible_password
.
Пример содержимого файла
hosts.ini
[clickhouse] localhost.localdomain1 id=1 localhost.localdomain2 id=2 [clickhouse:vars] ansible_user=user ansible_password=password
-
-
Перейдите в директорию
roles/clickhouse-role/defaults
в распакованном архиве и настройте параметры кластера в файле main.yml. Перечень параметров приведен в разделе Параметры кластера ClickHouse данной статьи.Пример содержимого файла
main.yml
clickhouse_version: "24.3.1.2672" # Учетные данные для подключения к СУБД. clickhouse_user: user clickhouse_password: password # Переменные для файлов конфигурации ClickHouse и Keeper. Оставить без изменений. clickhouse_servers: "{{ groups['clickhouse'] }}" # API-порт для взаимодействия SIEM и ClickHouse. grpc_port: 9101 # HTTP-порт для взаимодействия SIEM и Clickhouse. По умолчанию порт 8123, можно скорректировать (будет запрошен установщиком SIEM). http_port: 8123 # Пароли пользователей owner, writer, reader. owner_password: OwnerPassword writer_password: WriterPassword reader_password: ReaderPassword # Параметры сервера ClickHouse. background_buffer_flush_schedule_pool_size: 6 background_common_pool_size: 4 background_distributed_schedule_pool_size: 8 background_fetches_pool_size: 4 background_message_broker_schedule_pool_size: 8 background_move_pool_size: 4 background_pool_size: 8 background_merges_mutations_concurrency_ratio: 4 background_schedule_pool_size: 64 mark_cache_size: 5368709120 max_concurrent_queries: 0 max_server_memory_usage: 0 # Параметры таблиц MergeTree. max_bytes_to_merge_at_max_space_in_pool: 2147483648 merge_max_block_size: 2048 number_of_free_entries_in_pool_to_lower_max_size_of_merge: 4 max_suspicious_broken_parts: 500 # Директории хранения данных. hot_volume_path: /var/lib/clickhouse/hot-1/ cold_volume_path: /var/lib/clickhouse/cold-1/
-
Перейдите в директорию распакованного архива и запустите плейбук установки:
ansible-playbook main.yml -i hosts.ini -K -vvv
Плейбук запросит пароль для повышения привилегий учетной записи до суперпользователя, после чего начнется установка.
Параметры кластера ClickHouse
Учетные данные для подключения к СУБД
В целях повышения безопасности, для подключения к СУБД ClickHouse и непосредственного управления самой базой данных, плейбук создает специального пользователя. Учетные данные этого пользователя задаются в следующих параметрах:
-
clickhouse_user
— имя пользователя. -
clickhouse_password
— пароль пользователя. Пароль может содержать только строчные латинские буквы (a-z), заглавные латинские буквы (A-Z) и цифры (0-9).
Порты для взаимодействия SIEM и ClickHouse
API-порт для взаимодействия R-Vision SIEM и ClickHouse задается в параметре grpc_port
.
По умолчанию установлен порт 9100. Порт 9100 используется для приложения Node Exporter на рабочих и управляющих узлах кластера, поэтому рекомендуется задать другой порт, например 9101.
Для взаимодействия SIEM и Clickhouse по протоколу HTTP по умолчанию используется порт 8123. Его можно изменить в параметре http_port
.
Пароли пользователей owner, writer, reader
Для работы системы необходимо, чтобы в кластере ClickHouse были настроены три пользователя с разным набором прав:
-
owner — пользователь с расширенным набором прав. Используется для создания, обновления и удаления таблиц (хранилищ событий), а также получения служебной информации.
-
writer — пользователь с правами на запись. Используется в коллекторах для записи событий в ClickHouse.
-
reader — пользователь с правами только на чтение. Используется для выполнения поисковых запросов.
Пароли для этих пользователей задаются в параметрах owner_password
, writer_password
и reader_password
соответственно. Пароли должны отвечать следующим требованиям:
-
Пароль может содержать только строчные латинские буквы (a-z), заглавные латинские буквы (A-Z) и цифры (0-9).
-
Минимальная длина пароля: 8 знаков.
Эти пароли необходимо использовать на этапе ClickHouse config установки R-Vision SIEM. |
Параметры ClickHouse
В зависимости от планируемой нагрузки на систему и доступных вычислительных ресурсов вы можете настроить параметры сервера ClickHouse и таблиц MergeTree, перечисленные в разделе Параметры ClickHouse.
Пример настройки параметров ClickHouse
background_buffer_flush_schedule_pool_size: 6
background_common_pool_size: 4
background_distributed_schedule_pool_size: 8
background_fetches_pool_size: 4
background_message_broker_schedule_pool_size: 8
background_move_pool_size: 4
background_pool_size: 8
background_merges_mutations_concurrency_ratio: 4
background_schedule_pool_size: 64
mark_cache_size: 5368709120
max_concurrent_queries: 0
max_server_memory_usage: 0
Пример настройки параметров таблиц MergeTree
max_bytes_to_merge_at_max_space_in_pool: 2147483648
merge_max_block_size: 2048
number_of_free_entries_in_pool_to_lower_max_size_of_merge: 4
max_suspicious_broken_parts: 500
Директории хранения данных
Директории хранения данных ClickHouse задаются в следующих параметрах:
-
hot_volume_path
— директория для хранения часто используемых данных (горячее хранение); -
cold_volume_path
— директории для хранения редко используемых данных (холодное хранение).
Если хранение событий планируется в корневую директорию ClickHouse, то оставьте настройки по умолчанию.
hot_volume_path: /var/lib/clickhouse/hot-1/
cold_volume_path: /var/lib/clickhouse/cold-1/
Если планируется хранить события в отдельной директории, то:
-
Создайте необходимые директории под горячее и холодное хранение данных с помощью команды:
mkdir путь/до/директории
-
Выдайте права на созданные директории группе пользователей clickhouse с помощью команды:
chown -R clickhouse:clickhouse путь/до/директории
-
Укажите пути до созданных директорий в параметрах
hot_volume_path
иcold_volume_path
.
Пример настройки отдельных директорий
Например, необходимо хранить события 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
-
Укажите пути до директорий в параметрах
hot_volume_path
иcold_volume_path
в файле main.yml:hot_volume_path: /storage/hot/ cold_volume_path: /storage/cold/