From 97d9166c283e47cfe027a774b18f231cdad25083 Mon Sep 17 00:00:00 2001 From: Dmitrii Date: Mon, 23 Jun 2025 09:59:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D1=8E?= =?UTF-8?q?=D1=89=D0=B8=D0=B9=20=D0=BA=D0=BB=D0=B0=D1=81=D1=82=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + LICENSE | 4 ++ README.md | 2 +- configs/default_user.xml | 7 +++ configs/haproxy/haproxy.cfg | 20 ++++++++ configs/macros_ch1.xml | 10 ++++ configs/macros_ch2.xml | 10 ++++ configs/macros_ch3.xml | 10 ++++ configs/macros_ch4.xml | 10 ++++ configs/z_config.xml | 48 +++++++++++++++++++ data/.gitkeep | 0 docker-compose.yml | 94 +++++++++++++++++++++++++++++++++++++ sql/sample_queries.sql | 8 ++++ 13 files changed, 223 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 configs/default_user.xml create mode 100644 configs/haproxy/haproxy.cfg create mode 100644 configs/macros_ch1.xml create mode 100644 configs/macros_ch2.xml create mode 100644 configs/macros_ch3.xml create mode 100644 configs/macros_ch4.xml create mode 100644 configs/z_config.xml create mode 100644 data/.gitkeep create mode 100644 docker-compose.yml create mode 100644 sql/sample_queries.sql diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2277c80 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.$*.bkp diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..cf6dd3b --- /dev/null +++ b/LICENSE @@ -0,0 +1,4 @@ +Creative Commons Legal Code + +CC BY 4.0 licence +https://creativecommons.org/licenses/by/4.0/ \ No newline at end of file diff --git a/README.md b/README.md index b70c2ec..6189877 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# dlickhouse-learning-cluster \ No newline at end of file +# clickhouse-learning-cluster \ No newline at end of file diff --git a/configs/default_user.xml b/configs/default_user.xml new file mode 100644 index 0000000..227b387 --- /dev/null +++ b/configs/default_user.xml @@ -0,0 +1,7 @@ + + + + 123456 + + + \ No newline at end of file diff --git a/configs/haproxy/haproxy.cfg b/configs/haproxy/haproxy.cfg new file mode 100644 index 0000000..fac512d --- /dev/null +++ b/configs/haproxy/haproxy.cfg @@ -0,0 +1,20 @@ +global + maxconn 4096 + log stdout format raw local0 + +defaults + mode tcp + timeout connect 10s + timeout client 1m + timeout server 1m + +frontend clickhouse_front + bind *:8123 + default_backend clickhouse_back + +backend clickhouse_back + balance roundrobin + server clickhouse1 click1:8123 check + server clickhouse2 click2:8123 check + server clickhouse3 click3:8123 check + server clickhouse4 click4:8123 check diff --git a/configs/macros_ch1.xml b/configs/macros_ch1.xml new file mode 100644 index 0000000..a7508be --- /dev/null +++ b/configs/macros_ch1.xml @@ -0,0 +1,10 @@ + + + 01 + 01 + 01 + rep1 + rep1 + rep1 + + \ No newline at end of file diff --git a/configs/macros_ch2.xml b/configs/macros_ch2.xml new file mode 100644 index 0000000..31a2ac3 --- /dev/null +++ b/configs/macros_ch2.xml @@ -0,0 +1,10 @@ + + + 01 + 01 + 02 + rep2 + rep2 + rep1 + + \ No newline at end of file diff --git a/configs/macros_ch3.xml b/configs/macros_ch3.xml new file mode 100644 index 0000000..6c82936 --- /dev/null +++ b/configs/macros_ch3.xml @@ -0,0 +1,10 @@ + + + 01 + 02 + 03 + rep3 + rep1 + rep1 + + \ No newline at end of file diff --git a/configs/macros_ch4.xml b/configs/macros_ch4.xml new file mode 100644 index 0000000..dcc788e --- /dev/null +++ b/configs/macros_ch4.xml @@ -0,0 +1,10 @@ + + + 01 + 02 + 04 + rep4 + rep2 + rep1 + + \ No newline at end of file diff --git a/configs/z_config.xml b/configs/z_config.xml new file mode 100644 index 0000000..a280488 --- /dev/null +++ b/configs/z_config.xml @@ -0,0 +1,48 @@ + + + + + + true + click19000default123456 + click29000default123456 + click39000default123456 + click49000default123456 + + + + + + click19000default123456 + + + click29000default123456 + + + click39000default123456 + + + click49000default123456 + + + + + + true + click19000default123456 + click29000default123456 + + + true + click39000default123456 + click49000default123456 + + + + + + zookeeper + 2181 + + + \ No newline at end of file diff --git a/data/.gitkeep b/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..4a4c96a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,94 @@ +x-configs: &ch-default-configs + image: clickhouse/clickhouse-server:25.1 + environment: + TZ: "Europe/Moscow" + ulimits: + nproc: 65535 + nofile: + soft: 262144 + hard: 262144 + networks: + - ch_learning_net + depends_on: + - zookeeper + +services: + zookeeper: + # image: 'bitnami/zookeeper:3.9.3' + image: zookeeper:3.9.3 + networks: + - ch_learning_net + environment: + - ALLOW_ANONYMOUS_LOGIN=yes + - ZOOKEEPER_CLIENT_PORT=2181 + - TZ="Europe/Moscow" + ports: + - "2182:2181" + - "2888:2888" + - "3888:3888" + + click1: + <<: *ch-default-configs + volumes: + - ./configs/default_user.xml:/etc/clickhouse-server/users.d/default_user.xml + - ./configs/z_config.xml:/etc/clickhouse-server/config.d/z_config.xml + - ./configs/macros_ch1.xml:/etc/clickhouse-server/config.d/macros.xml + - ./data:/var/lib/clickhouse/user_files/data + ports: + - "8002:9000" + - "9123:8123" + + click2: + <<: *ch-default-configs + volumes: + - ./configs/default_user.xml:/etc/clickhouse-server/users.d/default_user.xml + - ./configs/z_config.xml:/etc/clickhouse-server/config.d/z_config.xml + - ./configs/macros_ch2.xml:/etc/clickhouse-server/config.d/macros.xml + - ./data:/var/lib/clickhouse/user_files/data + ports: + - "8003:9000" + - "9124:8123" + + click3: + <<: *ch-default-configs + volumes: + - ./configs/default_user.xml:/etc/clickhouse-server/users.d/default_user.xml + - ./configs/z_config.xml:/etc/clickhouse-server/config.d/z_config.xml + - ./configs/macros_ch3.xml:/etc/clickhouse-server/config.d/macros.xml + - ./data:/var/lib/clickhouse/user_files/data + ports: + - "8004:9000" + - "9125:8123" + + click4: + <<: *ch-default-configs + volumes: + - ./configs/default_user.xml:/etc/clickhouse-server/users.d/default_user.xml + - ./configs/z_config.xml:/etc/clickhouse-server/config.d/z_config.xml + - ./configs/macros_ch4.xml:/etc/clickhouse-server/config.d/macros.xml + - ./data:/var/lib/clickhouse/user_files/data + ports: + - "8005:9000" + - "9126:8123" + + haproxy: + image: haproxy:3.1.7 + networks: + - ch_learning_net + ports: + - "9001:9000" + - "8124:8123" # HTTP порт для ClickHouse c балансировкой + volumes: + - ./configs/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg + depends_on: + - click1 + - click2 + - click3 + - click4 + restart: unless-stopped + +networks: + ch_learning_net: + driver: bridge + +# volumes: diff --git a/sql/sample_queries.sql b/sql/sample_queries.sql new file mode 100644 index 0000000..dff95a8 --- /dev/null +++ b/sql/sample_queries.sql @@ -0,0 +1,8 @@ +-- Версия ClickHouse +SELECT version(); + +-- Созданные в системе кластера +SHOW clusters; + +-- Список активных репликаций +SELECT * FROM system.zookeeper WHERE path = '/clickhouse/task_queue/replicas/';