Chuẩn bị danh sách Node và tham số khởi tạo
Liệt kê địa chỉ IP và Port của 6 Node
Bạn cần xác định chính xác 6 địa chỉ IP và Port đã được cấu hình ở các phần trước. Giả sử môi trường của bạn đã có 6 node Redis chạy sẵn với cấu hình: 3 Master (node 1, 2, 3) và 3 Replica (node 4, 5, 6).
Danh sách IP:Port giả định như sau (thay thế bằng IP thật của bạn):
- Master 1: 192.168.1.10:7000
- Master 2: 192.168.1.11:7001
- Master 3: 192.168.1.12:7002
- Replica 1: 192.168.1.13:7003
- Replica 2: 192.168.1.14:7004
- Replica 3: 192.168.1.15:7005
Mỗi node phải có file cấu hình redis.conf đã bật tính năng cluster-enabled yes và cluster-config-file đúng.
Kết quả mong đợi: Bạn có sẵn danh sách 6 địa chỉ host:port để truyền vào lệnh tạo cluster.
Khởi tạo Redis Cluster với 3 Master và 3 Replica
Sử dụng lệnh redis-cli --cluster create
Chúng ta sẽ thực thi lệnh tạo cluster từ một trong các node đã cài đặt (ví dụ node đầu tiên). Lệnh này tự động phân bổ 16384 hash slots cho 3 master và thiết lập quan hệ replication.
Tham số --cluster-replicas 1 chỉ định mỗi Master sẽ có 1 Replica tương ứng. Redis CLI sẽ tự động chọn các node còn lại làm replica.
Thực thi lệnh sau trên terminal của bất kỳ node nào trong nhóm (đảm bảo quyền sudo hoặc quyền truy cập port):
redis-cli --cluster create \
192.168.1.10:7000 \
192.168.1.11:7001 \
192.168.1.12:7002 \
192.168.1.13:7003 \
192.168.1.14:7004 \
192.168.1.15:7005 \
--cluster-replicas 1
Kết quả mong đợi: Xuất hiện thông báo Performing hash slots allocation on cluster nodes và sau đó là Cluster configuration saved cùng [OK] All 16384 slots covered.
Xác nhận và chấp nhận cấu hình
Ngay sau khi lệnh chạy xong, Redis CLI sẽ yêu cầu xác nhận với thông báo Clustering nodes setup. Is the cluster ready? (Type 'yes' to accept).
Bạn phải gõ yes và nhấn Enter để hoàn tất quá trình giao tiếp giữa các node và đồng bộ bảng định tuyến (routing table).
yes
Kết quả mong đợi: Xuất hiện dòng Cluster created successfully! và Performing a cluster check... cho thấy trạng thái OK.
Kiểm tra trạng thái và cấu trúc Cluster
Liệt kê các Node và trạng thái kết nối (CLUSTER NODES)
Lệnh này trả về danh sách chi tiết tất cả các node trong cluster, bao gồm ID, địa chỉ, vai trò (master/replica) và trạng thái kết nối.
Thực thi lệnh trên một trong các node Master:
redis-cli -h 192.168.1.10 -p 7000 CLUSTER NODES
Kết quả mong đợi: Một danh sách 6 dòng. Mỗi dòng có định dạng <ID> <IP>:<Port>@<BusPort> <MasterID> <Flags> ....
Các node Master sẽ có cờ master, các node Replica sẽ có cờ slave và chỉ thị master <ID-master> phía sau. Tất cả node phải có cờ connected.
Kiểm tra phân bổ Slot (CLUSTER SLOTS)
Lệnh này hiển thị cách 16384 hash slots được chia cho 3 Master. Điều này xác nhận tính chất sharding của cluster.
Thực thi lệnh:
redis-cli -h 192.168.1.10 -p 7000 CLUSTER SLOTS
Kết quả mong đợi: Xuất hiện 3 khối dữ liệu, mỗi khối đại diện cho một Master. Tổng số slots của 3 khối cộng lại phải bằng 16384.
Ví dụ về cấu trúc đầu ra:
- Master 1: slots 0 - 5460 (cùng với replica của nó)
- Master 2: slots 5461 - 10922 (cùng với replica của nó)
- Master 3: slots 10923 - 16383 (cùng với replica của nó)
Mỗi dòng slot sẽ liệt kê IP:Port của Master và IP:Port của Replica tương ứng.
Xác nhận tính sẵn sàng của Cluster
Kiểm tra thông tin tổng quan (CLUSTER INFO)
Đây là lệnh quan trọng nhất để xác nhận cluster đã hoạt động ổn định và sẵn sàng nhận request.
Thực thi lệnh:
redis-cli -h 192.168.1.10 -p 7000 CLUSTER INFO
Kết quả mong đợi: Trong danh sách key-value trả về, bạn phải thấy 2 dòng quan trọng:
cluster_state:ok - Đây là trạng thái duy nhất chấp nhận được.
cluster_slots_assigned:16384 - Xác nhận tất cả slots đã được phân bổ.
cluster_slots_ok:16384 - Xác nhận tất cả slots đều đang hoạt động tốt.
Nếu thấy cluster_state:fail hoặc cluster_slots_ok nhỏ hơn 16384, cluster chưa sẵn sàng.
Test ghi dữ liệu (Write Test)
Để chắc chắn cluster hoạt động thực tế, thử ghi một key vào một node bất kỳ. Redis sẽ tự động hash key và chuyển hướng (redirect) request đến Master chịu trách nhiệm slot đó nếu cần.
Thực thi lệnh ghi dữ liệu:
redis-cli -h 192.168.1.10 -p 7000 SET "user:1001" "nguyen-van-a"
Kết quả mong đợi: Trả về OK.
Thử đọc lại key đó từ một node khác (ví dụ Master 2) để kiểm tra khả năng định tuyến:
redis-cli -h 192.168.1.11 -p 7001 GET "user:1001"
Kết quả mong đợi: Trả về "nguyen-van-a". Nếu trả về lỗi hoặc empty, kiểm tra lại phần CLUSTER SLOTS.
Điều hướng series:
Mục lục: Series: Triển khai Database Caching với Redis Cluster và Ubuntu 24.04
« Phần 3: Cấu hình mạng và bảo mật cơ bản cho từng node Redis
Phần 5: Tối ưu hóa hiệu năng Redis Cluster với cấu hình persistence và memory »