Skip to content

Commit f81c19c

Browse files
committed
update docker compose file, etcd is not used anymore for met storage
1 parent bcc276a commit f81c19c

3 files changed

Lines changed: 14 additions & 55 deletions

File tree

docker/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ docker compose up -d
2020

2121
```bash
2222
docker compose ps
23-
# Both etcd and broker should show "Up" / "healthy"
23+
# The broker should show "Up" / "healthy"
2424
```
2525

2626
## Run Integration Tests
@@ -44,7 +44,7 @@ docker compose down -v # -v removes volumes for a fresh start
4444

4545
## Architecture
4646

47-
- **ETCD** metadata store on port 2379
47+
- **Embedded Raft metadata store** — no external dependency required
4848
- **Single broker** — gRPC on port 6650, admin on 50051
4949
- No TLS, no auth, filesystem backend
5050
- Broker advertises as `127.0.0.1:6650` so topic lookups resolve from the host

docker/danube_broker.yml

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,16 @@ broker:
1010
client: 6650
1111
# Admin API
1212
admin: 50051
13+
# Raft inter-node gRPC transport
14+
raft: 7650
1315
# Prometheus metrics exporter
1416
prometheus: 9040
1517

16-
# Metadata Store Configuration (etcd)
18+
# Metadata Store Configuration (Raft — embedded, no external dependency)
19+
# node_id is auto-generated on first boot and persisted in {data_dir}/node_id
1720
meta_store:
18-
host: "etcd"
19-
port: 2379
21+
data_dir: "./danube-data/raft"
22+
# Empty or omitted = single-node cluster (auto-init, zero config).
2023

2124
# Namespaces to be created on boot
2225
bootstrap_namespaces:
@@ -52,7 +55,7 @@ load_manager:
5255
assignment_strategy: "fair"
5356

5457
# LoadReport Publishing Interval: How often brokers publish load reports (seconds)
55-
# - Lower values (5-10s): Faster response, more etcd traffic, better for testing
58+
# - Lower values (5-10s): Faster response, more metadata traffic, better for testing
5659
# - Higher values (30-60s): Less overhead, suitable for stable production clusters
5760
# Default: 30 seconds
5861
load_report_interval_seconds: 30
@@ -156,7 +159,7 @@ wal_cloud:
156159
# Testing: 30s. Production: 300s (5 min). High-durability: 60s (1 min)
157160
interval_seconds: 30
158161

159-
# ETCD metadata root prefix (change only for multiple independent clusters)
162+
# Metadata root prefix (change only for multiple independent clusters)
160163
root_prefix: "/danube-data"
161164

162165
# Max cloud object size (MB) - optimal for S3/GCS multipart uploads
@@ -175,14 +178,6 @@ wal_cloud:
175178

176179
# Backend-specific options - see commented examples below
177180

178-
# Metadata Store: ETCD for cloud object descriptors and indexes
179-
metadata:
180-
# ETCD endpoint (should match broker's meta_store for consistency)
181-
etcd_endpoint: "127.0.0.1:2379"
182-
183-
# In-memory metadata (testing only, no durability)
184-
in_memory: false
185-
186181
# Broker policies, that can be overwritten by namespace / topic policies
187182
policies:
188183
# Limits the maximum number of producers that can simultaneously publish messages to a specific topic.

docker/docker-compose.yml

Lines changed: 4 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,13 @@
11
# Danube single-broker setup for integration testing
2-
# Usage: docker-compose up -d && go test ./integration_tests/ -v -count=1
2+
# Usage: docker compose up -d && mvn -pl danube-client verify -P integration-tests
33

44
services:
5-
etcd:
6-
container_name: "danube-test-etcd"
7-
image: quay.io/coreos/etcd:v3.5.9
8-
environment:
9-
- ETCDCTL_API=3
10-
- ETCD_NAME=danube-etcd
11-
- ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379
12-
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
13-
- ETCD_INITIAL_CLUSTER=danube-etcd=http://etcd:2380
14-
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
15-
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd:2380
16-
- ETCD_INITIAL_CLUSTER_STATE=new
17-
- ETCD_INITIAL_CLUSTER_TOKEN=danube-test
18-
ports:
19-
- "2379:2379"
20-
networks:
21-
- danube_test_net
22-
volumes:
23-
- etcd_data:/etcd-data
24-
healthcheck:
25-
test:
26-
[
27-
"CMD",
28-
"etcdctl",
29-
"--endpoints=http://127.0.0.1:2379",
30-
"endpoint",
31-
"health",
32-
]
33-
interval: 5s
34-
timeout: 5s
35-
retries: 10
36-
start_period: 10s
37-
385
broker:
396
container_name: "danube-test-broker"
407
image: ghcr.io/danube-messaging/danube-broker:latest
418
restart: on-failure
42-
depends_on:
43-
etcd:
44-
condition: service_healthy
459
environment:
46-
- RUST_LOG=danube_broker=info,danube_core=info
10+
- RUST_LOG=danube_broker=info,danube_core=info,openraft=warn
4711
volumes:
4812
- ./danube_broker.yml:/etc/danube_broker.yml:ro
4913
- broker_data:/danube-data
@@ -61,6 +25,8 @@ services:
6125
"0.0.0.0:6650",
6226
"--admin-addr",
6327
"0.0.0.0:50051",
28+
"--raft-addr",
29+
"0.0.0.0:7650",
6430
"--advertised-addr",
6531
"127.0.0.1:6650",
6632
"--prom-exporter",
@@ -79,7 +45,5 @@ networks:
7945
driver: bridge
8046

8147
volumes:
82-
etcd_data:
83-
name: danube_test_etcd_data
8448
broker_data:
8549
name: danube_test_broker_data

0 commit comments

Comments
 (0)