Интеграция Google Cloud Storage с ClickHouse
Если вы используете ClickHouse Cloud на Google Cloud, эта страница не применима, так как ваши сервисы уже используют Google Cloud Storage. Если вы хотите SELECT
или INSERT
данные из GCS, пожалуйста, обращайтесь к gcs
табличной функции.
ClickHouse признает, что GCS является привлекательным решением для хранения для пользователей, стремящихся разделить хранение и вычисления. Для помощи в этом поддерживается использование GCS в качестве хранилища для движка MergeTree. Это позволит пользователям воспользоваться масштабируемостью и экономическими преимуществами GCS, а также производительностью вставок и запросов движка MergeTree.
MergeTree с поддержкой GCS
Создание диска
Чтобы использовать корзину GCS в качестве диска, сначала необходимо объявить ее в конфигурации ClickHouse в файле под conf.d
. Пример декларации диска GCS показан ниже. Эта конфигурация включает несколько разделов для настройки «диска» GCS, кеша и политики, которая указывается в DDL-запросах при создании таблиц на диске GCS. Каждый из этих разделов описан ниже.
Конфигурация хранения > диски > gcs
Эта часть конфигурации показана в выделенном разделе и указывает, что:
- Пакетные удаления не должны выполняться. GCS в настоящее время не поддерживает пакетные удаления, поэтому автоопределение отключено, чтобы подавить сообщения об ошибках.
- Тип диска —
s3
, так как используется API S3. - Конечная точка, предоставленная GCS.
- HMAC ключ и секрет сервисного аккаунта.
- Путь к метаданным на локальном диске.
Конфигурация хранения > диски > кеш
Пример конфигурации, выделенный ниже, включает 10Gi кеша в памяти для диска gcs
.
Конфигурация хранения > политики > gcs_main
Политики конфигурации хранения позволяют выбирать, где будут храниться данные. Выделенная ниже политика позволяет хранить данные на диске gcs
, указывая политику gcs_main
. Например, CREATE TABLE ... SETTINGS storage_policy='gcs_main'
.
Полный список параметров, относящихся к этому объявлению диска, можно найти здесь.
Создание таблицы
Предполагая, что вы настроили свой диск для использования корзины с доступом на запись, вы должны иметь возможность создать таблицу, как в примере ниже. Для краткости мы используем подмножество колонок такси Нью-Йорка и стримим данные напрямую в таблицу на основе GCS:
В зависимости от оборудования, эта последняя вставка 1 миллиона строк может занять несколько минут для выполнения. Вы можете подтвердить процесс через таблицу system.processes. Не стесняйтесь увеличивать количество строк до предела в 10 миллионов и исследовать некоторые примеры запросов.
Обработка репликации
Репликация с дисками GCS может быть выполнена с использованием движка таблиц ReplicatedMergeTree
. См. руководство по репликации одного шарда в двух регионах GCP с использованием GCS для получения подробностей.
Узнайте больше
XML API Cloud Storage совместим с некоторыми инструментами и библиотеками, которые работают с сервисами, такими как Amazon Simple Storage Service (Amazon S3).
Для получения дополнительной информации о настройке потоков смотрите Оптимизация производительности.
Использование Google Cloud Storage (GCS)
Объектное хранилище используется по умолчанию в ClickHouse Cloud, вам не нужно следовать этой процедуре, если вы работаете в ClickHouse Cloud.
Планирование развертывания
Этот учебник написан для описания развертывания реплицированного ClickHouse, работающего в Google Cloud и использующего Google Cloud Storage (GCS) в качестве диска хранения ClickHouse «типа».
В учебнике вы развернете узлы сервера ClickHouse в виртуальных машинах Google Cloud Engine, каждая из которых будет иметь ассоциированную корзину GCS для хранения. Репликация координируется набором узлов ClickHouse Keeper, также развернутых в виде виртуальных машин.
Примеры требований к высокой доступности:
- Два узла сервера ClickHouse в двух регионах GCP.
- Две корзины GCS, развернутые в тех же регионах, что и два узла сервера ClickHouse.
- Три узла ClickHouse Keeper, два из которых развернуты в тех же регионах, что и узлы сервера ClickHouse. Третий может быть в том же регионе, что и один из первых двух узлов Keeper, но в другой зоне доступности.
ClickHouse Keeper требует два узла для работы, поэтому необходимо три узла для высокой доступности.
Подготовка виртуальных машин
Разверните пять виртуальных машин в трех регионах:
Регион | Сервер ClickHouse | Корзина | ClickHouse Keeper |
---|---|---|---|
1 | chnode1 | bucket_regionname | keepernode1 |
2 | chnode2 | bucket_regionname | keepernode2 |
3 * | keepernode3 |
*
Это может быть другая зона доступности в том же регионе, что и 1 или 2.
Развертывание ClickHouse
Разверните ClickHouse на двух хостах, в примерах конфигураций они названы chnode1
, chnode2
.
Поместите chnode1
в один регион GCP, а chnode2
— во второй. В этом руководстве используются us-east1
и us-east4
для виртуальных машин вычислительного движка, а также для корзин GCS.
Не запускайте clickhouse server
, пока он не будет настроен. Просто установите его.
Смотрите инструкции по установке, когда выполняете шаги развертывания на узлах сервера ClickHouse.
Развертывание ClickHouse Keeper
Разверните ClickHouse Keeper на трех хостах, в примерах конфигураций они названы keepernode1
, keepernode2
и keepernode3
. keepernode1
может быть развернут в том же регионе, что и chnode1
, keepernode2
с chnode2
, а keepernode3
в любом регионе, но в другой зоне доступности от узла ClickHouse в этом регионе.
Смотрите инструкции по установке, когда выполняете шаги развертывания на узлах ClickHouse Keeper.
Создайте две корзины
Два сервера ClickHouse будут находиться в разных регионах для обеспечения высокой доступности. Каждый из них будет иметь корзину GCS в том же регионе.
В Cloud Storage > Корзины выберите СОЗДАТЬ КОРЗИНУ. Для этого учебника создаются две корзины, одна в us-east1
, а другая в us-east4
. Корзины являются однорегиональными, стандартного класса хранения и не публичные. Когда появится запрос, включите предотвращение публичного доступа. Не создавайте папки, они будут созданы, когда ClickHouse запишет в хранилище.
Если вам нужны пошаговые инструкции по созданию корзин и HMAC ключа, разверните Создать корзины GCS и HMAC ключ и следуйте инструкциям:
Создание корзин GCS и ключа HMAC
ch_bucket_us_east1

