Redis集羣搭建

Redis下載地址

  1. 新建redis-cluster目錄
  2. 執行wget http://download.redis.io/releases/redis-5.0.5.tar.gz下載redis
  3. 執行tar xzf redis-5.0.5.tar.gz解壓
  4. 進入redis-5.0.5目錄下執行make編譯
  5. 進入/usr/local/redis-cluster下查看目錄
    image

Redis Cluster(Redis集羣)簡介

  • redis是一個開源的key value存儲系統,受到了廣大互聯網公司的青睞。redis3.0版本之前只支持單例模式,在3.0版本及以後才支持集羣;
  • redis集羣採用P2P模式,是完全去中心化的,不存在中心節點或者代理節點;
    redis集羣是沒有統一的入口的,客戶端(client)連接集羣的時候連接集羣中的任意節點(node)即可,集羣內部的節點是相互通信的(PING-PONG機制),每個節點都是一個redis實例;
  • 爲了實現集羣的高可用,即判斷節點是否健康(能否正常使用),redis-cluster有這麼一個投票容錯機制:如果集羣中超過半數的節點投票認爲某個節點掛了,那麼這個節點就掛了(fail)。這是判斷節點是否掛了的方法;
  • 那麼如何判斷集羣是否掛了呢? -> 如果集羣中任意一個節點掛了,而且該節點沒有從節點(備份節點),那麼這個集羣就掛了。這是判斷集羣是否掛了的方法;
  • 那麼爲什麼任意一個節點掛了(沒有從節點)這個集羣就掛了呢? -> 因爲集羣內置了16384個slot(哈希槽),並且把所有的物理節點映射到了這16384[0-16383]個slot上,或者說把這些slot均等的分配給了各個節點。當需要在Redis集羣存放一個數據(key-value)時,redis會先對這個key進行crc16算法,然後得到一個結果。再把這個結果對16384進行求餘,這個餘數會對應[0-16383]其中一個槽,進而決定key-value存儲到哪個節點中。所以一旦某個節點掛了,該節點對應的slot就無法使用,那麼就會導致集羣無法正常工作。
  • 綜上所述,每個Redis集羣理論上最多可以有16384個節點。

集羣搭建

redis 5.0版本 集羣搭建不需要我們安裝ruby就可以搭建成功,並且redis給我們提供了快速搭建腳本,執行utils/create-cluster/ 目錄下的create-cluster腳本 就可以快速搭建,該腳本提供以下幾個命令供我們使用

echo "Usage: $0 [start|create|stop|watch|tail|clean]"
echo "start       -- Launch Redis Cluster instances."   創建redis集羣實例
echo "create      -- Create a cluster using redis-cli --cluster create."  搭建redis集羣
echo "stop        -- Stop Redis Cluster instances." 停止redis集羣實例
echo "watch       -- Show CLUSTER NODES output (first 30 lines) of first node."
echo "tail <id>   -- Run tail -f of instance at base port + ID."
echo "clean       -- Remove all instances data, logs, configs." 刪除生成的日誌,配置,數據文件
echo "clean-logs  -- Remove just instances logs." 只刪除日誌

要想外部服務器訪問到我們搭建的集羣,我們需要對腳本修改一下,進入/usr/local/redis-cluster/redis-5.0.5/utils/create-cluster目錄下,執行vim create-cluster

  1. start部分增加如下配置:
  • --bind 指定我們要綁定的ip(服務器ip)
  • --requirepass 指定我們的密碼
  • --protected-mode no 關閉安全模式(外部應用可以連接到redis)

由於搭建環境的機子內存有點小,所有添加了限制內存的語句

--bind 192.168.3.86 --requirepass 12345 --protected-mode no

image

  1. create部分修改如下配置:
    127.0.0.1IP地址修改爲服務器地址或開放所有地址0.0.0.0
    添加-a 12345密碼設置

image

  1. stop部分修改如下配置:
    添加-h IP地址-a 12345密碼設置

image

4.執行./create-cluster start啓動集羣

image

5.執行./create-cluster create開啓集羣

image

集羣測試

鏈接集羣語句

../../src/redis-cli -h localhost -p 30003 -a 12345 -c

在30002中設置key後可以在30001獲取
image
image

集羣操作

  1. 添加主節點,從節點
  2. 刪除節點:重新分配槽,移除節點

redis 5.0中使用 redis-cli 添加cluster node 並 reshard
Redis cluster集羣:原理及搭建

參考博客

Redis入門(適合新手)
redis集羣搭建(非常詳細,適合新手)
redis 5.0.5 5分鐘搭建redis集羣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章