Установка и первоначальная настройка СУБД ClickHouse на Debian Linux

Итак, если коротко, то ClickHouse — это высокопроизводительная аналитическая СУБД с открытым исходным кодом от компании Яндекс.

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

Давайте установим СУБД ClickHouse на Debian 9 (stretch).

(Статья актуализирована 07.07.2018)

Для начала немного полезных ссылок на официальные источники и полезные статьи в Интернет.

Официальный сайт ClickHouse
Официальный блог
Вся документация на одной странице, по разделам.
Видео-презентация «ClickHouse: как сделать самую быструю распределённую аналитическую СУБД» (Виктор Тарнавский)
Статья на Habrahabr: «ClickHouse: очень быстро и очень удобно» (Виктор Тарнавский)
Статья на Habrahabr: «Как запустить ClickHouse своими силами и выиграть джекпот» (Компания СМИ2)
Статья на Habrahabr: «Масштабирование ClickHouse, управление миграциями и отправка запросов из PHP в кластер» (Компания СМИ2)

Установка на Debian 9

Исходные данные: Debian 9.4 (stretch)

Системные требования ClickHouse: Linux, x86_64 с поддержкой SSE 4.2.

Поэтому проверим эти требования:

uname -sm

Результат:
Linux x86_64
Отлично.

И поддержка SSE 4.2:

grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"

Результат:
SSE 4.2 supported
Отлично, продолжаем.

Добавление репозитария:

wget --quiet -O - https://repo.yandex.ru/clickhouse/CLICKHOUSE-KEY.GPG | apt-key add -
echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" > /etc/apt/sources.list.d/clickhouse.list
apt-get update

Установка ClickHouse:

apt-get install -y clickhouse-server clickhouse-client

Запустим ClickHouse:

/etc/init.d/clickhouse-server start

Проверим, что ClickHouse запустился и слушает порты 8123, 9000, 9009:

# netstat -ltupn|grep clickhouse
tcp        0      0 127.0.0.1:9009          0.0.0.0:*               LISTEN      9462/clickhouse-ser
tcp        0      0 127.0.0.1:8123          0.0.0.0:*               LISTEN      9462/clickhouse-ser
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      9462/clickhouse-ser
tcp6       0      0 ::1:9009                :::*                    LISTEN      9462/clickhouse-ser
tcp6       0      0 ::1:8123                :::*                    LISTEN      9462/clickhouse-ser
tcp6       0      0 ::1:9000                :::*                    LISTEN      9462/clickhouse-ser

Выполним первоначальную настройку ClickHouse.

По-умолчанию к ClickHouse может подключиться любой пользователь с localhost, т.к. пароль не установлен, исправим это.

Разработчики позаботились о том чтобы не хранить пароль в открытом виде в файле конфигурации, а хранить только его хэш, создадим его:

echo -n "MYPASSWORD" | sha256sum | tr -d '-'

Теперь запишем хэш пароля в файл /etc/clickhouse-server/users.xml
Ищем секцию users, а в ней секцию default, потом заменяем строку

<password></password>

на

<password_sha256_hex>2b61e9c9f23b6ab34031f3beb5d5f8f8da5c59c310d34c1efb83962049b42e1c</password_sha256_hex>

Так же ограничим доступ по IP адресу только с localhost, для этого в секции

<networks incl="networks" replace="replace">

после строки

<ip>::/0</ip>

добавим

<ip>127.0.0.1</ip>

Итого у нас стало:

<networks incl="networks" replace="replace">
	<ip>::1</ip>
	<ip>127.0.0.1</ip>
</networks>

Устанавливаем пароль для подключения в режиме readonly и ограничиваем доступ по IP адресу только с localhost, итоговый вид секции:

        <readonly>
            <password_sha256_hex>2b61e9c9f23b6ab34031f3beb5d5f8f8da5c59c310d34c1efb83962049b42e1c</password_sha256_hex>
            <networks incl="networks" replace="replace">
                <ip>::1</ip>
                <ip>127.0.0.1</ip>
            </networks>
            <profile>readonly</profile>
            <quota>default</quota>
        </readonly>

Установим ограничение на использование памяти при запросах в 20 MB:

<max_memory_usage>21474836480</max_memory_usage>

Сохраняем файл /etc/clickhouse-server/users.xml и выходим.

Установим права на файл с настройками доступов и владельца файлов конфигурации:

chmod 640 /etc/clickhouse-server/users.xml
chown clickhouse:clickhouse /etc/clickhouse-server/{config.xml,users.xml}

Создаем SSL-сертификат для подключения к ClickHouse с использованием шифрования:

openssl req -subj "/CN=localhost" -new -newkey rsa:2048 -days 3650 -nodes -x509 -keyout /etc/clickhouse-server/server.key -out /etc/clickhouse-server/server.crt
openssl dhparam -out /etc/clickhouse-server/dhparam.pem 2048
chmod 640 /etc/clickhouse-server/{dhparam.pem,server.key,server.crt}
chown clickhouse:clickhouse /etc/clickhouse-server/{dhparam.pem,server.key,server.crt}

Сертификат мы создали, для того чтобы использовать безопасное соединение нужно в файле /etc/clickhouse-server/config.xml раскомментировать строку

<https_port>8443</https_port>

Теперь перезапускаем СlickHouse:

/etc/init.d/clickhouse-server restart

Проверяем:

/etc/init.d/clickhouse-server status

Результат:

clickhouse-server service is running

Проверяем открытые порты:

tcp        0      0 127.0.0.1:9009          0.0.0.0:*               LISTEN      19009/clickhouse-se
tcp        0      0 127.0.0.1:8443          0.0.0.0:*               LISTEN      19009/clickhouse-se
tcp        0      0 127.0.0.1:8123          0.0.0.0:*               LISTEN      19009/clickhouse-se
tcp        0      0 127.0.0.1:9440          0.0.0.0:*               LISTEN      19009/clickhouse-se
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      19009/clickhouse-se
tcp6       0      0 ::1:9009                :::*                    LISTEN      19009/clickhouse-se
tcp6       0      0 ::1:8123                :::*                    LISTEN      19009/clickhouse-se
tcp6       0      0 ::1:8443                :::*                    LISTEN      19009/clickhouse-se
tcp6       0      0 ::1:9440                :::*                    LISTEN      19009/clickhouse-se
tcp6       0      0 ::1:9000                :::*                    LISTEN      19009/clickhouse-se

Как мы видим, теперь ClickHouse может принимать соединения с шифрованием по порту 8443.

Попробуем подключиться консольным клиентом:

clickhouse-client -u default --password MYPASSWORD -m

Если все сделано правильно, то мы увидим приглашение консольного клиента вида:

ClickHouse client version 1.1.54388.
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 1.1.54388.

myserver.local :) 

Если Вы не устанавливали пароль, то подключиться можно так:

clickhouse-client -m

В следующей статье мы попробуем создать тестовую БД, наполнить её данными, рассмотрим вопросы бэкапа базы и восстановления, подключим GUI clickhouse-frontend.

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


Хотите оставить комментарий?