Xem cả loạt bài về Redis tại đây: https://hoctapit.com/category/linux/redis/
Sau khi đã cài đặt redis replication và sentinel chúng ta sẽ đặt câu hỏi:
Giả dụ cấu hình địa chỉ của con master trong code, nhỡ nó chết, con khác lên làm master thì sao mà code kết nối được đến con mới?
HA proxy sẽ giải quyết việc đó bằng cách Load balancing.
Cài đặt Haproxy:
yum install haproxy
Mở file cấu hình:
vi /etc/haproxy/haproxy.cfg
Thêm vào dưới cùng:
listen redis_6379 bind 192.168.1.10:6379 mode tcp timeout connect 3h timeout server 3h timeout client 3h option tcp-check tcp-check send PING\r\n tcp-check expect string +PONG tcp-check send info\ replication\r\n tcp-check expect string role:master tcp-check send QUIT\r\n tcp-check expect string +OK server gamota-nap-redis1 192.168.1.1:6379 check inter 1s server gamota-nap-redis2 192.168.1.2:6379 check inter 1s server gamota-nap-redis3 192.168.1.3:6379 check inter 1s
Giải thích sơ qua:
bind 192.168.1.10:6379: IP của con Haproxy, port 6379. Bây giờ bạn sẽ dùng IP và port này để cấu hình trong code. Lưu ý redis dùng nội bộ thôi thì đừng có bind *:6379 bạn nhé
Cấu hình này sẽ check cả 3 con redis, con nào là master nó sẽ đẩy dữ liệu xuống con đó. Dù cho master chết, con khác lên thay nó vẫn sẽ detect được và ghi vào nên không lo.
Restart Haproxy và test thử bằng cách telnet 192.168.1.10 6379, nếu thấy thông là OK.