- vừa được xem lúc

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

0 0 20

Người đăng: Dương Anh Tuấn

Theo Viblo Asia

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

Bình luận

Bài viết tương tự

- vừa được xem lúc

Caching đại pháp 2: Cache thế nào cho hợp lý?

Caching rất dễ. Mình không nói đùa đâu, caching rất là dễ. Ai cũng có thể làm được chỉ sau 10 phút đọc tutorial. Nó cũng giống như việc đứa trẻ lên 3 đã có thể cầm bút để vẽ vậy.

0 0 126

- vừa được xem lúc

Caching đại pháp 1: Nấc thang lên level của developer

Bí quyết thành công trong việc đáp ứng hệ thống triệu user của những công ty lớn (và cả công ty nhỏ). Tại sao caching lại là kỹ thuật tối quan trọng để phù phép ứng dụng rùa bò của chúng ta thành siêu phẩm vạn người mê.

0 0 82

- vừa được xem lúc

Cache dữ liệu Nodejs với Redis

Một tí gọi là lý thuyết để anh em tham khảo. Cache là gì. Lợi ích của việc cache data. .

0 0 111

- vừa được xem lúc

Nguyên tắc hoạt động của redis server

Sự ra đời của Redis. . Câu chuyện bắt đầu khi tác giả của Redis, Salvatore Sanfilippo. (nickname: antirez), cố gắng làm những công việc gần như là không.

0 0 97

- vừa được xem lúc

Viết ứng dụng chat realtime với Laravel, VueJS, Redis và Socket.IO, Laravel Echo

Xin chào tất cả các bạn, đây là một trong những bài post đầu tiên của mình. Sau bao năm toàn đi đọc các blog tích luỹ được chút kiến thức của các cao nhân trên mạng.

0 0 918

- vừa được xem lúc

Tìm hiểu tổng quan về Redis

1. Lời mở đầu.

0 0 368