redis集羣的搭建

集羣中至少有3個節點(便於投票),每個節點都有一個備份節點(便於容錯機制),需要6臺服務器,搭建僞分佈式,需要6個redis的實例(redis的兩種持久化的過程RDBAOF,兩個可以同時用,恢復的時候用AOF)

槽的分配,因爲有3個節點(總共有16384槽位)

1號節點:分配的槽位0-5461(16384/3=5461)

2號節點:分配的槽位5462--1094

3號節點:分配的槽位1094--16383

搭建集羣的步驟:

  1. 準備gcc環境(redis在linux環境下,是以源碼的形式)
  2. 上傳redis源碼
  3. 創建/usr/local/redis-cluster目錄,然後安裝6個redis實例,分別安裝的目錄結構如下:

/usr/local/redis-cluster/redis-1

/usr/local/redis-cluster/redis-2

/usr/local/redis-cluster/redis-3

/usr/local/redis-cluster/redis-4

/usr/local/redis-cluster/redis-5

/usr/local/redis-cluster/redis-6

   4.拷貝redis.config分別到/usr/local/redis-cluster/redis-*/bin目錄下

   5.到redis.config的配置文件中修改兩處:

1.修改端口分別是7001...7006

 2.Cluster-enable yes前面的註釋取消(允許開啓集羣)

   6.啓動每個實例

    7.利用ruby腳本將所有的實例關聯起來(創建集羣)只需要運行命令即可

./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005  192.168.25.153:7006

顯示結果

  

解析: creating cluster 下面的6行,表示連接到對應的節點(ip+端口號)

Using 3master:下面三行,表示3個主節點,分別如下

下面的三行表示從節點以及對應的主節點

    8.使用客戶端連接集羣
           使用客戶端連接集羣: redis01/redis-cli -h 192.168.25.148 -p 7001 -c

           其中-c代表連接集羣(以下表示連接成功)

    9.問題

        問題1:集羣情況下連接7001,分配的槽位5798(對應7002節點的槽範圍內)

      單機連接7001,找不到數據

      

     單機連接7002,找到數據

       原因是數據分配在7002節點所在的槽中,而7001沒有

    插入信息的總結

        集羣中添加數據

           例如:set abc 123時候

  1. 接受添加命令
  2. 通過key(abc),計算插槽值,找到對應的節點
  3. 重定向到該節點執行命令

     集羣中新增新節點

      問題導入:新增節點時,插槽的分配會變化

  1. 新增的節點,不會出現相應額插槽值
  2. 分配插槽值 (需要命令)
  1. 重新分配
  2. 每個舊的節點給新的節點分配100(自己寫入)個
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章