redis 集群環境搭建


原理:

1,每個Redis群集的節點都需要打開兩個TCP連接,由於這兩個連接就需要兩個端口,分別是用於為客戶端提供服務的常規Redis TCP命令端口(例如6379)以及通過將10000和命令端口相加(10000+6379)而獲得的端口,就是集群端口(例如16379)。

2,節點使用群集總線進行故障檢測,配置更新,故障轉移授權等。 客戶端不應嘗試與群集總線端口通信,為了保證Redis命令端口的正常使用,請確保在防火牆中打開這兩個端口,否則Redis群集節點將無法通信。

 

要求:

1,redis集群必須要求有6個實例,也就是說至少要啟動6個redis-server進程。

2,每個redis都需要開放兩個端口,如果不能關閉防火牆,就要放行兩個端口。總共至少是12個端口號。

3,redis版本限制.

  redis版本>=5.xxx,直接使用 ./redis-cli --cluster create 指令構建redis集群。

  redis版本<5.xxx,需要安裝ruby、rubygems環境,使用 ./redis-trib.rb create 指令構建redis集群,

 

 

步驟:

1,在同一台主機上首先安裝好單機redis。解壓,make,修改配置文件,啟動命令等。

2,暫時不啟動上面的server實例,將redis文件復制五份,按端口號命名。替換redis.conf中的端口號。建立一個cluster-redis的文件夾,將這些redis都放進去。

3,在集群文件夾下新建一個bin目錄,復制一份redis的/bin工具進去,方便以后一起使用。

4,使用集群的詳細配置文件 redis.conf如下:

port 7001(每個節點的端口號)
daemonize yes
bind 192.168.119.131(綁定當前機器 IP)
dir /usr/local/redis-cluster/7001/data/(數據文件存放位置)
pidfile /var/run/redis_7001.pid(pid 9001和port要對應)
cluster-enabled yes(啟動集群模式)
cluster-config-file nodes7001.conf(9001和port要對應)#這不是用戶可編輯的配置文件,而是Redis群集節點每次發生更改時自動保留群集配置(基本上為狀態)的文件,以便能夠在啟動時重新讀取它。 
cluster-node-timeout 15000  #Redis群集節點可以不可用的最長時間,而不會將其視為失敗。 如果主節點超過指定的時間不可達,它將由其從屬設備進行故障切換。 此參數控制Redis群集中的其他重要事項。
appendonly yes  #開啟aof 持久化存儲

5,更改好其他redis實例的配置文件。 

6,我用的redis版本大於5.0,所以不需要安裝ruby環境。如需要ruby 環境,可以看這篇https://www.cnblogs.com/ding2016/p/7903147.html

7,指定各自的配置文件,啟動所有redis-server實例。

8,執行創建集群命令:

   ./bin/redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.01:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1

  replicas設置為1

  比如6個節點,設置1,6*(1/2)=3個master,6*(1/2)=3個slave;

  比如24個節點,設置2,24*(1/3)=8個master,24*(2/3)=16個slave。

9,按提示下一步就可以了。

  slot(槽點)是用來進行寫指令的,只分配給master,一共16384個槽點,均勻分配給各個master。slave只是作為備份,不執行寫指令,不需要槽點,所以分配0個槽點。

10,任意連接摸一個節點,測試 -h host -p port

  例如:redis1/bin/redis-cli   -c    #連接到集群節點(不管是master、還是slave)都要使用參數-c,c即cluster

  >cluster info

  >info replication

 

排錯:

  配置文件中的路徑最好都設置成絕對路徑,並且要打開日志。及時根據日志排除錯誤。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM