Если вы используете ClickHouse Cloud в Google Cloud, эта страница к вам не относится, поскольку ваши сервисы уже используют Google Cloud Storage. Если вы хотите выполнять
SELECT или INSERT данных из GCS, см. табличную функцию gcs.MergeTree на базе GCS
Создание диска
conf.d. Ниже показан пример объявления GCS-диска. Эта конфигурация включает несколько секций для настройки GCS-«диска», кэша и политики, которая указывается в DDL-запросах при создании таблиц на GCS-диске. Каждая из них описана ниже.
Конфигурация хранилища > disks > gcs
- Тип диска —
s3, поскольку используется API S3. - Конечная точка, предоставляемая GCS
- HMAC-ключ и secret service account
- Путь к metadata на локальном диске
Конфигурация хранилища > disks > cache
gcs включён кэш в памяти объёмом 10 Gi.
Конфигурация хранилища > policies > gcs_main
gcs, указав политику gcs_main. Например, CREATE TABLE ... SETTINGS storage_policy='gcs_main'.
Создание таблицы
Настройка репликации
ReplicatedMergeTree. Подробнее см. в руководстве по репликации одного сегмента между двумя регионами GCP с использованием GCS.
Подробнее
Использование Google Cloud Storage (GCS)
Спланируйте развертывание
- Два узла сервера ClickHouse в двух регионах GCP
- Два GCS-бакета, развернутые в тех же регионах, что и два узла сервера ClickHouse
- Три узла ClickHouse Keeper, два из которых развернуты в тех же регионах, что и узлы сервера ClickHouse. Третий может находиться в том же регионе, что и один из первых двух узлов Keeper, но в другой зоне доступности.
Подготовьте виртуальные машины
* Это может быть другая зона доступности в том же регионе, что и 1 или 2.
Разверните ClickHouse
chnode1 и chnode2.
Разместите chnode1 в одном регионе GCP, а chnode2 — в другом. В этом руководстве для виртуальных машин Compute Engine, а также для бакетов GCS используются регионы us-east1 и us-east4.
Не запускайте
clickhouse server, пока не завершите его настройку. Пока что просто установите его.Развертывание ClickHouse Keeper
keepernode1, keepernode2 и keepernode3. keepernode1 можно развернуть в том же регионе, что и chnode1, keepernode2 — вместе с chnode2, а keepernode3 — в любом из регионов, но в другой зоне доступности по сравнению с узлом ClickHouse в этом регионе.
При выполнении шагов развертывания на узлах ClickHouse Keeper обратитесь к инструкции по установке.
Создайте два бакета
us-east1, другой — в us-east4. Бакеты создаются в одном регионе, со стандартным классом хранилища и без публичного доступа. При появлении соответствующего запроса включите запрет публичного доступа. Не создавайте папки — они будут созданы, когда ClickHouse начнет записывать данные в хранилище.
Если вам нужны пошаговые инструкции по созданию бакетов и HMAC-ключа, разверните Create GCS buckets and an HMAC key и следуйте инструкциям:
Создание бакетов GCS и ключа HMAC
Создание бакетов GCS и ключа HMAC
ch_bucket_us_east1
ch_bucket_us_east4
Создание ключа доступа
Создание ключа HMAC и секрета для сервисного аккаунта
Откройте Cloud Storage > Settings > Interoperability и либо выберите существующий Access key, либо CREATE A KEY FOR A SERVICE ACCOUNT. В этом руководстве рассматривается создание нового ключа для нового сервисного аккаунта.Добавление нового сервисного аккаунта
Если в проекте ещё нет сервисного аккаунта, нажмите CREATE NEW ACCOUNT.Создание сервисного аккаунта состоит из трёх шагов; на первом шаге задайте аккаунту понятные имя, ID и описание.В диалоговом окне настроек Interoperability рекомендуется роль IAM Storage Object Admin; выберите эту роль на втором шаге.Третий шаг необязателен и в этом руководстве не используется. Вы можете предоставить пользователям эти привилегии в соответствии с вашими политиками.Будет показан ключ HMAC сервисного аккаунта. Сохраните эту информацию, так как она будет использоваться в конфигурации ClickHouse.Настройка 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
/etc/clickhouse-keeper/keeper_config.xml
Настройка сервера ClickHouse
рекомендуемая практикаНа некоторых этапах этого руководства вам потребуется поместить файл конфигурации в
/etc/clickhouse-server/config.d/. Это стандартное расположение в Linux для файлов переопределения конфигурации. Когда вы помещаете эти файлы в этот каталог, ClickHouse объединяет их содержимое с конфигурацией по умолчанию. Размещая такие файлы в каталоге config.d, вы избежите потери конфигурации при обновлении.Сетевые настройки
/etc/clickhouse-server/config.d/network.xml
Удалённые серверы ClickHouse Keeper
- Измените имена хостов в соответствии с именами хостов ваших узлов Keeper
/etc/clickhouse-server/config.d/use-keeper.xml
Удалённые серверы ClickHouse
remote_servers добавлен тег replace="true". Благодаря этому при слиянии с конфигурацией по умолчанию секция remote_servers заменяется, а не дополняется.
- Измените файл, указав свои имена хостов, и убедитесь, что они разрешаются с узлов сервера ClickHouse
/etc/clickhouse-server/config.d/remote-servers.xml
Идентификация реплики
replica_1, а на другом сервере — replica_2. Имена можно изменить: например, если одна реплика хранится в Южной Каролине, а другая — в Северной Виргинии, значениями могут быть carolina и virginia; просто убедитесь, что на каждой машине они различаются.
/etc/clickhouse-server/config.d/macros.xml
Хранилище в GCS
disks и policies. Настраиваемый ниже диск называется gcs и имеет type 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, сгенерированный ранее
/etc/clickhouse-server/config.d/storage.xml
Запустите ClickHouse Keeper
Проверка состояния ClickHouse Keeper
netcat. Например, mntr возвращает состояние кластера ClickHouse Keeper. Если выполнить эту команду на каждом из узлов Keeper, вы увидите, что один из них — leader, а два других — followers:
Запустите сервер ClickHouse
chnode1 и chnode выполните:
Проверка
Проверьте конфигурацию дисков
system.disks должен содержать записи для каждого диска:
- default
- gcs
- cache
Убедитесь, что таблицы в кластере созданы на обоих узлах
Проверьте возможность вставки данных
Убедитесь, что для таблицы используется политика хранения gcs_main.
Проверьте в консоли Google Cloud
storage.xml. Разверните папки, и вы увидите множество файлов, представляющих собой партиции данных.