An open API service indexing awesome lists of open source software.

https://github.com/altinity/cross-db-docker-compose

cross DB setup with docker-compose for Clickhouse with Clickhouse Keeper
https://github.com/altinity/cross-db-docker-compose

Last synced: 3 months ago
JSON representation

cross DB setup with docker-compose for Clickhouse with Clickhouse Keeper

Awesome Lists containing this project

README

          

# cross-DB-docker-compose

# ClickHouse Multi-Region Cluster Setup with Disaster Recovery

This repository contains the configuration and instructions for setting up a multi-region ClickHouse cluster with disaster recovery capabilities using ClickHouse Keeper.

## Architecture Overview

### Region One (172.25.0.0/16)
- 3 ClickHouse servers (172.25.0.12-14)
- 3 ClickHouse keepers (172.25.0.2-4)

### Region Two (172.26.0.0/16)
- 3 ClickHouse servers (172.26.0.12-14)
- 3 ClickHouse keepers (172.26.0.2-4)

## Prerequisites

- Docker and Docker Compose installed
- Basic understanding of ClickHouse and distributed systems
- Sufficient resources to run multiple Docker containers
- Network connectivity between regions

## Detailed Setup Steps

### 0. Clear everything

#### Delete containers and volumes

```bash
docker compose -f region_one/docker-compose-clickhouse.yaml down
docker compose -f region_two/docker-compose-clickhouse.yaml down
docker compose -f region_one/docker-compose-keeper.yaml down
docker compose -f region_two/docker-compose-keeper.yaml down
docker compose -f region_two/docker-compose-keeper-fail.yaml down
docker compose -f region_two/docker-compose-keeper-fail-step2.yaml down
docker volume rm $(docker volume ls -q | grep -E '^region_one_clickhouse[0-9]+-keeper-(data|logs)$')
docker volume rm $(docker volume ls -q | grep -E '^region_two_clickhouse[0-9]+-keeper-(data|logs)$')
```

#### Revert configuration changes

```bash
sed -E -i 's/server_id="1">(true|false)true(true|false)true(true|false)true(true|false)false(true|false)false(true|false)false(true|false)false(true|false)false(true|false)false(true|false)true(true|false)false(true|false)false(true|false)true(true|false)true(true|false)false(true|false)false(true|false)false(true|false)true(true|false)true(true|false)true(true|false)false(true|false)false(true|false)false