-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose-redis-cluster.yml
117 lines (108 loc) · 3.97 KB
/
docker-compose-redis-cluster.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
services:
redis-node1:
image: "redis:latest"
container_name: ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node1
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "6371:6379"
volumes:
- redis-node1-data:/data
networks:
- redis-cluster-network
- benchmark-network
redis-node2:
image: "redis:latest"
container_name: ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node2
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "6372:6379"
volumes:
- redis-node2-data:/data
networks:
- redis-cluster-network
- benchmark-network
redis-node3:
image: "redis:latest"
container_name: ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node3
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "6373:6379"
volumes:
- redis-node3-data:/data
networks:
- redis-cluster-network
- benchmark-network
redis-node4:
image: "redis:latest"
container_name: ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node4
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "6374:6379"
volumes:
- redis-node4-data:/data
networks:
- redis-cluster-network
- benchmark-network
redis-node5:
image: "redis:latest"
container_name: ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node5
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "6375:6379"
volumes:
- redis-node5-data:/data
networks:
- redis-cluster-network
- benchmark-network
redis-node6:
image: "redis:latest"
container_name: ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node6
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "6376:6379"
volumes:
- redis-node6-data:/data
networks:
- redis-cluster-network
- benchmark-network
redis-cluster-setup:
image: redis:latest
container_name: ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-cluster-setup
command: >
bash -c '
echo "Waiting for nodes to be ready..."
for i in 1 2 3 4 5 6; do
until redis-cli -h ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node$$i -p 6379 PING; do
echo "Waiting for ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node$$i..."
sleep 1
done
done
echo "All nodes are ready. Creating cluster..."
echo yes | redis-cli --cluster create ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node1:6379 ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node2:6379 ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node3:6379 ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node4:6379 ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node5:6379 ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node6:6379 --cluster-replicas 1
echo "Cluster setup complete. Checking cluster info..."
sleep 5
redis-cli -h ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node1 -p 6379 CLUSTER INFO
redis-cli -h ${COMPOSE_PROJECT_NAME:-ratelimit_bench}-redis-node1 -p 6379 CLUSTER NODES
'
networks:
- redis-cluster-network
- benchmark-network
depends_on:
- redis-node1
- redis-node2
- redis-node3
- redis-node4
- redis-node5
- redis-node6
networks:
redis-cluster-network:
driver: bridge
benchmark-network:
external: true
volumes:
redis-node1-data:
redis-node2-data:
redis-node3-data:
redis-node4-data:
redis-node5-data:
redis-node6-data: