Danh mục:

Dưới đây là nội dung file docker-compose.yml và redis.conf để thiết lập Redis Cluster.
1. redis.conf
Chúng ta cần tạo các file cấu hình cho từng node với cùng một cổng (port) bên trong nhưng khác nhau về
cluster-announce-port. Ví dụ lệnh kết nối: redis-cli -h localhost -p 26380 -a secret.snippet port 6379 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 3000 cluster-announce-ip [host IP] cluster-announce-port 26379 cluster-announce-bus-port 17000 appendonly yes requirepass secret masterauth secret
2. docker-compose.yml
version: "3.9" services: # Dùng để debug (ping, nslookup, v.v.) debug-busybox: image: busybox command: sleep 3600 networks: - sample-app redis-node-1: image: redis:7.2 container_name: redis-node-1 volumes: - ./redis-data/node1/redis.conf:/usr/local/etc/redis/redis.conf ports: - "26379:6379" - "17000:16379" command: [ "redis-server", "/usr/local/etc/redis/redis.conf" ] networks: - sample-app extra_hosts: - "host.docker.internal:host-gateway" # ... (Tương tự cho các node từ 2 đến 6 với các cổng 26380-26384 và 17001-17005) redis-cluster-init: image: redis:7.2 container_name: redis-cluster-init depends_on: - redis-node-1 - redis-node-2 - redis-node-3 - redis-node-4 - redis-node-5 - redis-node-6 entrypoint: [ "bash", "-c" ] command: - > sleep 5 && echo yes | redis-cli -a secret --cluster create host.docker.internal:26379 host.docker.internal:26380 host.docker.internal:26381 host.docker.internal:26382 host.docker.internal:26383 host.docker.internal:26384 --cluster-replicas 1 networks: - sample-app extra_hosts: - "host.docker.internal:host-gateway" networks: sample-app: driver: bridge
3. Chạy thử
Đã đến lúc kiểm tra thành quả. Hãy chạy lệnh sau:
docker-compose -f docker-compose.yml up -d
Kiểm tra (Check)
Nếu có lỗi khi các container đang khởi chạy, bạn có thể dùng lệnh sau để kết nối vào một trong các node:
Kết nối tới một Redis node:
redis-cli -h localhost -p 26380 -a secret Lấy danh sách các node trong cluster:
cluster nodes
Nếu thành công, bạn sẽ thấy kết quả tương tự như sau:
aaf139c2... 172.20.0.4:6379@16379 master - 0 1750408699203 1 connected 0-5460 ...
Lưu ý: Để cài đặt redis-cli trên Mac, hãy dùng: brew install redis.
4. Gỡ lỗi (Debugging)
Kiểm tra Log
Trước tiên, hãy kiểm tra log từ container redis-cluster-init:
docker logs redis-cluster-init
Kiểm tra trạng thái các node
Nếu log hiển thị thông báo cấu hình thành công, nó sẽ trông như thế này:
2025-06-20 17:38:07 Master[0] -> Slots 0 - 5460 2025-06-20 17:38:07 Adding replica 172.20.0.3:6379 to 172.20.0.4:6379 ...
Kiểm tra kết nối giữa các node
Bạn có thể kiểm tra xem các node có tìm thấy nhau không bằng lệnh:
docker exec redis-node-1 redis-cli -a secret cluster meet host.docker.internal 26380
Nếu xuất hiện lỗi ERR Invalid node address specified, nghĩa là việc phân giải địa chỉ IP đang gặp vấn đề.
Nguồn bài viết ryukato.github.io