首頁 > 軟體

Redis高可用叢集redis-cluster詳解

2022-03-20 13:02:49

哨兵模式主要解決了手動切換主從節點的問題

1 , 哨兵模式的缺陷

.主從節點切換的時候存在存取瞬斷,等待時間較長,

.只有一個master節點提供寫,slave節點提供讀,儘管寫的效率是10萬/秒,在電商大促時,寫的壓力全部集中在master節點上。

.master節點的記憶體不能設定的太大,否則持久化檔案過大,影響主從同步

2,redis-cluster叢集模式

Redis Cluster是社群版推出的Redis分散式叢集解決方案,主要解決Redis分散式方面的需求,比如,當遇到單機記憶體,並行和流量等瓶頸的時候,Redis Cluster能起到很好的負載均衡的目的。

Redis Cluster叢集節點最小設定6個節點以上(3主3從),其中主節點提供讀寫操作,從節點作為備用節點,不提供請求,只作為故障轉移使用。

優點:

1.沒有中心架構,有多個主節點,每個主節點都可以讀寫

2,資料按照slot分佈儲存在多個節點,節點之間資料共用,可以動態調整資料分佈

3,可線性拓展到1000多個節點,節點可以動態新增和刪除

redis-cluster叢集安裝

1,在redis安裝目錄下/opt/redis-4.0.6/建立redis-cluster目錄,在該目錄下面再建立6個目錄

,分別命名8001,8002,8003,8004,8005,8006。檔案結構如下

2, 將redis安裝目錄/usr/local/redis-4.0.6下的redis.conf檔案拷貝至8001資料夾,並修改以下設定:

daemonize yes #開啟後臺執行
port 8001 #工作埠
bind 172.16.0.15 #繫結機器的內網IP,一定要設定呀老鐵,不要用127.0.0.1
dir /usr/local/redis-cluster/8001/ #指定工作目錄,rdb,aof持久化檔案將會放在該目錄下,不同範例一定要設定不同的工作目錄
cluster-enabled yes #啟用叢集模式
cluster-config-file nodes-8001.conf #生成的叢集組態檔名稱,叢集搭建成功後會自動生成,在工作目錄下
cluster-node-timeout 5000 #節點宕機發現時間,可以理解為主節點宕機後從節點升級為主節點時間
appendonly yes #開啟AOF模式
pidfile /var/run/redis_8001.pid #pid file所在目錄

3. 把8001資料夾下的redis.conf檔案拷貝到其他5個目錄,並重新修改port 、dir、cluster-config-file 三個屬性,這裡可以使用sed命令快速修改

[root@VM_0_15_centos redis-cluster]# sed -i 's/8001/8002/g' 8002/redis.conf
[root@VM_0_15_centos redis-cluster]# sed -i 's/8001/8003/g' 8003/redis.conf
[root@VM_0_15_centos redis-cluster]# sed -i 's/8001/8004/g' 8004/redis.conf
[root@VM_0_15_centos redis-cluster]# sed -i 's/8001/8005/g' 8005/redis.conf
[root@VM_0_15_centos redis-cluster]# sed -i 's/8001/8006/g' 8006/redis.conf

4, 由於建立叢集需要用到redis-trib這個命令,它依賴Ruby和RubyGems,因此我們要先安裝一下

  下載連結:https://pan.baidu.com/s/1kWsf3Rh 密碼:n3pc
從這個連結下載  ruby-2.3.1.tar.gz   和  redis-3.3.0.gem
  tar -zxvf ruby-2.3.1.tar.gz 
  a,  cd ruby-2.3.1
  b,  ./configure -prefix=/opt/ruby
  c,  make && make install   //過程會有點慢,大概5-10分鐘
  d,  然後gem install -l redis-3.3.0.gem  //若沒有gem需要安裝yum install gem -y

5 , Ruby安裝完成之後,我們開始啟動6個節點

[root@VM_0_15_centos redis-cluster]# ./src/redis-server redis-cluster/8001/redis.conf
[root@VM_0_15_centos redis-cluster]# ./src/redis-server redis-cluster/8002/redis.conf
[root@VM_0_15_centos redis-cluster]# ./src/redis-server redis-cluster/8003/redis.conf
[root@VM_0_15_centos redis-cluster]# ./src/redis-server redis-cluster/8004/redis.conf
[root@VM_0_15_centos redis-cluster]# ./src/redis-server redis-cluster/8005/redis.conf
[root@VM_0_15_centos redis-cluster]# ./src/redis-server redis-cluster/8006/redis.conf

6, 檢視redis叢集啟動情況

[root@yangxXNJ-master ~]# ps -ef|grep redis
root      28079   6654  0 22:23 pts/0    00:00:00 ./redis-server *:6379
root      28238      1  0 22:24 ?        00:00:04 ./src/redis-server 192.168.145.4:8001 [cluster]
root      28517      1  0 22:25 ?        00:00:04 ./src/redis-server 192.168.145.4:8002 [cluster]
root      28591      1  0 22:26 ?        00:00:04 ./src/redis-server 192.168.145.4:8003 [cluster]
root      28662      1  0 22:26 ?        00:00:04 ./src/redis-server 192.168.145.4:8004 [cluster]
root      28701      1  0 22:26 ?        00:00:04 ./src/redis-server 192.168.145.4:8005 [cluster]
root      28718      1  0 22:26 ?        00:00:04 ./src/redis-server 192.168.145.4:8006 [cluster]

   6個節點已經正常啟動

7,[root@VM_0_15_centos redis-4.0.6]# ./src/redis-trib.rb create --replicas 1 192.168.145.4:8001 192.168.145.4:8002 192.168.145.4:8003 192.168.145.4:8004 192.168.145.4:8005 192.168.145.4:8006

到此這篇關於Redis高可用叢集redis-cluster的文章就介紹到這了,更多相關redis-cluster高可用叢集內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com