feat: Настройка ClickHouse кластера с репликацией и балансировщиком нагрузки
- Настроен ClickHouse кластер с 2 репликами и автоматической репликацией - Добавлен Nginx Load Balancer для ClickHouse (HTTP и TCP) - Исправлена конфигурация кластера для правильной работы репликации - Созданы таблицы с репликацией: metrics_raw, metrics_processed, agents_info - Убран healthcheck у nginx load balancer (не нужен) - Обновлен Makefile: автоматическое создание .env из env.example - Обновлена документация с информацией о ClickHouse кластере - Все сервисы протестированы и работают корректно Автор: Сергей Антропов, сайт: https://devops.org.ru
This commit is contained in:
parent
0cb1ccaafb
commit
db957f9890
11
Makefile
11
Makefile
@ -23,12 +23,13 @@ help: ## Показать справку по командам
|
|||||||
setup: ## Первоначальная настройка инфраструктуры
|
setup: ## Первоначальная настройка инфраструктуры
|
||||||
@echo "🔧 Настройка инфраструктуры Sensus..."
|
@echo "🔧 Настройка инфраструктуры Sensus..."
|
||||||
@if [ ! -f .env ]; then \
|
@if [ ! -f .env ]; then \
|
||||||
echo "⚠️ Файл .env не найден. Создайте его на основе env.example"; \
|
echo "⚠️ Файл .env не найден. Копирую env.example в .env..."; \
|
||||||
echo " cp env.example .env"; \
|
cp env.example .env; \
|
||||||
echo " # Отредактируйте .env с вашими значениями"; \
|
echo "✅ Файл .env создан на основе env.example"; \
|
||||||
exit 1; \
|
echo "💡 Отредактируйте .env с вашими значениями при необходимости"; \
|
||||||
|
else \
|
||||||
|
echo "✅ Файл .env уже существует"; \
|
||||||
fi
|
fi
|
||||||
@echo "✅ Файл .env найден"
|
|
||||||
@echo "🔐 Генерация SSL сертификатов..."
|
@echo "🔐 Генерация SSL сертификатов..."
|
||||||
@$(MAKE) ssl-generate
|
@$(MAKE) ssl-generate
|
||||||
@echo "🚀 Запуск инфраструктуры..."
|
@echo "🚀 Запуск инфраструктуры..."
|
||||||
|
59
README.md
59
README.md
@ -10,8 +10,9 @@ SensusInfra — это полная инфраструктура для рабо
|
|||||||
- **Kafka** — брокер сообщений для передачи метрик от агентов к воркерам
|
- **Kafka** — брокер сообщений для передачи метрик от агентов к воркерам
|
||||||
- **KafkaUI** — веб-интерфейс для мониторинга Kafka
|
- **KafkaUI** — веб-интерфейс для мониторинга Kafka
|
||||||
- **PostgreSQL** — база данных для хранения метаданных агентов и конфигураций
|
- **PostgreSQL** — база данных для хранения метаданных агентов и конфигураций
|
||||||
- **ClickHouse** — аналитическая база данных для хранения и анализа метрик (2 реплики)
|
- **ClickHouse** — аналитическая база данных для хранения и анализа метрик (кластер с 2 репликами)
|
||||||
- **Nginx Load Balancer** — балансировщик нагрузки для ClickHouse
|
- **Nginx Load Balancer** — балансировщик нагрузки для ClickHouse (HTTP и TCP)
|
||||||
|
- **ZooKeeper** — координатор для ClickHouse репликации
|
||||||
|
|
||||||
## Архитектура
|
## Архитектура
|
||||||
|
|
||||||
@ -32,6 +33,8 @@ SensusInfra — это полная инфраструктура для рабо
|
|||||||
│ ClickHouse │
|
│ ClickHouse │
|
||||||
│ Load Balancer │
|
│ Load Balancer │
|
||||||
│ (Nginx) │
|
│ (Nginx) │
|
||||||
|
│ HTTP: 8125 │
|
||||||
|
│ TCP: 9002 │
|
||||||
└─────────────────┘
|
└─────────────────┘
|
||||||
│
|
│
|
||||||
▼
|
▼
|
||||||
@ -39,6 +42,15 @@ SensusInfra — это полная инфраструктура для рабо
|
|||||||
│ ClickHouse │
|
│ ClickHouse │
|
||||||
│ (аналитика) │
|
│ (аналитика) │
|
||||||
│ (2 реплики) │
|
│ (2 реплики) │
|
||||||
|
│ Реплика 1: 8123│
|
||||||
|
│ Реплика 2: 8124│
|
||||||
|
└─────────────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌─────────────────┐
|
||||||
|
│ ZooKeeper │
|
||||||
|
│ (координатор) │
|
||||||
|
│ Port: 2181 │
|
||||||
└─────────────────┘
|
└─────────────────┘
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -50,10 +62,11 @@ SensusInfra — это полная инфраструктура для рабо
|
|||||||
# Клонируйте репозиторий и перейдите в директорию
|
# Клонируйте репозиторий и перейдите в директорию
|
||||||
cd SensusInfra
|
cd SensusInfra
|
||||||
|
|
||||||
# Создайте файл .env на основе env.example
|
# Файл .env будет создан автоматически при выполнении make setup
|
||||||
|
# Или создайте вручную:
|
||||||
cp env.example .env
|
cp env.example .env
|
||||||
|
|
||||||
# Отредактируйте .env с вашими значениями
|
# Отредактируйте .env с вашими значениями (опционально)
|
||||||
nano .env
|
nano .env
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -159,7 +172,9 @@ make logs # Логи всех сервисов
|
|||||||
- `CLICKHOUSE_PASSWORD` — пароль (обязательно изменить!)
|
- `CLICKHOUSE_PASSWORD` — пароль (обязательно изменить!)
|
||||||
- `CLICKHOUSE_SECURE` — безопасный режим (по умолчанию true)
|
- `CLICKHOUSE_SECURE` — безопасный режим (по умолчанию true)
|
||||||
- `CLICKHOUSE_1_PORT` — порт первой реплики (по умолчанию 8123)
|
- `CLICKHOUSE_1_PORT` — порт первой реплики (по умолчанию 8123)
|
||||||
|
- `CLICKHOUSE_1_HTTP_PORT` — HTTP порт первой реплики (по умолчанию 9000)
|
||||||
- `CLICKHOUSE_2_PORT` — порт второй реплики (по умолчанию 8124)
|
- `CLICKHOUSE_2_PORT` — порт второй реплики (по умолчанию 8124)
|
||||||
|
- `CLICKHOUSE_2_HTTP_PORT` — HTTP порт второй реплики (по умолчанию 9001)
|
||||||
|
|
||||||
#### ClickHouse Load Balancer
|
#### ClickHouse Load Balancer
|
||||||
- `CLICKHOUSE_LB_HTTP_PORT` — HTTP порт балансировщика (по умолчанию 8125)
|
- `CLICKHOUSE_LB_HTTP_PORT` — HTTP порт балансировщика (по умолчанию 8125)
|
||||||
@ -187,13 +202,18 @@ make logs # Логи всех сервисов
|
|||||||
|
|
||||||
#### ClickHouse
|
#### ClickHouse
|
||||||
|
|
||||||
**База `sensus_metrics`**:
|
**База `sensus_metrics`** (реплицируется между узлами):
|
||||||
- `metrics_raw` — сырые метрики
|
- `metrics_raw` — сырые метрики (ReplicatedMergeTree)
|
||||||
- `metrics_processed` — обработанные метрики
|
- `metrics_processed` — обработанные метрики (ReplicatedMergeTree)
|
||||||
- `metrics_aggregated_hourly` — агрегация по часам
|
- `agents_info` — информация об агентах (ReplicatedReplacingMergeTree)
|
||||||
- `metrics_aggregated_daily` — агрегация по дням
|
|
||||||
- `agents_info` — информация об агентах
|
**Кластер `sensus_cluster`**:
|
||||||
- `collectors_info` — информация о коллекторах
|
- **Шард 1** с двумя репликами:
|
||||||
|
- `clickhouse-1` (порт 8123/9000)
|
||||||
|
- `clickhouse-2` (порт 8124/9001)
|
||||||
|
- **ZooKeeper** для координации репликации
|
||||||
|
- **Автоматическая репликация** данных между узлами
|
||||||
|
- **Балансировщик нагрузки** для распределения запросов
|
||||||
|
|
||||||
**База `system`**:
|
**База `system`**:
|
||||||
- `system_logs` — логи системы
|
- `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
|
### Health Check
|
||||||
```bash
|
```bash
|
||||||
make health-check
|
make health-check
|
||||||
```
|
```
|
||||||
|
|
||||||
Проверяет доступность всех сервисов:
|
Проверяет доступность всех сервисов:
|
||||||
- Zookeeper
|
- ZooKeeper
|
||||||
- Kafka
|
- Kafka
|
||||||
- PostgreSQL
|
- PostgreSQL
|
||||||
- ClickHouse (обе реплики)
|
- ClickHouse (обе реплики)
|
||||||
|
- ClickHouse Load Balancer
|
||||||
|
|
||||||
### Логи
|
### Логи
|
||||||
```bash
|
```bash
|
||||||
@ -279,8 +307,11 @@ make restore BACKUP_FILE=postgres_20241201_120000.sql
|
|||||||
- **9093** — Kafka (SSL)
|
- **9093** — Kafka (SSL)
|
||||||
- **8080** — Kafka UI
|
- **8080** — Kafka UI
|
||||||
- **5432** — PostgreSQL
|
- **5432** — PostgreSQL
|
||||||
- **8123** — ClickHouse (реплика 1)
|
- **2181** — ZooKeeper
|
||||||
- **8124** — ClickHouse (реплика 2)
|
- **8123** — ClickHouse (реплика 1, HTTP)
|
||||||
|
- **9000** — ClickHouse (реплика 1, TCP)
|
||||||
|
- **8124** — ClickHouse (реплика 2, HTTP)
|
||||||
|
- **9001** — ClickHouse (реплика 2, TCP)
|
||||||
- **8125** — ClickHouse Load Balancer (HTTP)
|
- **8125** — ClickHouse Load Balancer (HTTP)
|
||||||
- **9002** — ClickHouse Load Balancer (TCP)
|
- **9002** — ClickHouse Load Balancer (TCP)
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!-- Автор: Сергей Антропов, сайт: https://devops.org.ru -->
|
<!-- Автор: Сергей Антропов, сайт: https://devops.org.ru -->
|
||||||
<!-- Назначение: Базовая конфигурация ClickHouse -->
|
<!-- Назначение: Базовая конфигурация ClickHouse -->
|
||||||
|
|
||||||
<yandex>
|
<clickhouse>
|
||||||
<!-- Основные настройки -->
|
<!-- Основные настройки -->
|
||||||
<listen_host>0.0.0.0</listen_host>
|
<listen_host>0.0.0.0</listen_host>
|
||||||
<http_port>8123</http_port>
|
<http_port>8123</http_port>
|
||||||
@ -42,4 +42,12 @@
|
|||||||
<function>hdfs</function>
|
<function>hdfs</function>
|
||||||
<function>s3</function>
|
<function>s3</function>
|
||||||
</external_table_functions_whitelist>
|
</external_table_functions_whitelist>
|
||||||
</yandex>
|
|
||||||
|
<!-- Настройки сети -->
|
||||||
|
<networks>
|
||||||
|
<ip>::/0</ip>
|
||||||
|
</networks>
|
||||||
|
|
||||||
|
<!-- Настройки для работы с большими запросами -->
|
||||||
|
<skip_check_for_incorrect_settings>1</skip_check_for_incorrect_settings>
|
||||||
|
</clickhouse>
|
25
clickhouse-config/00-minimal.xml
Normal file
25
clickhouse-config/00-minimal.xml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<!-- Автор: Сергей Антропов, сайт: https://devops.org.ru -->
|
||||||
|
<!-- Назначение: Минимальная конфигурация ClickHouse -->
|
||||||
|
|
||||||
|
<clickhouse>
|
||||||
|
<!-- Основные настройки -->
|
||||||
|
<listen_host>0.0.0.0</listen_host>
|
||||||
|
<http_port>8123</http_port>
|
||||||
|
<tcp_port>9000</tcp_port>
|
||||||
|
|
||||||
|
<!-- Настройки для работы с дисками -->
|
||||||
|
<path>/var/lib/clickhouse/</path>
|
||||||
|
<tmp_path>/var/lib/clickhouse/tmp/</tmp_path>
|
||||||
|
<user_files_path>/var/lib/clickhouse/user_files/</user_files_path>
|
||||||
|
|
||||||
|
<!-- Настройки для работы с пользователями -->
|
||||||
|
<users_config>users.xml</users_config>
|
||||||
|
|
||||||
|
<!-- Настройки для работы с базами данных -->
|
||||||
|
<default_database>sensus_metrics</default_database>
|
||||||
|
|
||||||
|
<!-- Настройки сети -->
|
||||||
|
<networks>
|
||||||
|
<ip>::/0</ip>
|
||||||
|
</networks>
|
||||||
|
</clickhouse>
|
49
clickhouse-config/01-cluster.xml
Normal file
49
clickhouse-config/01-cluster.xml
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<!-- Автор: Сергей Антропов, сайт: https://devops.org.ru -->
|
||||||
|
<!-- Назначение: Конфигурация кластера ClickHouse для SensusAgent и SensusWorker -->
|
||||||
|
<!-- Настройка кластера с двумя репликами -->
|
||||||
|
|
||||||
|
<clickhouse>
|
||||||
|
<!-- Конфигурация кластера для репликации -->
|
||||||
|
<remote_servers>
|
||||||
|
<sensus_cluster>
|
||||||
|
<!-- Шард 1 с двумя репликами -->
|
||||||
|
<shard>
|
||||||
|
<replica>
|
||||||
|
<host>clickhouse-1</host>
|
||||||
|
<port>9000</port>
|
||||||
|
</replica>
|
||||||
|
<replica>
|
||||||
|
<host>clickhouse-2</host>
|
||||||
|
<port>9000</port>
|
||||||
|
</replica>
|
||||||
|
</shard>
|
||||||
|
</sensus_cluster>
|
||||||
|
</remote_servers>
|
||||||
|
|
||||||
|
<!-- Настройки для работы с ZooKeeper (если потребуется) -->
|
||||||
|
<zookeeper>
|
||||||
|
<node>
|
||||||
|
<host>zookeeper</host>
|
||||||
|
<port>2181</port>
|
||||||
|
</node>
|
||||||
|
</zookeeper>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Настройки для работы с Kafka -->
|
||||||
|
<kafka>
|
||||||
|
<broker_list>kafka:29092</broker_list>
|
||||||
|
<security_protocol>plaintext</security_protocol>
|
||||||
|
<topic_list>
|
||||||
|
<topic>sensus.metrics</topic>
|
||||||
|
</topic_list>
|
||||||
|
</kafka>
|
||||||
|
|
||||||
|
<!-- Настройки для работы с PostgreSQL -->
|
||||||
|
<postgresql>
|
||||||
|
<host>postgres</host>
|
||||||
|
<port>5432</port>
|
||||||
|
<database>sensus</database>
|
||||||
|
<user>sensus</user>
|
||||||
|
<password>sensus</password>
|
||||||
|
</postgresql>
|
||||||
|
</clickhouse>
|
@ -1,100 +0,0 @@
|
|||||||
<!-- Автор: Сергей Антропов, сайт: https://devops.org.ru -->
|
|
||||||
<!-- Назначение: Конфигурация кластера ClickHouse для SensusAgent и SensusWorker -->
|
|
||||||
<!-- Настройка репликации между двумя репликами ClickHouse -->
|
|
||||||
|
|
||||||
<yandex>
|
|
||||||
<!-- Конфигурация кластера для репликации -->
|
|
||||||
<remote_servers>
|
|
||||||
<sensus_cluster>
|
|
||||||
<!-- Первая реплика -->
|
|
||||||
<shard>
|
|
||||||
<replica>
|
|
||||||
<host>clickhouse-1</host>
|
|
||||||
<port>9000</port>
|
|
||||||
</replica>
|
|
||||||
</shard>
|
|
||||||
<!-- Вторая реплика -->
|
|
||||||
<shard>
|
|
||||||
<replica>
|
|
||||||
<host>clickhouse-2</host>
|
|
||||||
<port>9000</port>
|
|
||||||
</replica>
|
|
||||||
</shard>
|
|
||||||
</sensus_cluster>
|
|
||||||
</remote_servers>
|
|
||||||
|
|
||||||
<!-- Настройки для реплицируемых таблиц -->
|
|
||||||
<macros>
|
|
||||||
<shard>01</shard>
|
|
||||||
<replica>clickhouse-1</replica>
|
|
||||||
</macros>
|
|
||||||
|
|
||||||
<!-- Настройки сети -->
|
|
||||||
<networks>
|
|
||||||
<ip>::/0</ip>
|
|
||||||
</networks>
|
|
||||||
|
|
||||||
<!-- Настройки логирования -->
|
|
||||||
<logger>
|
|
||||||
<level>information</level>
|
|
||||||
<log>/var/log/clickhouse-server/clickhouse-server.log</log>
|
|
||||||
<errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>
|
|
||||||
<size>1000M</size>
|
|
||||||
<count>10</count>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<!-- Настройки HTTP сервера -->
|
|
||||||
<http_server_default_response><![CDATA[<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>]]></http_server_default_response>
|
|
||||||
|
|
||||||
<!-- Настройки для работы с большими данными (перенесены в users.xml) -->
|
|
||||||
<skip_check_for_incorrect_settings>1</skip_check_for_incorrect_settings>
|
|
||||||
|
|
||||||
<!-- Настройки для оптимизации запросов -->
|
|
||||||
<mark_cache_size>5368709120</mark_cache_size>
|
|
||||||
<uncompressed_cache_size>8589934592</uncompressed_cache_size>
|
|
||||||
<mmap_cache_size>1000</mmap_cache_size>
|
|
||||||
|
|
||||||
<!-- Настройки для работы с дисками -->
|
|
||||||
<storage_configuration>
|
|
||||||
<disks>
|
|
||||||
<default>
|
|
||||||
<path>/var/lib/clickhouse/</path>
|
|
||||||
</default>
|
|
||||||
</disks>
|
|
||||||
<policies>
|
|
||||||
<default>
|
|
||||||
<volumes>
|
|
||||||
<default>
|
|
||||||
<disk>default</disk>
|
|
||||||
</default>
|
|
||||||
</volumes>
|
|
||||||
</default>
|
|
||||||
</policies>
|
|
||||||
</storage_configuration>
|
|
||||||
|
|
||||||
<!-- Настройки для работы с ZooKeeper (если потребуется) -->
|
|
||||||
<zookeeper>
|
|
||||||
<node>
|
|
||||||
<host>zookeeper</host>
|
|
||||||
<port>2181</port>
|
|
||||||
</node>
|
|
||||||
</zookeeper>
|
|
||||||
|
|
||||||
<!-- Настройки для работы с Kafka -->
|
|
||||||
<kafka>
|
|
||||||
<broker_list>kafka:29092</broker_list>
|
|
||||||
<security_protocol>plaintext</security_protocol>
|
|
||||||
<topic_list>
|
|
||||||
<topic>sensus.metrics</topic>
|
|
||||||
</topic_list>
|
|
||||||
</kafka>
|
|
||||||
|
|
||||||
<!-- Настройки для работы с PostgreSQL -->
|
|
||||||
<postgresql>
|
|
||||||
<host>postgres</host>
|
|
||||||
<port>5432</port>
|
|
||||||
<database>sensus</database>
|
|
||||||
<user>sensus</user>
|
|
||||||
<password>sensus</password>
|
|
||||||
</postgresql>
|
|
||||||
</yandex>
|
|
@ -2,7 +2,7 @@
|
|||||||
<!-- Назначение: Конфигурация таблиц метрик для ClickHouse -->
|
<!-- Назначение: Конфигурация таблиц метрик для ClickHouse -->
|
||||||
<!-- Определение структуры таблиц для хранения метрик от SensusAgent -->
|
<!-- Определение структуры таблиц для хранения метрик от SensusAgent -->
|
||||||
|
|
||||||
<yandex>
|
<clickhouse>
|
||||||
<!-- Настройки для таблиц метрик -->
|
<!-- Настройки для таблиц метрик -->
|
||||||
<dictionaries_config>*_dictionary.xml</dictionaries_config>
|
<dictionaries_config>*_dictionary.xml</dictionaries_config>
|
||||||
|
|
||||||
@ -121,4 +121,4 @@
|
|||||||
<auto_offset_reset>latest</auto_offset_reset>
|
<auto_offset_reset>latest</auto_offset_reset>
|
||||||
<skip_broken_messages>100</skip_broken_messages>
|
<skip_broken_messages>100</skip_broken_messages>
|
||||||
</kafka>
|
</kafka>
|
||||||
</yandex>
|
</clickhouse>
|
11
clickhouse-config/03-clickhouse-1-macros.xml
Normal file
11
clickhouse-config/03-clickhouse-1-macros.xml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<!-- Автор: Сергей Антропов, сайт: https://devops.org.ru -->
|
||||||
|
<!-- Назначение: Макросы для первой реплики ClickHouse -->
|
||||||
|
<!-- Специфичные настройки для clickhouse-1 -->
|
||||||
|
|
||||||
|
<clickhouse>
|
||||||
|
<!-- Макросы для первой реплики -->
|
||||||
|
<macros>
|
||||||
|
<shard>01</shard>
|
||||||
|
<replica>clickhouse-1</replica>
|
||||||
|
</macros>
|
||||||
|
</clickhouse>
|
11
clickhouse-config/03-clickhouse-2-macros.xml
Normal file
11
clickhouse-config/03-clickhouse-2-macros.xml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<!-- Автор: Сергей Антропов, сайт: https://devops.org.ru -->
|
||||||
|
<!-- Назначение: Макросы для второй реплики ClickHouse -->
|
||||||
|
<!-- Специфичные настройки для clickhouse-2 -->
|
||||||
|
|
||||||
|
<clickhouse>
|
||||||
|
<!-- Макросы для второй реплики -->
|
||||||
|
<macros>
|
||||||
|
<shard>01</shard>
|
||||||
|
<replica>clickhouse-2</replica>
|
||||||
|
</macros>
|
||||||
|
</clickhouse>
|
0
clickhouse-config/03-macros.xml
Executable file
0
clickhouse-config/03-macros.xml
Executable file
11
clickhouse-config/clickhouse-1/macros.xml
Normal file
11
clickhouse-config/clickhouse-1/macros.xml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<!-- Автор: Сергей Антропов, сайт: https://devops.org.ru -->
|
||||||
|
<!-- Назначение: Макросы для первой реплики ClickHouse -->
|
||||||
|
<!-- Специфичные настройки для clickhouse-1 -->
|
||||||
|
|
||||||
|
<clickhouse>
|
||||||
|
<!-- Макросы для первой реплики -->
|
||||||
|
<macros>
|
||||||
|
<shard>01</shard>
|
||||||
|
<replica>clickhouse-1</replica>
|
||||||
|
</macros>
|
||||||
|
</clickhouse>
|
11
clickhouse-config/clickhouse-2/macros.xml
Normal file
11
clickhouse-config/clickhouse-2/macros.xml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<!-- Автор: Сергей Антропов, сайт: https://devops.org.ru -->
|
||||||
|
<!-- Назначение: Макросы для второй реплики ClickHouse -->
|
||||||
|
<!-- Специфичные настройки для clickhouse-2 -->
|
||||||
|
|
||||||
|
<clickhouse>
|
||||||
|
<!-- Макросы для второй реплики -->
|
||||||
|
<macros>
|
||||||
|
<shard>01</shard>
|
||||||
|
<replica>clickhouse-2</replica>
|
||||||
|
</macros>
|
||||||
|
</clickhouse>
|
45
clickhouse-users/01-sensus-user-simple.xml
Normal file
45
clickhouse-users/01-sensus-user-simple.xml
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<!-- Автор: Сергей Антропов, сайт: https://devops.org.ru -->
|
||||||
|
<!-- Назначение: Простая конфигурация пользователя ClickHouse -->
|
||||||
|
|
||||||
|
<clickhouse>
|
||||||
|
<!-- Пользователь sensus -->
|
||||||
|
<users>
|
||||||
|
<sensus>
|
||||||
|
<!-- Пароль (будет переопределен через переменную окружения) -->
|
||||||
|
<password></password>
|
||||||
|
|
||||||
|
<!-- Сетевые настройки -->
|
||||||
|
<networks>
|
||||||
|
<ip>::/0</ip>
|
||||||
|
</networks>
|
||||||
|
|
||||||
|
<!-- Настройки профиля -->
|
||||||
|
<profile>default</profile>
|
||||||
|
|
||||||
|
<!-- Настройки квот -->
|
||||||
|
<quota>default</quota>
|
||||||
|
</sensus>
|
||||||
|
</users>
|
||||||
|
|
||||||
|
<!-- Профиль по умолчанию -->
|
||||||
|
<profiles>
|
||||||
|
<default>
|
||||||
|
<!-- Настройки для работы с памятью -->
|
||||||
|
<max_memory_usage>10000000000</max_memory_usage>
|
||||||
|
</default>
|
||||||
|
</profiles>
|
||||||
|
|
||||||
|
<!-- Квоты по умолчанию -->
|
||||||
|
<quotas>
|
||||||
|
<default>
|
||||||
|
<interval>
|
||||||
|
<duration>3600</duration>
|
||||||
|
<queries>0</queries>
|
||||||
|
<errors>0</errors>
|
||||||
|
<result_rows>0</result_rows>
|
||||||
|
<read_rows>0</read_rows>
|
||||||
|
<execution_time>0</execution_time>
|
||||||
|
</interval>
|
||||||
|
</default>
|
||||||
|
</quotas>
|
||||||
|
</clickhouse>
|
@ -2,12 +2,11 @@
|
|||||||
<!-- Назначение: Конфигурация пользователя ClickHouse для SensusAgent и SensusWorker -->
|
<!-- Назначение: Конфигурация пользователя ClickHouse для SensusAgent и SensusWorker -->
|
||||||
<!-- Определение пользователя sensus с необходимыми правами доступа -->
|
<!-- Определение пользователя sensus с необходимыми правами доступа -->
|
||||||
|
|
||||||
<yandex>
|
<clickhouse>
|
||||||
<!-- Пользователь sensus -->
|
<!-- Пользователь sensus -->
|
||||||
<users>
|
<users>
|
||||||
<sensus>
|
<sensus>
|
||||||
<!-- Пароль (будет переопределен через переменную окружения) -->
|
<!-- Пароль (будет переопределен через переменную окружения) -->
|
||||||
<password_sha256_hex></password_sha256_hex>
|
|
||||||
<password></password>
|
<password></password>
|
||||||
|
|
||||||
<!-- Сетевые настройки -->
|
<!-- Сетевые настройки -->
|
||||||
@ -21,16 +20,6 @@
|
|||||||
<!-- Настройки квот -->
|
<!-- Настройки квот -->
|
||||||
<quota>default</quota>
|
<quota>default</quota>
|
||||||
|
|
||||||
<!-- Настройки доступа к базам данных -->
|
|
||||||
<databases>
|
|
||||||
<sensus_metrics>
|
|
||||||
<table>metrics_raw</table>
|
|
||||||
<table>metrics_processed</table>
|
|
||||||
<table>metrics_aggregated</table>
|
|
||||||
<table>agents_info</table>
|
|
||||||
<table>collectors_info</table>
|
|
||||||
</sensus_metrics>
|
|
||||||
</databases>
|
|
||||||
|
|
||||||
<!-- Настройки для работы с большими запросами -->
|
<!-- Настройки для работы с большими запросами -->
|
||||||
<max_memory_usage>10000000000</max_memory_usage>
|
<max_memory_usage>10000000000</max_memory_usage>
|
||||||
@ -132,4 +121,4 @@
|
|||||||
</interval>
|
</interval>
|
||||||
</default>
|
</default>
|
||||||
</quotas>
|
</quotas>
|
||||||
</yandex>
|
</clickhouse>
|
@ -10,7 +10,7 @@
|
|||||||
<networks>
|
<networks>
|
||||||
<ip>::/0</ip>
|
<ip>::/0</ip>
|
||||||
</networks>
|
</networks>
|
||||||
<password><![CDATA[clickhouse_secure_password_2024]]></password>
|
<password><![CDATA[sensus]]></password>
|
||||||
<quota>default</quota>
|
<quota>default</quota>
|
||||||
<access_management>1</access_management>
|
<access_management>1</access_management>
|
||||||
</sensus>
|
</sensus>
|
||||||
|
@ -129,6 +129,7 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- clickhouse-1-data:/var/lib/clickhouse
|
- clickhouse-1-data:/var/lib/clickhouse
|
||||||
- ./clickhouse-config:/etc/clickhouse-server/config.d
|
- ./clickhouse-config:/etc/clickhouse-server/config.d
|
||||||
|
- ./clickhouse-config/03-clickhouse-1-macros.xml:/etc/clickhouse-server/config.d/03-macros.xml
|
||||||
- ./clickhouse-users:/etc/clickhouse-server/users.d
|
- ./clickhouse-users:/etc/clickhouse-server/users.d
|
||||||
ports:
|
ports:
|
||||||
- "${CLICKHOUSE_1_PORT:-8123}:8123"
|
- "${CLICKHOUSE_1_PORT:-8123}:8123"
|
||||||
@ -137,11 +138,11 @@ services:
|
|||||||
- sensus-network
|
- sensus-network
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
healthcheck:
|
healthcheck:
|
||||||
#test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8123/ping"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:8123/ping"]
|
||||||
test: ["CMD", "clickhouse-client", "--query", "SELECT 1"]
|
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 5
|
||||||
|
start_period: 60s
|
||||||
|
|
||||||
# ClickHouse - вторая реплика
|
# ClickHouse - вторая реплика
|
||||||
clickhouse-2:
|
clickhouse-2:
|
||||||
@ -156,6 +157,7 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- clickhouse-2-data:/var/lib/clickhouse
|
- clickhouse-2-data:/var/lib/clickhouse
|
||||||
- ./clickhouse-config:/etc/clickhouse-server/config.d
|
- ./clickhouse-config:/etc/clickhouse-server/config.d
|
||||||
|
- ./clickhouse-config/03-clickhouse-2-macros.xml:/etc/clickhouse-server/config.d/03-macros.xml
|
||||||
- ./clickhouse-users:/etc/clickhouse-server/users.d
|
- ./clickhouse-users:/etc/clickhouse-server/users.d
|
||||||
ports:
|
ports:
|
||||||
- "${CLICKHOUSE_2_PORT:-8124}:8123"
|
- "${CLICKHOUSE_2_PORT:-8124}:8123"
|
||||||
@ -164,11 +166,11 @@ services:
|
|||||||
- sensus-network
|
- sensus-network
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
healthcheck:
|
healthcheck:
|
||||||
#test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8123/ping"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:8123/ping"]
|
||||||
test: ["CMD", "clickhouse-client", "--query", "SELECT 1"]
|
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 5
|
||||||
|
start_period: 60s
|
||||||
|
|
||||||
# Nginx балансировщик нагрузки для ClickHouse
|
# Nginx балансировщик нагрузки для ClickHouse
|
||||||
clickhouse-lb:
|
clickhouse-lb:
|
||||||
@ -187,11 +189,6 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- sensus-network
|
- sensus-network
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:80/health"]
|
|
||||||
interval: 30s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 3
|
|
||||||
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -151,7 +151,6 @@ http {
|
|||||||
# TCP балансировка для ClickHouse Native протокола
|
# TCP балансировка для ClickHouse Native протокола
|
||||||
stream {
|
stream {
|
||||||
# Логирование для stream
|
# Логирование для stream
|
||||||
access_log /var/log/nginx/stream_access.log;
|
|
||||||
error_log /var/log/nginx/stream_error.log;
|
error_log /var/log/nginx/stream_error.log;
|
||||||
|
|
||||||
# Upstream для ClickHouse Native протокола
|
# Upstream для ClickHouse Native протокола
|
||||||
|
Loading…
x
Reference in New Issue
Block a user