Базовая настройка ClickHouse
Основные настройки конфигурации
Основные конфигурационные файлы ClickHouse находятся в директории /etc/clickhouse-server/
:
/etc/clickhouse-server/config.xml
- основной файл конфигурации сервера/etc/clickhouse-server/users.xml
- файл конфигурации пользователей и прав доступа
Дополнительно, в ClickHouse используются директории для удобного управления конфигурациями:
/etc/clickhouse-server/conf.d/
- предназначена для дополнительных конфигурационных файлов сервера. В эту директорию можно добавлять файлы с расширениями для базовой конфигурации сервера, чтобы не изменять основнойconfig.xml
./etc/clickhouse-server/users.d/
- используется для управления конфигурацией пользователей. В эту директорию можно добавлять файлы с конфигурациями пользователей, что облегчает управление правами доступа и настройками пользователей.
Все дополнительные конфигурации должны иметь формат .xml
, как и основной файл конфигурации.
Настройка параметров сервера
Чтобы ClickHouse работал стабильно и эффективно, важно правильно настроить параметры сервера.
Логирование
Логирование помогает отслеживать работу ClickHouse и выявлять возможные проблемы.
<clickhouse>
<logger>
<level>information</level>
<log>/var/log/clickhouse-server/clickhouse-server.log</log>
<errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>
<size>100M</size>
<count>10</count>
</logger>
</clickhouse>
Расположение основны логов определяется параметрами <log>
(логи со всеми сообщениями) и <errorlog>
(логи содержащие ошибки). Параметры <size>
и count
определяют настройки ротации логов, а <level>
задаёт уровень логирования.
Порты соединений
Для настройки доступа к ClickHouse через сеть необходимо открыть нужные порты и настроить межсетевой экран для ограничения доступа. Для настройки основных портов используйте следующую конфигурацию:
<clickhouse>
<http_port>8123</http_port>
<tcp_port>9000</tcp_port>
</clickhouse>
- Порт для HTTP (
<http_port>
). Порт 8123 используется по умолчанию для HTTP-запросов. - Порт для TCP (
<tcp_port>
). Порт 9000 используется для TCP-соединений, которые ClickHouse использует для работы с клиентами и другими серверами.
Также можно настроить SSL для TCP, чтобы шифровать данные, передаваемые между клиентами и сервером. В таком случае рекомендуется использовать другой порт, например 9440, для зашифрованных соединений. По умолчанию рекомендуется разрешить доступ к следующим портам:
9000/tcp
- для нативного TCP протокола ClickHouse8123/tcp
- для HTTP интерфейса ClickHouse
Для доступности портов внешним клиентом используйте следующие команды: Для систем на базе Debian, использующих ufw
:
sudo ufw allow 9000/tcp # Открыть порт для TCP соединений ClickHouse
sudo ufw allow 8123/tcp # Открыть порт для HTTP интерфейса ClickHouse
sudo ufw reload # Применить изменения
Для систем на базе RHEL, использующих firewalld
:
sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent # Открыть порт для TCP соединений ClickHouse
sudo firewall-cmd --zone=public --add-port=8123/tcp --permanent # Открыть порт для HTTP интерфейса ClickHouse
sudo firewall-cmd --reload # Применить изменения
Полный список портов, используемых clickhouse:
Порт | Описание |
---|---|
8123 | Стандартный HTTP-порт. |
8443 | Стандартный HTTP SSL/TLS-порт. |
9000 | Порт нативного протокола (также известен как ClickHouse TCP-протокол). Используется приложениями и процессами ClickHouse, такими как clickhouse-server , clickhouse-client и родные инструменты ClickHouse. Используется для межсерверной коммуникации для распределенных запросов. |
9004 | Порт эмуляции MySQL. |
9005 | Порт эмуляции PostgreSQL (также используется для безопасного соединения, если включен SSL для ClickHouse). |
9009 | Порт межсерверной коммуникации для низкоуровневого доступа к данным. Используется для обмена данными, репликации и межсерверной коммуникации. |
9010 | SSL/TLS для межсерверной коммуникации. |
9011 | Порт нативного протокола PROXYv1. |
9019 | Порт JDBC моста. |
9100 | Порт gRPC. |
9181 | Рекомендуемый порт ClickHouse Keeper. |
9234 | Рекомендуемый порт ClickHouse Keeper Raft (также используется для безопасной коммуникации, если <secure>1</secure> включен). |
9363 | Стандартный порт для метрик Prometheus. |
9281 | Рекомендуемый порт Secure SSL для ClickHouse Keeper. |
9440 | SSL/TLS порт нативного протокола. |
42000 | Стандартный порт для Graphite. |
Пути к файлам данных
Правильная настройка путей к данным помогает организовать хранение данных, временных файлов и пользовательских данных.
Пример конфигурации представлен ниже:
<clickhouse>
<path>/var/lib/clickhouse/</path>
<tmp_path>/var/lib/clickhouse/tmp/</tmp_path>
<clickhouse>
- Основной путь для хранения данных (
<path>
). Рекомендуется использовать выделенный раздел или диск для хранения данных, особенно если вы работаете с большими объемами. - Путь для временных файлов (
<tmp_path>
). Временные файлы часто создаются при выполнении крупных запросов или при сортировке данных. Рекомендуется указывать путь на диск с высокой скоростью записи и достаточным свободным пространством.
Настройка пользователей и прав доступа
Правильная настройка пользователей и прав доступа в ClickHouse необходима для обеспечения безопасности и управления доступом к данным.
Настройка пользователей
Пользователи в ClickHouse настраиваются с помощью дополнительных конфигурационных файлов в директории /etc/clickhouse-server/users.d
. Дополнительные конфигурационные файлы позволяют добавить новых пользователей, задать пароли и определить, из каких сетей пользователь может обращаться к серверу ClickHouse.
Пример настройки пользователя:
<clickhouse>
<users>
<default>
<password>your_password</password>
<networks>
<ip>::/0</ip>
</networks>
<profile>default</profile>
</default>
</users>
</clickhouse>
Описание параметров:
-
<default>
- имя пользователя. По умолчанию, в ClickHouse существует пользователь default с базовыми настройками. Вы можете создавать новых пользователей, добавляя дополнительные блоки с именами пользователей вместо default. -
<password>
- пароль пользователя. Пароль может быть задан:-
В открытом виде - пароль прописывается в исходном виде, например,
<password>MyStrongP@ssWoRd</password>
. -
В виде хеша - вместо самого пароля задаётся его хэш (например SHA256). Для этого вместо тега
<password>
можно использовать такие теги, как<password_sha256_hex>
или<password_double_sha1_hex>
, например:<password_sha256_hex>c2a1f9160a14a9d2e0eced4b5cf5998e5eebc54cf45b8e3742d2a9c2b1f23368</password_sha256_hex>
-
-
<networks>
- блок определяет, с каких IP-адресов или сетей пользователь может подключаться к ClickHouse.<ip>::/0</ip>
- разрешает доступ со всех IP-адресов. Это подходит для тестовой среды, но в production рекомендуется ограничить доступ конкретными сетями или IP-адресами для повышения безопасности.Например, чтобы разрешить доступ только из локальной сети, можно использовать:
<ip>192.168.0.0/24</ip>
-
<profile>
- определяет ограничения и права для пользователя, такие как лимиты на использование ресурсов, доступ к базам данных, таблицам и т.д.
Настройка прав доступа
Права доступа в ClickHouse управляются через профили пользователей и права, присваиваемые этим профилям. Вы можете ограничить доступ к базам данных, таблицам, а также ограничивать список операций которые может выполнять пользователь (например, SELECT, INSERT, DROP).
Например, в конфигурации ниже для пользователя устанавливается ограничение по максимальному количеству используемой памяти и типу операций, которые может выполнять пользователь - только операции чтения:
<clickhouse>
<profiles>
<restricted_user>
<max_memory_usage>1000000000</max_memory_usage>
<readonly>1</readonly>
</restricted_user>
</profiles>
</clickhouse>
Подробнее про профили вы можете прочитать в официальной документации clickhouse. После внесения изменений перезапустите сервер ClickHouse для применения настроек:
sudo systemctl restart clickhouse-server
Оптимизация хранения данных
Сжатие данных
В clickhouse может активно использоваться сжатие, которое позволяет достигать уменьшения объема хранимых данных в несколько раз. Пример конфигурации представлен ниже:
<clickhouse>
<compression>
<case>
<min_part_size>10000000000</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>zstd</method>
</case>
</compression>
</clickhouse>
Описание параметров:
-
<min_part_size>
- определяет минимальный размер части данных (в байтах), к которой будет применяться указанная схема сжатия.Обычно стоит оставить этот параметр на уровне 10000000000 (10 ГБ), если у вас большие объемы данных. Для меньших объемов данных этот параметр может быть уменьшен. Однако, в большинстве случаев лучше оставить значение по умолчанию, так как это обеспечивает хорошее соотношение между степенью сжатия и производительностью.
-
<min_part_size_ratio>
- определяет минимальное отношение размера части данных к размеру всего раздела, при котором будет применяться схема сжатия.Значение 0.01 означает, что сжатие будет применяться, если размер части данных составляет не менее 1% от общего объема раздела. Это значение можно оставить по умолчанию, так как оно хорошо сбалансировано для большинства случаев.
-
<method>
- определяет метод сжатия, который будет использоваться для данных. В данном примере используется метод zstd (Zstandard), который обеспечивает высокую степень сжатия при приемлемой скорости работы.
Рекомендации по использованию методов сжатия:
zstd
- универсальный и эффективный метод, подходящий для большинства сценариев.lz4
- используется, если важна максимальная скорость обработки данных при меньшей степени сжатия.
Если у вас есть специфические требования к сжатию (например, более высокая степень сжатия или компромисс в пользу скорости), вы можете рассмотреть другие методы, такие как deflate
или gzip
. Но в большинстве случаев zstd
является лучшим выбором для ClickHouse.