diff --git a/Makefile b/Makefile
index 239dcd7..9329bf5 100644
--- a/Makefile
+++ b/Makefile
@@ -23,12 +23,13 @@ help: ## Показать справку по командам
setup: ## Первоначальная настройка инфраструктуры
@echo "🔧 Настройка инфраструктуры Sensus..."
@if [ ! -f .env ]; then \
- echo "⚠️ Файл .env не найден. Создайте его на основе env.example"; \
- echo " cp env.example .env"; \
- echo " # Отредактируйте .env с вашими значениями"; \
- exit 1; \
+ echo "⚠️ Файл .env не найден. Копирую env.example в .env..."; \
+ cp env.example .env; \
+ echo "✅ Файл .env создан на основе env.example"; \
+ echo "💡 Отредактируйте .env с вашими значениями при необходимости"; \
+ else \
+ echo "✅ Файл .env уже существует"; \
fi
- @echo "✅ Файл .env найден"
@echo "🔐 Генерация SSL сертификатов..."
@$(MAKE) ssl-generate
@echo "🚀 Запуск инфраструктуры..."
diff --git a/README.md b/README.md
index 6fc7b16..5b43bf8 100644
--- a/README.md
+++ b/README.md
@@ -10,8 +10,9 @@ SensusInfra — это полная инфраструктура для рабо
- **Kafka** — брокер сообщений для передачи метрик от агентов к воркерам
- **KafkaUI** — веб-интерфейс для мониторинга Kafka
- **PostgreSQL** — база данных для хранения метаданных агентов и конфигураций
-- **ClickHouse** — аналитическая база данных для хранения и анализа метрик (2 реплики)
-- **Nginx Load Balancer** — балансировщик нагрузки для ClickHouse
+- **ClickHouse** — аналитическая база данных для хранения и анализа метрик (кластер с 2 репликами)
+- **Nginx Load Balancer** — балансировщик нагрузки для ClickHouse (HTTP и TCP)
+- **ZooKeeper** — координатор для ClickHouse репликации
## Архитектура
@@ -32,6 +33,8 @@ SensusInfra — это полная инфраструктура для рабо
│ ClickHouse │
│ Load Balancer │
│ (Nginx) │
+ │ HTTP: 8125 │
+ │ TCP: 9002 │
└─────────────────┘
│
▼
@@ -39,6 +42,15 @@ SensusInfra — это полная инфраструктура для рабо
│ ClickHouse │
│ (аналитика) │
│ (2 реплики) │
+ │ Реплика 1: 8123│
+ │ Реплика 2: 8124│
+ └─────────────────┘
+ │
+ ▼
+ ┌─────────────────┐
+ │ ZooKeeper │
+ │ (координатор) │
+ │ Port: 2181 │
└─────────────────┘
```
@@ -50,10 +62,11 @@ SensusInfra — это полная инфраструктура для рабо
# Клонируйте репозиторий и перейдите в директорию
cd SensusInfra
-# Создайте файл .env на основе env.example
+# Файл .env будет создан автоматически при выполнении make setup
+# Или создайте вручную:
cp env.example .env
-# Отредактируйте .env с вашими значениями
+# Отредактируйте .env с вашими значениями (опционально)
nano .env
```
@@ -159,7 +172,9 @@ make logs # Логи всех сервисов
- `CLICKHOUSE_PASSWORD` — пароль (обязательно изменить!)
- `CLICKHOUSE_SECURE` — безопасный режим (по умолчанию true)
- `CLICKHOUSE_1_PORT` — порт первой реплики (по умолчанию 8123)
+- `CLICKHOUSE_1_HTTP_PORT` — HTTP порт первой реплики (по умолчанию 9000)
- `CLICKHOUSE_2_PORT` — порт второй реплики (по умолчанию 8124)
+- `CLICKHOUSE_2_HTTP_PORT` — HTTP порт второй реплики (по умолчанию 9001)
#### ClickHouse Load Balancer
- `CLICKHOUSE_LB_HTTP_PORT` — HTTP порт балансировщика (по умолчанию 8125)
@@ -187,13 +202,18 @@ make logs # Логи всех сервисов
#### ClickHouse
-**База `sensus_metrics`**:
-- `metrics_raw` — сырые метрики
-- `metrics_processed` — обработанные метрики
-- `metrics_aggregated_hourly` — агрегация по часам
-- `metrics_aggregated_daily` — агрегация по дням
-- `agents_info` — информация об агентах
-- `collectors_info` — информация о коллекторах
+**База `sensus_metrics`** (реплицируется между узлами):
+- `metrics_raw` — сырые метрики (ReplicatedMergeTree)
+- `metrics_processed` — обработанные метрики (ReplicatedMergeTree)
+- `agents_info` — информация об агентах (ReplicatedReplacingMergeTree)
+
+**Кластер `sensus_cluster`**:
+- **Шард 1** с двумя репликами:
+ - `clickhouse-1` (порт 8123/9000)
+ - `clickhouse-2` (порт 8124/9001)
+- **ZooKeeper** для координации репликации
+- **Автоматическая репликация** данных между узлами
+- **Балансировщик нагрузки** для распределения запросов
**База `system`**:
- `system_logs` — логи системы
@@ -209,16 +229,24 @@ make logs # Логи всех сервисов
- Просмотр сообщений в реальном времени
- Авторизация через форму входа
+### ClickHouse Load Balancer
+- **HTTP:** http://localhost:8125
+- **TCP:** localhost:9002
+- Балансировка нагрузки между репликами ClickHouse
+- Health check endpoint: http://localhost:8125/health
+- Статус endpoint: http://localhost:8125/status
+
### Health Check
```bash
make health-check
```
Проверяет доступность всех сервисов:
-- Zookeeper
+- ZooKeeper
- Kafka
- PostgreSQL
- ClickHouse (обе реплики)
+- ClickHouse Load Balancer
### Логи
```bash
@@ -279,8 +307,11 @@ make restore BACKUP_FILE=postgres_20241201_120000.sql
- **9093** — Kafka (SSL)
- **8080** — Kafka UI
- **5432** — PostgreSQL
-- **8123** — ClickHouse (реплика 1)
-- **8124** — ClickHouse (реплика 2)
+- **2181** — ZooKeeper
+- **8123** — ClickHouse (реплика 1, HTTP)
+- **9000** — ClickHouse (реплика 1, TCP)
+- **8124** — ClickHouse (реплика 2, HTTP)
+- **9001** — ClickHouse (реплика 2, TCP)
- **8125** — ClickHouse Load Balancer (HTTP)
- **9002** — ClickHouse Load Balancer (TCP)
diff --git a/clickhouse-config/00-basic.xml.bak b/clickhouse-config/00-basic.xml
similarity index 85%
rename from clickhouse-config/00-basic.xml.bak
rename to clickhouse-config/00-basic.xml
index 4013416..c1b3a0b 100644
--- a/clickhouse-config/00-basic.xml.bak
+++ b/clickhouse-config/00-basic.xml
@@ -1,7 +1,7 @@
-
+
0.0.0.0
8123
@@ -42,4 +42,12 @@
hdfs
s3
-
+
+
+
+ ::/0
+
+
+
+ 1
+
diff --git a/clickhouse-config/00-minimal.xml b/clickhouse-config/00-minimal.xml
new file mode 100644
index 0000000..015829e
--- /dev/null
+++ b/clickhouse-config/00-minimal.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+ 0.0.0.0
+ 8123
+ 9000
+
+
+ /var/lib/clickhouse/
+ /var/lib/clickhouse/tmp/
+ /var/lib/clickhouse/user_files/
+
+
+ users.xml
+
+
+ sensus_metrics
+
+
+
+ ::/0
+
+
diff --git a/clickhouse-config/01-cluster.xml b/clickhouse-config/01-cluster.xml
new file mode 100644
index 0000000..c943d9f
--- /dev/null
+++ b/clickhouse-config/01-cluster.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+ clickhouse-1
+ 9000
+
+
+ clickhouse-2
+ 9000
+
+
+
+
+
+
+
+
+ zookeeper
+ 2181
+
+
+
+
+
+
+ kafka:29092
+ plaintext
+
+ sensus.metrics
+
+
+
+
+
+ postgres
+ 5432
+ sensus
+ sensus
+ sensus
+
+
\ No newline at end of file
diff --git a/clickhouse-config/01-cluster.xml.bak b/clickhouse-config/01-cluster.xml.bak
deleted file mode 100644
index dd0a320..0000000
--- a/clickhouse-config/01-cluster.xml.bak
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- clickhouse-1
- 9000
-
-
-
-
-
- clickhouse-2
- 9000
-
-
-
-
-
-
-
- 01
- clickhouse-1
-
-
-
-
- ::/0
-
-
-
-
- information
- /var/log/clickhouse-server/clickhouse-server.log
- /var/log/clickhouse-server/clickhouse-server.err.log
- 1000M
- 10
-
-
-
-