Phần 8: Cài đặt Redis Cluster + kiểm tra cluster.

Seri Redis của chúng ta gồm những phần sau: Phần 1: Cài đặt redis cơ bản + Turning redis. Phần 2: Lệnh quản trị redis cơ bản Phần 3: Bảo mật cho redis. (redis security) Phần 4: Access List Redis (tính năng mới từ bản 6) Phần 5: Các mô hình Redis replication, Ưu và

Seri Redis của chúng ta gồm những phần sau:

Phần 1: Cài đặt redis cơ bản + Turning redis.
Phần 2: Lệnh quản trị redis cơ bản
Phần 3: Bảo mật cho redis. (redis security)
Phần 4: Access List Redis (tính năng mới từ bản 6)
Phần 5: Các mô hình Redis replication, Ưu và nhược điểm
Phần 6: Redis Master-Salve sử dụng ACL
Phần 7: Redis Sentinel sử dụng ACL
Phần 8: Cài đặt Redis Cluster + kiểm tra cluster hoạt động.
Phần 9: Thêm và xóa node redis cluster, di chuyển data đơn sang cluster và ngược lại
Phần ??: Redis RDB và AOF nên chọn cái nào?
Continue...

Phần 8: Cài đặt Redis Cluster + kiểm tra cluster.

8.1 Question & Answer:

Q1: Redis cluster chia dữ liệu như nào?
A1: Toàn bộ KEY của redis sẽ được chia là 16384 slot. VD ta có 3 node master (16384 / 3 =~ 5461 slot).

8.2. Mô hình cluster hay gặp

6 node cluster – 3 server (production)

Mô tả 
- 1 server chết > OK. Vẫn còn (33%_node2) + (33%_node3) + (33% Slave của server_1 đặt trên server 3) = Tổng 100% data
- 2 server chết > FAIL . Không thể load đc 100% data mà chỉ có 66% có thể gọi ra đc.
- 3 server chết > FAIL
- 3 slave ta có thể đặt trên 3 server khác, trường hợp 3 master chết, ta vẫn có đủ 100% data sharding.

6 node cluster – 1 server (lab/test env)

8.3 Cài đặt

Bài này tôi sẽ cài cả 6 redis trên 1 server. Bao gồm 3 master (33% dữ liệu * 3) và 3 slave dùng để backup cho master.

  • 7001(M)-7002(S)
  • 7003(M)-7004(S)
  • 7005(M)-7006(S)

Bước 1: Cài đặt redis basic

Truy cập https://redis.io/download/ tải bản mới nhất (2023-01-18)
# yum install gcc wget systemd-devel -y
# mkdir -p /opt/setup
# cd /opt/setup
# wget https://github.com/redis/redis/archive/7.0.8.tar.gz
# tar -xvzf 7.0.8.tar.gz
# cd redis-7.0.8
# make
Khi make install, các file chạy bin execute sẽ được copy sang thư mục /usr/local/bin/
# make install

Bước 2: Chuẩn bị config cho Cluster

2.1 Chuẩn bị 6 file config

# adduser redis

# vim /opt/redis_cluster_config.sh
CUR_DIR="/opt"
cd $CUR_DIR
mkdir -p ${CUR_DIR}/redis-cluster
cd ${CUR_DIR}/redis-cluster

for port in 7001 7002 7003 7004 7005 7006; do
  mkdir -p ${CUR_DIR}/redis-cluster/${port}
  cat > ${CUR_DIR}/redis-cluster/${port}/redis_${port}.conf <<EOF
port $port
appendonly no
cluster-enabled yes
cluster-node-timeout 5000
dir ${CUR_DIR}/redis-cluster/${port}/
cluster-config-file ${CUR_DIR}/redis-cluster/${port}/nodes_${port}.conf
logfile ${CUR_DIR}/redis-cluster/${port}/nodes_${port}.log
requirepass "komatkhau"
masterauth "komatkhau"
EOF
chown -R redis.redis /opt/redis-cluster
done

Thực hiện chạy
# bash /opt/redis_cluster_config.sh

2.2 Chuẩn bị 6 file systemd

# vim /opt/redis_cluster_systemd.sh
CUR_DIR="/opt"
cd $CUR_DIR
for port in 7001 7002 7003 7004 7005 7006; do
  cat > /etc/systemd/system/redis_${port}.service <<EOF
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target


[Service]
ExecStart=$(which redis-server) ${CUR_DIR}/redis-cluster/${port}/redis_${port}.conf --supervised systemd
ExecStop=/bin/redis-cli -h 127.0.0.1 -p ${port} -a komatkhau shutdown
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
done

