Установка и удаление БД ClickHouse
Для установки аналитической СУБД ClickHouse необходим сервер под управлением ОС семейства Linux с возможностью установки ПО «Docker» версии 17.06 или выше. Также у сервера (-ов) под управлением Linux, где будет установлена СУБД ClickHouse, должна быть версия ядра:
- 3.15 и выше при использовании файловой системы EXT4
- 4.0 и выше при использовании файловой системы XFS
Если версия ядра ОС не соответствует указанным требованиям, многие функции системы могут быть недоступны или работать не стабильно.
Системные требования к серверу зависят от:
- количества сотрудников, по которым проводится мониторинг
- сложности аналитических отчетов
- объема дополнительно загружаемых данных для аналитики
С рекомендациями по системным требованиям вы можете ознакомиться в разделе Технические требования к серверному и аппаратному оборудованию.
Подготовка сертификата и закрытого ключа для сервера с СУБД «ClickHouse»
Для того, чтобы передача данных между приложением и СУБД «ClickHouse» происходила по защищенному протоколу HTTPS, подготовьте SSL-сертификат и закрытый ключ для сервера, где будет установлена СУБД. Файл сертификата должен быть с расширением «.cer». Ключ – файл с расширением «.key».
Для получения сертификата обратитесь к администраторам инфраструктуры открытых ключей (PKI) в вашей организации.
Возможно также использование самоподписанного сертификата. Ниже приведен пример команды для его генерации при помощи OpenSSL в ОС семейства Linux:
# openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout key.key -out cert.crt
-subj "/C=RU/ST=./L=./O=./OU=./CN=server-name.domain.com/emailAddress=." \
-addext "subjectAltName = IP:1.1.1.1,DNS:server-name.domain.com"
Запуск Docker службы c СУБД «ClickHouse»
Дистрибутив СУБД «ClickHouse» предоставляется в виде образа контейнера для системы контейнерной виртуализации Docker. Для установки контейнера с СУБД на сервере под управлением OC семейства Linux выполните следующие действия:
- Установите на сервер ПО «Docker».
- Загрузите переданный архив с образом контейнера на сервер.
- Распакуйте архив и выполните загрузку образа в локальное хранилище Docker:
# gunzip infomaximum-clickhouse-24.3.2.23.tar.gz
# docker load < infomaximum-clickhouse-24.3.2.23.tar.gz
- Выполните команду для запуска Docker Swarm (необходим для использования секретов):
# docker swarm init --advertise-addr 127.0.0.1:2377 --listen-addr 127.0.0.1:2377
- Создайте секреты Docker, которые предназначены для защищенного хранения чувствительных данных:
- создайте секреты с данными пользователя (логин и пароль) администратора СУБД «ClickHouse»:
# echo -n "infomaximum_user" | docker secret create infomaximum_app_user
# echo -n "b5w4GDSg36" | sha256sum | awk '{print $1}' | docker secret create infomaximum_app_user_password_hash -
- создайте секреты с данными (логин и пароль) рядового пользователя СУБД «ClickHouse» (с правами только на чтение):
# echo -n "infomaximum_read_user" | docker secret create infomaximum_external_user
# echo -n "m26dhdhFdgj" | sha256sum | awk '{print $1}' | docker secret create infomaximum_external_user_password_hash -
- создайте секреты с SSL-сертификатом и ключом:
# docker secret create infomaximum_clickhouse.crt cert.crt
# docker secret create infomaximum_clickhouse.key key.key
# openssl dhparam 4096 - | docker secret create infomaximum_clickhouse_dhparam.pem -
- создайте секреты с данными пользователя (логин и пароль) администратора СУБД «ClickHouse»:
- Создайте тома (volume) Docker. Они служат для постоянного хранения данных работы контейнера:
# docker volume create infomaximum-clickhouse
# docker volume create infomaximum-clickhouse-log
- Создайте службу (service) командой Docker:
# docker service create --secret infomaximum_app_user \ --secret infomaximum_app_user_password_hash \ --secret infomaximum_external_user \ --secret infomaximum_external_user_password_hash \ --secret infomaximum_clickhouse_dhparam.pem \ --secret infomaximum_clickhouse.crt \ --secret infomaximum_clickhouse.key \ --publish published=8123,target=8123,mode=host \ --mount type=volume,src=infomaximum-clickhouse,target=/var/lib/clickhouse/ \ --mount type=volume,src=infomaximum-clickhouse-log,target=/var/log/clickhouse-server \ --restart-max-attempts 5 \ --restart-condition "on-failure" \ infomaximum/infomaximum-clickhouse:24.3.2.23
Если служба удачно запущена, результатом выполнения команды должно быть сообщение: “verify: Service converged”.
С этого момента служба с контейнером должна начать работать. Чтобы убедиться, что СУБД работает нормально, перейдите в браузере на страницу https://<адрес сервера>:8123/ping или используйте команду:
# curl https://<адрес сервера>:8123/ping
Если всё настроено верно, в браузере появится сообщение: «ОК».
Если сообщение не появляется:
- проверьте, что контейнер работает, выполнив команду:
# docker ps
- обратитесь к логам приложения, выполнив команду:
# docker service logs -f infomaximum-clickhouse
- убедитесь, что открыты сетевые проходы до сервера
Проверьте, не была ли допущена ошибка в шагах запуска, и попробуйте повторить создание службы.
Для удаления нерабочей службы используйте команду:
# docker service rm infomaximum-clickhouse
Переменные окружения
При запуске контейнера можно передавать переменные окружения, которые модифицируют конфигурационные файлы приложения. Доступные параметры представлены в таблице.
Параметр | Значение | Описание |
---|---|---|
APP_USER_ACCESS_MANAGEMENT | 0 или 1 По умолчанию — 0 | Запрещает/разрешает от имени администратора СУБД ClickHouse создавать дополнительных пользователей и регламентировать права доступа через SQL-запросы |
LIMIT_MEMORY | По умолчанию — 0.9 (90%) | Коэффициент максимального потребления оперативной памяти сервером для обработки всех SQL-запросов |
PROMETHEUS | true или false По умолчанию — false | Включает передачу метрик для Prometheus Для корректной работы необходимо открыть порт 9363 в контейнере. Для этого в команду запуска службы добавьте: --publish published=9363,target=9363 |
SIZE_LOG_FILE | Размер лога в мегабайтах. По умолчанию — 1000 (1 ГБ) | Размер технических логов clickhouse-server.log и clickhouse-server.err.log |
COUNT_LOG_FILE | По умолчанию — 10 | Количество хранимых технических логов |
Подробнее о Prometheus в документации ClickHouse.
Удаление СУБД ClickHouse
Для удаления СУБД ClickHouse выполните следующие команды на сервере, где она установлена:
# docker service rm infomaximum-clickhouse
# docker secret rm infomaximum_app_user infomaximum_app_user_password_hash infomaximum_clickhouse.crt infomaximum_clickhouse.key infomaximum_clickhouse_dhparam.pem infomaximum_external_user infomaximum_external_user_password_hash
# docker volume rm infomaximum-clickhouse infomaximum-clickhouse-log
# docker swarm leave –force
Найти команды для удаления Docker для конкретного дистрибутива Linux можно в официальной документации.
Была ли статья полезна?