天天看點

Nosql之Redis群集配置

文章目錄

    • 單節點Redis伺服器的問題與解決方法
    • Redis叢集概念
      • Redis叢集介紹
      • Redis叢集的優勢
      • Redis叢集的資料分片
      • Redis以3個節點組成的叢集為例
      • Redis支援添加或者删除節點
      • Redis叢集的主從複制模型
    • 項目案例拓撲圖
    • Redis叢集操作步驟
      • 安裝Redis
      • 修改所有節點的配置檔案
      • Master1上配置操作
      • 測試群集

單節點Redis伺服器的問題與解決方法

  • 問題:
  1. 單點故障點,服務不可以用
  2. 無法處理大量的并發資料請求
  3. 資料丢失–大災難
  • 解決方法:

    搭建Redis叢集

Redis叢集概念

Redis叢集介紹

  • Redis叢集是一個提供在多個Redis間節點共享資料的程式集。
  • Redis叢集并不支援多處理多個Keys的指令,應為這需要在不同節點。
  • 間移動資料,進而達不到想Redis那樣的性能,在高負載的情況下可能會導緻不可預料的錯誤。
  • Redis叢集通過分區來提供一定程度的可用性,在實際環境中檔某個節點當機或則不可達的情況下繼續處理指令。

Redis叢集的優勢

  • 自動分割資料到不同的節點上。
  • 整個叢集的部分節點失敗或者不可達的情況下能夠繼續處理指令。

Redis叢集的資料分片

  • Redis叢集沒有使用一緻性hash,而是引入了哈希槽的概念
  • Redis叢集有16384個哈希槽
  • 每個Key通過CRC16校驗後對16384取模來決定放置哪個槽
  • 叢集的每個節點負責一部分hash槽

Redis以3個節點組成的叢集為例

  • 節點A包含0到5500号哈希槽
  • 節點B包含5501到11000号哈希槽
  • 節點C包含11001到16384号哈希槽

Redis支援添加或者删除節點

  • 添加删除節點無需停止服務。比如如果我想添加節點D,我需要移動節點A、B、C中的部分槽到D上;如果我想移除節點A,需要将A中的槽移到B和C節點上,然後将沒有任何槽的A節點從叢集中移除

Redis叢集的主從複制模型

  • 叢集中具有A、B、C三個節點,如果節點B失敗了,整個叢集就會因缺少5501-11000這個範圍的槽而不可以用。
  • 為每個節點添加一個從節點A1、B1、C1整個叢集便有三個master節點和三個slave節點組成,在節點B失敗後,叢集選舉B1位新的主節點繼續服務。當B和B1都失敗後,叢集将不可用。

項目案例拓撲圖

Nosql之Redis群集配置

Redis叢集操作步驟

安裝Redis

  • 略(以前部落格有安裝教程)

修改所有節點的配置檔案

  1. 修改配置檔案
vim /etc/redis/6379.conf
#70行删除原來的127.0.0.1 然後添加各主機對應的IP位址
bind 192.168.18.101
#839行開啟群集功能
cluster-enabled yes
#847行開啟群集節點配置檔案
cluster-config-file nodes-6379.conf
#853行開啟群集逾時時間
cluster-node-timeout 15000
#930行去掉注釋yes改成no
cluster-require-full-coverage no
           
  1. 重新開機服務
/etc/init.d/redis_6379 restart
           

Master1上配置操作

  1. 安裝Ruby
yum -y install ruby rubygems
           
  1. 上傳redis-3.2.0.gem并安裝
gem install redis --version 3.2.0
           
Nosql之Redis群集配置
  1. 将所有節點加入到群集中
redis-cli --cluster create --cluster-replicas 1 192.168.18.101:6379 192.168.18.102:6379 192.168.18.103:6379 192.168.18.104:6379 192.168.18.105:6379 192.168.18.106:6379
           
Nosql之Redis群集配置
Nosql之Redis群集配置
Nosql之Redis群集配置

測試群集

  1. 遠端連接配接Redis資料庫
redis-cli -h 192.168.18.102 -p 6379 -c
 192.168.18.102:6379> set student Alice
 -> Redirected to slot [5249] located at 192.168.18.101:6379
 OK
 192.168.18.101:6379> KEYS *
 1) "student"
 192.168.18.101:6379> get student
"Alice"
           
  1. 檢視叢集狀态
192.168.18.103:6379> cluster info
           
Nosql之Redis群集配置
  1. 檢視節點資訊
192.168.18.103:6379> cluster nodes
           
Nosql之Redis群集配置