Настройка нового кластера 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 любым удобным способом.
Example 1. Пример открытия файла через редактор vivi RedOS-Base.repo
-
Измените в файле значение параметра
enabled
на1
:enabled=1
-
-
Включите репозиторий RedOS-Updates:
-
Откройте файл RedOS-Updates.repo любым удобным способом.
Example 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
.
Example 3. Пример содержимого файла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.Пример содержимого файла
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 # Пароли пользователей 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).
clickhouse_user: user
clickhouse_password: password
Порт для взаимодействия SIEM и ClickHouse
API-порт для взаимодействия R-Vision SIEM и ClickHouse задается в параметре grpc_port
.
По умолчанию установлен порт 9100. Порт 9100 используется для приложения Node Exporter на рабочих и управляющих узлах кластера, поэтому рекомендуется задать другой порт, например 9101.
grpc_port: 9101
Пароли пользователей owner, writer, reader
Для работы системы необходимо, чтобы в кластере ClickHouse были настроены три пользователя с разным набором прав:
-
owner — пользователь с расширенным набором прав. Используется для создания, обновления и удаления таблиц (хранилищ событий), а также получения служебной информации.
-
writer — пользователь с правами на запись. Используется в коллекторах для записи событий в ClickHouse.
-
reader — пользователь с правами только на чтение. Используется для выполнения поисковых запросов.
Пароли для этих пользователей задаются в параметрах owner_password
, writer_password
и reader_password
соответственно. Пароли должны отвечать следующим требованиям:
-
Пароль может содержать только строчные латинские буквы (a-z), заглавные латинские буквы (A-Z) и цифры (0-9).
-
Минимальная длина пароля: 8 знаков.
owner_password: OwnerPassword
writer_password: WriterPassword
reader_password: ReaderPassword
Эти пароли необходимо использовать на этапе ClickHouse config установки R-Vision SIEM. |
Параметры сервера ClickHouse
Подробную информацию о параметрах сервера можно найти в официальной документации ClickHouse.
Вы можете настроить следующие параметры сервера ClickHouse:
-
background_buffer_flush_schedule_pool_size
— количество потоков для выполнения фонового сброса данных.Рекомендуемое значение: (1—2) * количество ядер процессора.
-
background_common_pool_size
— количество потоков для освобождения памяти.Рекомендуемое значение: (0—1) * количество ядер процессора.
-
background_distributed_schedule_pool_size
— количество потоков для выполнения фоновых задач.Рекомендуемое значение: (1—2) * количество ядер процессора.
-
background_fetches_pool_size
— количество потоков для репликации данных.Рекомендуемое значение: (0—1) * количество ядер процессора.
-
background_message_broker_schedule_pool_size
— количество потоков для фонового вывода сообщений.Рекомендуемое значение: (1—2) * количество ядер процессора.
-
background_move_pool_size
— количество потоков для перемещений данных между дисками.Рекомендуемое значение: (0—1) * количество ядер процессора.
-
background_pool_size
— количество потоков для слияний и мутаций таблиц.Рекомендуемое значение: (1—2) * количество ядер процессора.
-
background_merges_mutations_concurrency_ratio
— отношение количества слияний и мутаций, которые могут выполняться одновременно, к количеству потоковbackground_pool_size
. Например, если параметр принимает значение 2, аbackground_pool_size
— 16, то сервер ClickHouse может одновременно выполнять 32 слияния. -
background_schedule_pool_size
— количество потоков для выполнения фоновых задач.Рекомендуемое значение: (8—16) * количество ядер процессора.
-
mark_cache_size
— приблизительный размер (в байтах) кэша меток.Рекомендуемое значение: 1—5 ГБ.
-
max_concurrent_queries
— максимальное количество одновременно обрабатываемых запросов. Если принимает значение "0", то ограничений нет.Рекомендуемое значение: (1—2) * количество ядер процессора.
-
max_server_memory_usage
— максимальный объем оперативной памяти (в байтах), используемой сервером ClickHouse. Если принимает значение "0", то объем памяти определяется автоматически следующим образом: memory_amount * max_server_memory_usage_to_ram_ratio.Здесь:
-
memory_amount
— общий объем оперативной памяти. -
max_server_memory_usage_to_ram_ratio
— доля оперативной памяти, используемой сервером ClickHouse. Если принимает значение "0", то сервер может использовать всю оперативную память. По умолчанию параметр не задан и воспринимается системой равным "0.9".
Рекомендуемое значение: 90% от доступного объема оперативной памяти.
-
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
Таблицы семейства MergeTree позволяют использовать механизм репликации данных. Подробную информацию о MergeTree-параметрах можно найти в официальной документации ClickHouse.
Вы можете настроить следующие параметры MergeTree-таблиц:
-
max_bytes_to_merge_at_max_space_in_pool
— максимальный общий размер (в байтах) таблиц, которые могут быть слиты.Рекомендуемое значение: 1—4 ГБ.
-
merge_max_block_size
— количество строк, которые считываются в память из слитых таблиц.Рекомендуемое значение: 1024—4096.
-
number_of_free_entries_in_pool_to_lower_max_size_of_merge
— количество свободных записей в пуле (или реплицированной очереди), при преуменьшении которого уменьшится максимальный размер слияния.Рекомендуемое значение: 1—4.
-
max_suspicious_broken_parts
— максимальное количество испорченных таблиц. При преувеличении происходит отключение автоматического удаления.
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/