- Зачем:
- этап 1 спеки требует стенд, поднимаемый одной командой; кластер —
единственный режим, выключателя «без кластера» нет (issue #12).
- Что:
- compose.yaml: две ноды ClickHouse и отдельный clickhouse-keeper на
зафиксированном LTS-образе 26.3.17.56, порты только на 127.0.0.1.
- infra/clickhouse: общее описание кластера, подключение к keeper и
отдельные макросы shard и replica для каждой ноды.
- scripts/clickhouse-smoke.sh: восемь проверок ON CLUSTER от описания
кластера до удаления временных таблиц, вывод по-русски.
- tests/smoke-guards.sh: три проверки самой smoke-команды —
ограниченная аварийная очистка, обработка прерывания, окружение keeper.
- README.md: быстрый старт, роли нод, обоснование выбора версии.
- Проверка:
- make up && make smoke && make smoke-guards && make clean
73 lines
2.4 KiB
YAML
73 lines
2.4 KiB
YAML
name: ${COMPOSE_PROJECT_NAME:-clickstream-data-platform}
|
|
|
|
x-clickhouse-nofile: &clickhouse-nofile
|
|
nofile:
|
|
soft: 262144
|
|
hard: 262144
|
|
|
|
x-clickhouse-common: &clickhouse-common
|
|
image: ${CLICKHOUSE_IMAGE:-clickhouse/clickhouse-server:26.3.17.56}
|
|
restart: unless-stopped
|
|
environment:
|
|
# Стенд локальный: нодам нужен общий пользователь без пароля для Distributed.
|
|
CLICKHOUSE_SKIP_USER_SETUP: "1"
|
|
depends_on:
|
|
clickhouse-keeper:
|
|
condition: service_healthy
|
|
ulimits: *clickhouse-nofile
|
|
mem_limit: 1g
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "clickhouse-client --host 127.0.0.1 --query 'SELECT 1' >/dev/null 2>&1"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 30
|
|
start_period: 10s
|
|
|
|
services:
|
|
clickhouse-keeper:
|
|
image: ${CLICKHOUSE_IMAGE:-clickhouse/clickhouse-server:26.3.17.56}
|
|
restart: unless-stopped
|
|
user: clickhouse
|
|
ulimits: *clickhouse-nofile
|
|
entrypoint:
|
|
- clickhouse
|
|
- keeper
|
|
- --config-file=/etc/clickhouse-keeper/keeper_config.xml
|
|
volumes:
|
|
- ./infra/clickhouse/keeper/keeper_config.xml:/etc/clickhouse-keeper/keeper_config.xml:ro
|
|
- clickhouse_keeper_data:/var/lib/clickhouse
|
|
mem_limit: 512m
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "clickhouse keeper-client --host 127.0.0.1 --port 9181 --query ruok | grep -q imok"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 30
|
|
start_period: 10s
|
|
|
|
# Инициатор DDL и будущее подключение Airflow.
|
|
clickhouse-01:
|
|
<<: *clickhouse-common
|
|
ports:
|
|
- "127.0.0.1:${CLICKHOUSE_01_HTTP_PORT:-28123}:8123"
|
|
- "127.0.0.1:${CLICKHOUSE_01_TCP_PORT:-29000}:9000"
|
|
volumes:
|
|
- ./infra/clickhouse/config.d/cluster.xml:/etc/clickhouse-server/config.d/cluster.xml:ro
|
|
- ./infra/clickhouse/config.d/macros-01.xml:/etc/clickhouse-server/config.d/macros.xml:ro
|
|
- clickhouse_01_data:/var/lib/clickhouse
|
|
|
|
# Будущее подключение Superset.
|
|
clickhouse-02:
|
|
<<: *clickhouse-common
|
|
ports:
|
|
- "127.0.0.1:${CLICKHOUSE_02_HTTP_PORT:-28124}:8123"
|
|
- "127.0.0.1:${CLICKHOUSE_02_TCP_PORT:-29001}:9000"
|
|
volumes:
|
|
- ./infra/clickhouse/config.d/cluster.xml:/etc/clickhouse-server/config.d/cluster.xml:ro
|
|
- ./infra/clickhouse/config.d/macros-02.xml:/etc/clickhouse-server/config.d/macros.xml:ro
|
|
- clickhouse_02_data:/var/lib/clickhouse
|
|
|
|
volumes:
|
|
clickhouse_keeper_data:
|
|
clickhouse_01_data:
|
|
clickhouse_02_data:
|