Skip to main content

Hướng dẫn cài đặt Redis Master - Slave trên CentOS 7

Hướng dẫn cài đặt Redis Cluster cơ chế Master - Slave trên hệ điều hành Centos 7.

1. Yêu cầu

- Hệ điều hành: CentOS 7

- Tối thiểu 3 server, trong đó:

    • Master: 192.168.0.1
    • Slave: 192.168.0.2, 192.168.0.3

- Ghi chú: Trong hướng dẫn này sẽ không bật tính năng yêu cầu xác thực của Redis, bằng cách cấu hình protected-mode=no

2. Cơ chế Redis Master - Slave

- Redis sentinel cung cấp một giải pháp HA cho cụm server triển khai Redis. Nghĩa là, khi có một hoặc một số Redis instance down, thì Redis của bạn vẫn hoạt động tốt.

- Redis Sentinel được thiết kế để monitor và quản lý các Redis instances bằng cách thực hiện các task sau:

  • Monitoring: Sentinel check các master và slave nodes theo định kì để đảm bảo các node này luôn luôn hoạt động tốt.
  • Notification: Sentinel có thể send các notification alert khi có một redis instance failure thông tqua một API
  • Automatic failover: Nếu một Master bị fail, Sentinel sẽ khởi tạo một "Failover" process:
    • Pick một running slave và promote SLAVE này lên làm Master.
    • Reconfigured các slaves còn lại thành slave của Master mới.
    • Reconfigured tất cả các Sentinel monitor Master mới.
    • Configuration provider: Sentinel hoạt động như một "source of authority for client’s service discovery". Client connect tới Sentinel để hỏi về địa chỉ của Current Redis Master, nếu một failover xảy ra, Sentinel sẽ report về cho client address của latest Redis Master (mới nhất).

- Các Sentinel liên lạc với nhau, và cùng nhau quyết định rằng một "Master node là unreachable". Quyết định được đưa ra dựa vào quorum value (Là số lượng Sentinel đồng ý rằng Master node là unreachable. Giá trị này chỉ được dùng để detect failure).

- Khi Redis Master down, các Sentinel sẽ liên lạc với nhau và start một cuộc họp bàn:

  • Nếu số lượng Sentinel đồng ý promote một Slave lên làm Master thì quá trình Failover sẽ được start, một Slave sẽ trở thành Master mới. Các redis instance còn laị sẽ được reconfigure thành các slave của master mới.
  • Nếu số lượng Sentinel đồng ý promote một Slave lên làm Master nhỏ hơn quá bán thì quá trình Failover sẽ không diễn ra, hệ thống redis sẽ ngừng hoạt động do không có master mới.

3. Hướng dẫn cài đặt

- Cài đặt remi repo:

yum -y update
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

- Cài đặt Redis:

yum --enablerepo=remi install redis
rpm -qi redis

- Cấu hình firewall:

firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --reload

- Cấu hình sysctl:

+ Cấu hình file /etc/sysctl.conf

vm.overcommit_memory=1

+ Update cấu hình:

sysctl vm.overcommit_memory=1

- Cấu hình systemctl và start service:

systemctl enable --now redis
4. Cấu hình máy chủ Master

- Mở file cấu hình /etc/redis.conf và thực hiện cập nhật các cấu hình sau:

#bind 127.0.0.1
maxmemory-policy noeviction
tcp-keepalive 60
appendonly yes
appendfilename "appendonly.aof"
protected-mode no

- Restart service:

systemctl restart redis.service
5. Cấu hình máy chủ Slave

- Mở file cấu hình /etc/redis.conf và thực hiện cập nhật các cấu hình sau:

#bind 127.0.0.1
replicaof 192.168.0.1 6379
appendonly yes
appendfilename "appendonly.aof"
protected-mode no

- Restart service:

systemctl restart redis.service
6. Cấu hình Sentinel

- Mở file cấu hình /etc/redis-sentinel.conf, xóa các cấu hình cũ và cấu hình như sau:

protected-mode no
port 26379
daemonize yes
pidfile "/var/run/redis-sentinel.pid"
logfile "/var/log/redis/sentinel.log"
dir .
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000

- Cấu hình service và start service:

systemctl enable --now redis-sentinel.service
7. Kiểm tra replication

- Trên máy chủ master:

# redis-cli
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.0.2,port=6379,state=online,offset=575099851,lag=0
slave1:ip=192.168.0.3,port=6379,state=online,offset=575099851,lag=0
master_replid:7df345aed5b6aae7512865c77ee784913d3678d7
master_replid2:d4584c75d2c5e03284e98511dba94cc095ada933
master_repl_offset:575099851
second_repl_offset:16516
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:574051276
repl_backlog_histlen:1048576

- Trên 2 máy chủ slave:

$ redis-cli 
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:575120130
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:7df345aed5b6aae7512865c77ee784913d3678d7
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:575120130
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:574071555
repl_backlog_histlen:1048576

- Giờ bạn thực hiện stop redis trên máy chủ 192.168.0.1, nếu 1 trong 2 máy chủ 192.168.0.2 hoặc 192.168.0.3 được up thành máy chủ redis master là quá trình cài đặt diễn ra thành công

Xem thêm: Hướng dẫn cài đặt Redis trên CentOS 7/6