Thực hiện chạy
# bash /opt/redis_cluster_systemd.sh
systemctl daemon-reload
systemctl restart redis_7001
systemctl restart redis_7002
systemctl restart redis_7003
systemctl restart redis_7004
systemctl restart redis_7005
systemctl restart redis_7006

[root@localhost redis-7.0.8]# ps aux | grep redis
redis      6230  0.0  0.4 199272  9300 ?        Ssl  02:31   0:00 /usr/local/bin/redis-server *:7001 [cluster]
redis      6241  0.1  0.4 196200  9276 ?        Ssl  02:31   0:00 /usr/local/bin/redis-server *:7002 [cluster]
redis      6252  0.1  0.4 196200  9276 ?        Ssl  02:31   0:00 /usr/local/bin/redis-server *:7003 [cluster]
redis      6263  0.5  0.4 196200  9276 ?        Ssl  02:31   0:00 /usr/local/bin/redis-server *:7004 [cluster]
redis      6274  0.5  0.4 196200  9276 ?        Ssl  02:31   0:00 /usr/local/bin/redis-server *:7005 [cluster]
redis      6285  0.5  0.4 196200  9272 ?        Ssl  02:31   0:00 /usr/local/bin/redis-server *:7006 [cluster]

Bước 3: Join 6 node vào cluster

Lệnh join 6 node vào cluster. 3 node đầu sẽ là Master, 3 node tiếp theo sẽ là slave
# redis-cli -a komatkhau --cluster create 127.0.0.1:7001 127.0.0.1:7003 127.0.0.1:7005 127.0.0.1:7002 127.0.0.1:7004 127.0.0.1:7006 --cluster-replicas 1

(Ví dụ ta cài trên 3 server 88.11-22-33, tương ứng với lệnh mới như sau redis-cli --cluster create 192.168.88.11:7001 192.168.88.22:7003 192.168.88.33:7005 192.168.88.11:7002 192.168.88.22:7004 192.168.88.33:7006 --cluster-replicas 1

8.4 Các lệnh kiểm tra cluster

Note: Option -c luôn phải có khi chạy trong cluster.

Lệnh 1: Kiểm tra nodes

redis-cli -a komatkhau -c -h 127.0.0.1 -p 7001 CLUSTER NODES

Ta để ý trên ảnh, 1-3-5 là master, 2-4-6 là slave. Ngoài ra đặc biệt quan tâm đến số SLOTS của redis

Tất cả mọi redis cluster sẽ chia làm 16384 slot. Mỗi slot được chia đều cho cả 3 node (chia bánh, xếp bài)

  • 0 đến 5460 cho master1
  • 5461 đến 10922 cho master2
  • 10923 đến 16383 cho master 3

Lệnh 2: Kiểm tra cluster/ số slot /số keys toàn cụm

redis-cli -a komatkhau --cluster check 127.0.0.1:7001

Lệnh 3: Kiểm tra write/read của cluster

redis-cli -a komatkhau -c -h 127.0.0.1 -p 7001 SET TEST_KEY VALUE_123
redis-cli -a komatkhau -c -h 127.0.0.1 -p 7002 GET TEST_KEY
redis-cli -a komatkhau -c -h 127.0.0.1 -p 7003 GET TEST_KEY
redis-cli -a komatkhau -c -h 127.0.0.1 -p 7004 GET TEST_KEY
redis-cli -a komatkhau -c -h 127.0.0.1 -p 7005 GET TEST_KEY
redis-cli -a komatkhau -c -h 127.0.0.1 -p 7006 GET TEST_KEY

Ta có 1 cách khác để kiểm tra GET key
[root@localhost opt]# redis-cli -a komatkhau -c -h 127.0.0.1 -p 7002
127.0.0.1:7002> GET TEST_KEY
-> Redirected to slot [14190] located at 127.0.0.1:7005
"VALUE_123"
Chú ý đến đoạn redirect, tức là khi SET ở 7001, nhưng thực chất data redirect write ở node 5005. Nên khi đọc, redis hiển thị sang 7005 đọc Redirected to slot [14190] located at 127.0.0.1:7005

Lệnh 4: Hoán đổi Slave thành Master trong cluster

Ta vào 1 node slave, sau đó chạy lệnh

redis-cli -a komatkhau -c -h 127.0.0.1 -p 7002
> cluster failover

Phần tiếp theo: https://viblo.asia/p/phan-9-them-va-xoa-node-redis-cluster-di-chuyen-data-don-sang-cluster-va-nguoc-lai-Yym40mDdJ91

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