<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在Redis6.x版本中主要增加了多執行緒的新特性,多線性對於高並行場景是非常有必要的。
Redis6.x新特性如下:
Redis Cluster叢集原理可以檢視之前釋出的文章。
環境規劃:
IP | 主機名 | 埠號 | 節點 |
---|---|---|---|
192.168.20.10 | redis-cluster | 6701 | master |
192.168.20.10 | redis-cluster | 6702 | slave—>6705的master |
192.168.20.10 | redis-cluster | 6703 | master |
192.168.20.10 | redis-cluster | 6704 | slave—>6701的master |
192.168.20.10 | redis-cluster | 6705 | master |
192.168.20.10 | redis-cluster | 6706 | slave—>6703的master |
架構圖:
Reids叢集採用三主三從交叉複製架構,由於伺服器數量有限,在一臺機器中模擬出叢集的效果,在實際生產環境中,需要準備三臺機器,每臺機器中分別部署兩臺Redis節點,一主一從,交叉備份。
1.下載reids [root@k8s-master1 /data/]# wget https://download.redis.io/releases/redis-6.2.6.tar.gz 2.解壓並安裝redis [root@k8s-master1 /data/]# tar xf redis-6.2.6.tar.gz [root@k8s-master1 /data/]# cd redis-6.2.6 [root@k8s-master1 /data/redis-6.2.6]# make
1.建立Redis Cluster各叢集節點的組態檔存放路徑 [root@k8s-master ~]# mkdir /data/redis-6.2.6-cluster/{bin,conf,data,var,logs} -p [root@k8s-master ~]# ll /data/redis-6.2.6-cluster/ 總用量 0 drwxr-xr-x 2 root root 6 3月 31 15:36 bin #可執行檔案 drwxr-xr-x 2 root root 6 3月 31 15:36 conf #組態檔 drwxr-xr-x 2 root root 6 3月 31 15:36 data #資料檔案 drwxr-xr-x 2 root root 6 3月 31 15:36 log #紀錄檔檔案 drwxr-xr-x 2 root root 6 3月 31 15:36 var #pid檔案 2.準備redis可執行命令 [root@k8s-master1 /data/redis-6.2.6]# cp src/redis-benchmark /data/redis-6.2.6-cluster/bin [root@k8s-master1 /data/redis-6.2.6]# cp src/redis-check-aof /data/redis-6.2.6-cluster/bin [root@k8s-master1 /data/redis-6.2.6]# cp src/redis-check-rdb /data/redis-6.2.6-cluster/bin [root@k8s-master1 /data/redis-6.2.6]# cp src/redis-cli /data/redis-6.2.6-cluster/bin [root@k8s-master1 /data/redis-6.2.6]# cp src/redis-sentinel /data/redis-6.2.6-cluster/bin [root@k8s-master1 /data/redis-6.2.6]# cp src/redis-server /data/redis-6.2.6-cluster/bin [root@k8s-master1 /data/redis-6.2.6]# cp src/redis-trib.rb /data/redis-6.2.6-cluster/bin
redis6.2.6版本組態檔所有內容如下,主要設定帶註釋的行。
bind 0.0.0.0 protected-mode no #關閉保護模式 port 6701 #埠號 tcp-backlog 511 timeout 0 tcp-keepalive 300 daemonize yes #後臺執行 pidfile /data/redis-6.2.6-cluster/var/redis_6701.pid #pid存放 loglevel notice logfile /data/redis-6.2.6-cluster/logs/redis_6701.log #紀錄檔存放路徑 databases 16 always-show-logo yes #是否顯示總紀錄檔 set-proc-title yes proc-title-template "{title} {listen-addr} {server-mode}" stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename redis_6701.rdb #持久化資料檔名稱 rdb-del-sync-files no dir /data/redis-6.2.6-cluster/data #持久化資料檔案存放路徑 replica-serve-stale-data yes replica-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-diskless-load disabled repl-disable-tcp-nodelay no replica-priority 100 acllog-max-len 128 lazyfree-lazy-eviction no lazyfree-lazy-expire no lazyfree-lazy-server-del no replica-lazy-flush no lazyfree-lazy-user-del no lazyfree-lazy-user-flush no oom-score-adj no oom-score-adj-values 0 200 800 disable-thp yes appendonly no appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes aof-use-rdb-preamble yes lua-time-limit 5000 cluster-enabled yes #開啟叢集模式 cluster-config-file nodes_6701.conf #叢集模式組態檔名稱 cluster-node-timeout 15000 #叢集超時時間 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 stream-node-max-bytes 4096 stream-node-max-entries 100 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit replica 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 dynamic-hz yes aof-rewrite-incremental-fsync yes rdb-save-incremental-fsync yes jemalloc-bg-thread yes
1.複製二進位制中的組態檔
[root@k8s-master redis-6.2.6]# cp redis.conf /data/redis-6.2.6-cluster/conf/
2.Reids 6701節點組態檔內容
[root@k8s-master conf]# vim redis_6701.conf bind 0.0.0.0 #監聽地址 protected-mode no #關閉保護模式 port 6701 #埠號 daemonize yes #後臺執行 pidfile /data/redis-6.2.6-cluster/var/redis_6701.pid #pid存放路徑 logfile /data/redis-6.2.6-cluster/logs/redis_6701.log #紀錄檔存放路徑 always-show-logo yes #是否顯示總紀錄檔 dbfilename redis_6701.rdb #持久化資料檔名稱 dir /data/redis-6.2.6-cluster/data #持久化資料檔案存放路徑 cluster-enabled yes #開啟叢集模式 cluster-config-file nodes_6701.conf #叢集模式組態檔名稱 cluster-node-timeout 15000 #叢集超時時間
3.Reids 6702節點組態檔內容
[root@k8s-master conf]# vim redis_6702.conf bind 0.0.0.0 #監聽地址 protected-mode no #關閉保護模式 port 6702 #埠號 daemonize yes #後臺執行 pidfile /data/redis-6.2.6-cluster/var/redis_6702.pid #pid存放路徑 logfile /data/redis-6.2.6-cluster/logs/redis_6702.log #紀錄檔存放路徑 always-show-logo yes #是否顯示總紀錄檔 dbfilename redis_6702.rdb #持久化資料檔名稱 dir /data/redis-6.2.6-cluster/data #持久化資料檔案存放路徑 cluster-enabled yes #開啟叢集模式 cluster-config-file nodes_6702.conf #叢集模式組態檔名稱 cluster-node-timeout 15000 #叢集超時時間
4.Reids 6703節點組態檔內容
[root@k8s-master conf]# vim redis_6702.conf bind 0.0.0.0 #監聽地址 protected-mode no #關閉保護模式 port 6703 #埠號 daemonize yes #後臺執行 pidfile /data/redis-6.2.6-cluster/var/redis_6703.pid #pid存放路徑 logfile /data/redis-6.2.6-cluster/logs/redis_6703.log #紀錄檔存放路徑 always-show-logo yes #是否顯示總紀錄檔 dbfilename redis_6703.rdb #持久化資料檔名稱 dir /data/redis-6.2.6-cluster/data #持久化資料檔案存放路徑 cluster-enabled yes #開啟叢集模式 cluster-config-file nodes_6703.conf #叢集模式組態檔名稱 cluster-node-timeout 15000
5.Reids 6704節點組態檔內容
[root@k8s-master conf]# vim redis_6702.conf bind 0.0.0.0 #監聽地址 protected-mode no #關閉保護模式 port 6704 #埠號 daemonize yes #後臺執行 pidfile /data/redis-6.2.6-cluster/var/redis_6704.pid #pid存放路徑 logfile /data/redis-6.2.6-cluster/logs/redis_6704.log #紀錄檔存放路徑 always-show-logo yes #是否顯示總紀錄檔 dbfilename redis_6704.rdb #持久化資料檔名稱 dir /data/redis-6.2.6-cluster/data #持久化資料檔案存放路徑 cluster-enabled yes #開啟叢集模式 cluster-config-file nodes_6704.conf #叢集模式組態檔名稱 cluster-node-timeout 15000
6.Reids 6705節點組態檔內容
[root@k8s-master conf]# vim redis_6702.conf bind 0.0.0.0 #監聽地址 protected-mode no #關閉保護模式 port 6705 #埠號 daemonize yes #後臺執行 pidfile /data/redis-6.2.6-cluster/var/redis_6705.pid #pid存放路徑 logfile /data/redis-6.2.6-cluster/logs/redis_6705.log #紀錄檔存放路徑 always-show-logo yes #是否顯示總紀錄檔 dbfilename redis_6705.rdb #持久化資料檔名稱 dir /data/redis-6.2.6-cluster/data #持久化資料檔案存放路徑 cluster-enabled yes #開啟叢集模式 cluster-config-file nodes_6705.conf #叢集模式組態檔名稱 cluster-node-timeout 15000
7.Reids 6706節點組態檔內容
[root@k8s-master conf]# vim redis_6702.conf bind 0.0.0.0 #監聽地址 protected-mode no #關閉保護模式 port 6706 #埠號 daemonize yes #後臺執行 pidfile /data/redis-6.2.6-cluster/var/redis_6706.pid #pid存放路徑 logfile /data/redis-6.2.6-cluster/logs/redis_6706.log #紀錄檔存放路徑 always-show-logo yes #是否顯示總紀錄檔 dbfilename redis_6706.rdb #持久化資料檔名稱 dir /data/redis-6.2.6-cluster/data #持久化資料檔案存放路徑 cluster-enabled yes #開啟叢集模式 cluster-config-file nodes_6706.conf #叢集模式組態檔名稱 cluster-node-timeout 15000
1)啟動redis各個節點
[root@k8s-master ~]# /data/redis-6.2.6-cluster/bin/redis-server /data/redis-6.2.6-cluster/conf/redis_6701.conf [root@k8s-master ~]# /data/redis-6.2.6-cluster/bin/redis-server /data/redis-6.2.6-cluster/conf/redis_6702.conf [root@k8s-master ~]# /data/redis-6.2.6-cluster/bin/redis-server /data/redis-6.2.6-cluster/conf/redis_6703.conf [root@k8s-master ~]# /data/redis-6.2.6-cluster/bin/redis-server /data/redis-6.2.6-cluster/conf/redis_6704.conf [root@k8s-master ~]# /data/redis-6.2.6-cluster/bin/redis-server /data/redis-6.2.6-cluster/conf/redis_6705.conf [root@k8s-master ~]# /data/redis-6.2.6-cluster/bin/redis-server /data/redis-6.2.6-cluster/conf/redis_6706.conf
2)檢視啟動的程序
[root@k8s-master ~]# ps aux | grep redis root 22166 0.2 0.0 164964 3208 ? Ssl 16:17 0:00 /data/redis-6.2.6-cluster/bin/redis-server 0.0.0.0:6701 [cluster] root 22179 0.2 0.0 164964 3212 ? Ssl 16:17 0:00 /data/redis-6.2.6-cluster/bin/redis-server 0.0.0.0:6702 [cluster] root 22235 0.2 0.0 164964 3216 ? Ssl 16:17 0:00 /data/redis-6.2.6-cluster/bin/redis-server 0.0.0.0:6703 [cluster] root 23748 0.1 0.0 164964 3220 ? Ssl 16:18 0:00 /data/redis-6.2.6-cluster/bin/redis-server 0.0.0.0:6704 [cluster] root 24093 0.1 0.0 164964 3224 ? Ssl 16:19 0:00 /data/redis-6.2.6-cluster/bin/redis-server 0.0.0.0:6705 [cluster] root 24513 0.0 0.0 164964 3212 ? Ssl 16:19 0:00 /data/redis-6.2.6-cluster/bin/redis-server 0.0.0.0:6706 [cluster]
3)檢視各個節點生成的檔案
在任意一個節點中操作即可。
[root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6701 127.0.0.1:6701> CLUSTER MEET 192.168.20.10 6702 OK 127.0.0.1:6701> CLUSTER MEET 192.168.20.10 6703 OK 127.0.0.1:6701> CLUSTER MEET 192.168.20.10 6704 OK 127.0.0.1:6701> CLUSTER MEET 192.168.20.10 6705 OK 127.0.0.1:6701> CLUSTER MEET 192.168.20.10 6706 OK 127.0.0.1:6701> CLUSTER NODES 1de9d406a489e3aedc2f7743114f21700de5d151 192.168.20.10:6702@16702 master - 0 1648715495901 1 connected f1d6f55a4a66fb97b3be2dff70cf0b8984a9de42 192.168.20.10:6704@16704 master - 0 1648715494000 0 connected 14bd716bdc2726bfbf39eb14c88f072970059676 192.168.20.10:6706@16706 master - 0 1648715494894 5 connected 7eb4466a8558ab389a9d92d115d5b420fa2a8ffc 192.168.20.10:6701@16701 myself,master - 0 1648715494000 2 connected b7e93e3f3925c6db664afc59cb08c2abced2933d 192.168.20.10:6703@16703 master - 0 1648715494000 3 connected c502c900224a0ae6173631746de92d012bd43da3 192.168.20.10:6705@16705 master - 0 1648715494000 4 connected
操作完成後會同步各節點的叢集組態檔中。
1)分配槽位
[root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6701 cluster addslots {0..5461} OK [root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6703 cluster addslots {5462..10922} OK [root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6705 cluster addslots {10923..16383} OK
2)檢視叢集狀態
分配完槽位之後叢集的狀態就會處於ok。
[root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6701 127.0.0.1:6701> CLUSTER INFO cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:6 cluster_size:3 cluster_current_epoch:5 cluster_my_epoch:2 cluster_stats_messages_ping_sent:248 cluster_stats_messages_pong_sent:246 cluster_stats_messages_meet_sent:5 cluster_stats_messages_sent:499 cluster_stats_messages_ping_received:246 cluster_stats_messages_pong_received:253 cluster_stats_messages_received:499
3)檢視叢集中的節點資訊
雖然現在槽位已經分配完畢,但是當下叢集中所有的節點都處於Master角色,還是無法使用。
127.0.0.1:6701> CLUSTER NODES 1de9d406a489e3aedc2f7743114f21700de5d151 192.168.20.10:6702@16702 master - 0 1648715802089 1 connected f1d6f55a4a66fb97b3be2dff70cf0b8984a9de42 192.168.20.10:6704@16704 master - 0 1648715802000 0 connected 14bd716bdc2726bfbf39eb14c88f072970059676 192.168.20.10:6706@16706 master - 0 1648715802000 5 connected 7eb4466a8558ab389a9d92d115d5b420fa2a8ffc 192.168.20.10:6701@16701 myself,master - 0 1648715803000 2 connected 0-5461 b7e93e3f3925c6db664afc59cb08c2abced2933d 192.168.20.10:6703@16703 master - 0 1648715803095 3 connected 5462-10922 c502c900224a0ae6173631746de92d012bd43da3 192.168.20.10:6705@16705 master - 0 1648715804100 4 connected 10923-16383
接下來去設定三主三從交叉複製模式,讓沒有槽位的節點複製有槽位的節點,也就是主從關係。
1)獲取叢集主節點的資訊
[root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6701 cluster nodes | egrep '6701|6703|6705' | awk '{print $1,$2}' 7eb4466a8558ab389a9d92d115d5b420fa2a8ffc 192.168.20.10:6701@16701 b7e93e3f3925c6db664afc59cb08c2abced2933d 192.168.20.10:6703@16703 c502c900224a0ae6173631746de92d012bd43da3 192.168.20.10:6705@16705
2)設定交叉複製
1.設定6702節點複製6705節點,充當6705 master節點的slave [root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6702 127.0.0.1:6702> CLUSTER REPLICATE c502c900224a0ae6173631746de92d012bd43da3 OK 2.設定6704節點複製6701節點,充當6701 master節點的slave [root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6704 127.0.0.1:6704> CLUSTER REPLICATE 7eb4466a8558ab389a9d92d115d5b420fa2a8ffc OK 3.設定6706節點複製6703節點,充當6703 master節點的slave [root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6706 127.0.0.1:6706> CLUSTER REPLICATE b7e93e3f3925c6db664afc59cb08c2abced2933d OK
3)檢視叢集節點資訊
已經是三主三從交叉複製叢集模式了。
[root@redis-cluster ~]# /data/redis-6.2.6-cluster/bin/redis-cli -p 6701 127.0.0.1:6701> CLUSTER NODES 1de9d406a489e3aedc2f7743114f21700de5d151 192.168.20.10:6702@16702 slave c502c900224a0ae6173631746de92d012bd43da3 0 1648716239215 4 connected f1d6f55a4a66fb97b3be2dff70cf0b8984a9de42 192.168.20.10:6704@16704 slave 7eb4466a8558ab389a9d92d115d5b420fa2a8ffc 0 1648716236175 2 connected 14bd716bdc2726bfbf39eb14c88f072970059676 192.168.20.10:6706@16706 slave b7e93e3f3925c6db664afc59cb08c2abced2933d 0 1648716238000 3 connected 7eb4466a8558ab389a9d92d115d5b420fa2a8ffc 192.168.20.10:6701@16701 myself,master - 0 1648716237000 2 connected 0-5461 b7e93e3f3925c6db664afc59cb08c2abced2933d 192.168.20.10:6703@16703 master - 0 1648716238192 3 connected 5462-10922 c502c900224a0ae6173631746de92d012bd43da3 192.168.20.10:6705@16705 master - 0 1648716237184 4 connected 10923-16383
前提條件需要先將6個節點搭建起來,再使用下面的命令快速將三主三從叢集部署起來。
[root@redis-cluster redis-6.2.6-cluster]# /data/redis-6.2.6-cluster/bin/redis-cli --cluster create 192.168.20.10:6701 192.168.20.10:6702 192.168.20.10:6703 192.168.20.10:6704 192.168.20.10:6705 192.168.20.10:6706 --cluster-replicas 1 Can I set the above configuration? (type 'yes' to accept): yes #--cluster起到的作用就是省掉了節點發現、分配槽位、交叉複製的過程,自動替我們分配。
從輸出資訊中我們清晰的看到主從的複製關係以及分配的槽位。
>>> Performing hash slots allocation on 6 nodes... Master[0] -> Slots 0 - 5460 Master[1] -> Slots 5461 - 10922 Master[2] -> Slots 10923 - 16383 Adding replica 192.168.20.10:6705 to 192.168.20.10:6701 Adding replica 192.168.20.10:6706 to 192.168.20.10:6702 Adding replica 192.168.20.10:6704 to 192.168.20.10:6703
6701、6702、6703節點為主節點,6704、6705、6706節點為從節點。
6704複製6703的主節點、6705複製6701的主節點、6706複製6702的主節點。
架構圖如下:
到此這篇關於基於Redis6.2.6版本部署Redis Cluster叢集的文章就介紹到這了,更多相關Redis Cluster叢集部署內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45