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

#database #clickhouse

#База данных #clickhouse

Вопрос:

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

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

Ответ №1:

Настройка ClickHouse

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

Установка

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

Сервер

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

 $ 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
 

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

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

 $ docker exec -it some-clickhouse-server bash
 

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

В контейнере docker сервера 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 и вашего пользователя / пароля.

Ответ №2:

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

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