ch_bucket_us_east4

Генерация ключа доступа
Создание секретного ключа и HMAC для сервисного аккаунта
Откройте Cloud Storage > Настройки > Взаимодействие и выберите существующий Ключ доступа или СОЗДАЙТЕ КЛЮЧ ДЛЯ СЕРВИСНОГО АККАНТА. Этот гид охватывает путь для создания нового ключа для нового сервисного аккаунта.

Добавить новый сервисный аккаунт
Если это проект без существующего сервисного аккаунта, СОЗДАЙТЕ НОВЫЙ АККАНТ.

Создание сервисного аккаунта включает три шага. На первом шаге дайте аккаунту значимое имя, идентификатор и описание.

В диалоговом окне настроек взаимодействия рекомендуется роль IAM Storage Object Admin; выберите эту роль на втором шаге.

Третий шаг является необязательным и не используется в этом руководстве. Вы можете предоставить пользователям эти привилегии в соответствии с вашими политиками.

HMAC ключ сервисного аккаунта будет отображен. Сохраните эту информацию, так как она будет использована в конфигурации ClickHouse.

Настройка ClickHouse Keeper
Все узлы ClickHouse Keeper имеют одинаковый файл конфигурации, за исключением строки server_id
(первой выделенной строки ниже). Измените файл с именами хостов ваших серверов ClickHouse Keeper, и на каждом из серверов установите server_id
в соответствие с соответствующей записью server
в raft_configuration
. Поскольку в этом примере server_id
установлен на 3
, соответствующие строки в raft_configuration
выделены.
- Отредактируйте файл с вашими именами хостов и убедитесь, что они разрешаются с узлов сервера ClickHouse и узлов Keeper.
- Скопируйте файл в нужное место (
/etc/clickhouse-keeper/keeper_config.xml
на каждом из серверов Keeper). - Отредактируйте
server_id
на каждой машине в соответствии с его номером записи вraft_configuration
.
Настройка сервера ClickHouse
Некоторые шаги в этом руководстве потребуют от вас размещения файла конфигурации в /etc/clickhouse-server/config.d/
. Это место по умолчанию для файлов переопределения конфигурации на системах Linux. Когда вы помещаете эти файлы в этот каталог, ClickHouse объединяет содержимое с конфигурацией по умолчанию. Размещая эти файлы в каталоге config.d
, вы избежите потерь конфигурации во время обновления.
Сеть
По умолчанию ClickHouse слушает на интерфейсе обратной связи, в реплицированной настройке необходимо сетевое взаимодействие между машинами. Слушайте на всех интерфейсах:
Удаленные серверы ClickHouse Keeper
Репликация координируется ClickHouse Keeper. Этот файл конфигурации идентифицирует узлы ClickHouse Keeper по имени хоста и номеру порта.
- Отредактируйте имена хостов, чтобы они соответствовали вашим узлам Keeper.
Удаленные серверы ClickHouse
Этот файл настраивает имя хоста и порт каждого сервера ClickHouse в кластере. Файл конфигурации по умолчанию содержит образцы определений кластера, чтобы показать только совершенно настроенные кластеры, к записи remote_servers
добавляется тег replace="true"
, чтобы когда эта конфигурация объединяется с конфигурацией по умолчанию, она заменяла раздел remote_servers
, а не добавляла к нему.
- Отредактируйте файл с вашими именами хостов и убедитесь, что они разрешаются с узлов сервера ClickHouse.
Идентификация реплики
Этот файл настраивает параметры, относящиеся к пути ClickHouse Keeper. В частности, макросы, используемые для идентификации, к какой реплике относятся данные. На одном сервере реплика должна быть указана как replica_1
, а на другом сервере — replica_2
. Имена могут быть изменены, основываясь на нашем примере, где одна реплика хранится в Южной Каролине, а другая в Северной Вирджинии, значения могут быть carolina
и virginia
; просто убедитесь, что они разные на каждой машине.
Хранение в GCS
Конфигурация хранения ClickHouse включает disks
и policies
. Диск, который настраивается ниже, называется gcs
и типа s3
. Тип s3 используется, поскольку ClickHouse обращается к корзине GCS как к корзине AWS S3. Для каждого из узлов сервера ClickHouse потребуется два экземпляра этой конфигурации.
Эти замены должны быть сделаны в конфигурации ниже.
Эти замены различаются для двух узлов сервера ClickHouse:
REPLICA 1 BUCKET
должен быть установлен в название корзины в том же регионе, что и сервер.REPLICA 1 FOLDER
должен быть изменен наreplica_1
на одном из серверов и наreplica_2
на другом.
Эти замены общие для обоих узлов:
access_key_id
должен быть установлен в HMAC Key, сгенерированный ранее.secret_access_key
должен быть установлен в HMAC Secret, сгенерированный ранее.
Запуск ClickHouse Keeper
Используйте команды для вашей операционной системы, например:
Проверка состояния ClickHouse Keeper
Отправляйте команды в ClickHouse Keeper с помощью netcat
. Например, mntr
возвращает состояние кластера ClickHouse Keeper. Если вы выполните команду на каждом из узлов Keeper, вы увидите, что один является лидером, а два других — последователями:
Запуск сервера ClickHouse
На chnode1
и chnode2
выполните:
Проверка
Проверка конфигурации диска
system.disks
должен содержать записи для каждого диска:
- default
- gcs
- cache
Подтверждение, что таблицы, созданные в кластере, созданы на обоих узлах
Проверьте, что данные могут быть вставлены
Проверьте, что для таблицы используется политика хранения gcs_main
.
Проверка в консоли Google Cloud
Смотрев на корзины, вы увидите, что в каждой корзине была создана папка с именем, указанным в конфигурационном файле storage.xml
. Разверните папки, и вы увидите много файлов, представляющих части данных.
Корзина для первой реплики

Корзина для второй реплики
