Как развернуть и настроить удаленный экземпляр базы данных clickhouse с помощью docker

Недавно мне пришлось добавить clickhouse в наш технологический стек, но, к сожалению, я не нашел хороших, простых и быстрых руководств для своих нужд, и после некоторых проб и ошибок я смог сделать это сам. Чтобы помочь другим, я решил поделиться своим опытом.

Итак, как развернуть и настроить удаленный экземпляр ClickHouse DB с помощью докера?


person FrastoFresto    schedule 18.11.2020    source источник


Ответы (2)


Настройка ClickHouse

Это руководство по установке для развертывания ClickHouse с докером на удаленных серверах.

Установка

В удаленной системе должен быть предварительно установлен докер.

Сервер

Выполните следующую команду:

$ docker run -d --name some-clickhouse-server -p 8123:8123 --ulimit nofile=262144:262144 --volume=$HOME/some_clickhouse_database:/var/lib/clickhouse yandex/clickhouse-server

Сервер ClickHouse использует порт 8123 в качестве порта по умолчанию, но вы можете использовать любой другой открытый порт, но не забудьте открыть порт для внешней сети. Сервер поставляется с пользователями по умолчанию без пароля.

Клиент

Выполните следующую команду на сервере, чтобы подключиться к серверу clickhouse с пользователем по умолчанию.

$ docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server

Конфигурация

Откройте контейнер докеров сервера clickhouse

$ docker exec -it some-clickhouse-server bash

1. Включите управление доступом и учетными записями на основе SQL для default пользователя.

В контейнере докеров сервера clickhouse:

$ cd etc/clickhouse-server

Закомментируйте следующую строку в файле user.xml, чтобы включить контроль доступа:

<access_management>1</access_management>

Обратите внимание, что эта операция небезопасна, и по окончании работы вам следует изменить контроль доступа на:

<access_management>0</access_management>

2. Прослушивание других сетей:

В etc/clickhouse-server/config.xml закомментируйте <listen_host>::</listen_host>, чтобы разрешить удаленные подключения. Вы должны увидеть, что порт открыт в системной сети:

root@myvm:~# lsof -i :8123
COMMAND       PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
docker-pr 1141768 root    4u  IPv6 53989091      0t0  TCP *:8123 (LISTEN)

Создание БД с пользователями

В этой части мы создаем простую базу данных и пользователей. Затем мы предоставляем привилегии базы данных этому пользователю.

Есть два типа синхронизации, и они могут дополнять друг друга:

1. Создание пользователей

CREATE USER IF NOT EXISTS user1 IDENTIFIED WITH PLAINTEXT_PASSWORD BY 'pass1'

Вы можете проверить пользователей с помощью команды SHOW USERS.

2. Создание базы данных.

CREATE DATABASE IF NOT EXISTS db1

Вы можете проверить базы данных с помощью команды SHOW DATABASES.

3. Предоставьте пользователю права доступа к базе данных.

Вы можете предоставить пользователям ограниченные или все привилегии.

GRANT ALL PRIVILEGES ON db1.* TO user1

4. Подключите новых пользователей к базе данных.

Теперь мы можем подключиться к серверу с созданной учетной записью.

$ docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server -u user1 --password pass1 

Убедитесь, что у пользователей есть все разрешения и доступ к базам данных:

:) SHOW GRANTS
:) SHOW DATABASES

Создание образца таблицы

Clickhouse поддерживает SQL.

Чтобы создать таблицу:

:) USE db1
:) CREATE TABLE names (
 id UInt64,
 name String,
 created DateTime
 ) ENGINE = MergeTree()
 PRIMARY KEY id
 ORDER BY id;
:) SHOW TABLES

Вот и все. Вы можете подключиться к базам данных из других сетей с помощью clickhouse-client и вашего пользователя / пароля.

person FrastoFresto    schedule 18.11.2020

Клонируйте этот проект и следуйте инструкциям в файле README.md. После запуска docker compose у вас будет 2 осколка и 2 реплики clickhouse.

https://github.com/vinitk95/clickhouse-cluster.git

person Vinit Tiwari    schedule 10.02.2021