轉(zhuǎn)載出處:享學課堂online
作者:提燈
本次工作最大的坑就是:各種過時的教程和錯誤教程留下的新坑 ~~坑中打滾實錄~~
本文只搭建最簡單的集群
>環(huán)境:redis版本:5.7
>操作系統(tǒng):linux虛擬機
>虛擬機軟件:VMware Workstation 10.0.3
>本次ip地址配置為:192.168.163.101
第一關(guān):[ERR] Node 192.168.163.101:6379 is not configured as a cluster node.
這個報錯是說您想搞的節(jié)點未配置為群集節(jié)點,我相信很多人百度過這個,百度上的解釋真的是五花八門,什么復制redis整個文件夾到xxx目錄下/修改xxxxx配置啊/裝trib插件。
簡單來說你的問題可能是:
啟動的還是默認的:redis啟動方式
或
啟動的配置文件中沒有配置對應(yīng)的參數(shù)
如何解決呢?
1.我們先來明確一個叫 redis-server 的啟動文件,這個文件是對redis加載對應(yīng)的配置文件來啟動redis,具體坐標在redis安裝文件中的src文件夾中。
2.對應(yīng)的配置文件:redis.conf,具體怎么配置屬性下文講,位置就在redis文件夾中。
3.寫到這里你也大概知道了吧,我們需要用 redis-server 去啟動你配置好的 redis.conf 文件。
第二關(guān):配置redis.conf文件 建議用可視化工具
因為每啟用一個節(jié)點就要配置一個對應(yīng)的redis.conf文件,所以為了我們可以更好的管理我們的配置文件,所以,我們可以在redis安裝位置的同級目錄,創(chuàng)建一個個對應(yīng)管理文件夾,文件名是無所謂的。
這個redis-5.0.7就是我的安裝文件,切記這個文件中所有的文件,均不需要更改 !!! 我這次用的端口7001-7006,所以就建了6個對應(yīng)的文件夾你看我起名字多隨意 接著我們就去直接從redis安裝目錄下的redis.conf文件給復制過來,進行更改
我這文件夾中只有一個對應(yīng)的配置文件,我看的一些教程中有說復制整個安裝目錄的就歇歇吧,接著我們修改這個文件即可。
port 6379 #端口
cluster-enabled yes #啟用集群模式
cluster-node-timeout 5000 #超時時間
Appendonly yes # 是否啟用aof
daemonize yes #后臺運行
protected-mode no #非保護模式
cluster-config-file nodes.conf # redis啟動自己創(chuàng)建
pidfile /var/run/redis_6379.pid
bind 0.0.0.0 #可讀取地址 0.0.0.0代表都能讀取
這里說明下,部分配置在配置文件有加上#號,就去掉,bind這個配置有3個,前兩個都是有#注釋了,只有一個默認是127.0.0.1是沒有注釋的,改這個就好了。
這里著重說下bind這個選項,如果你的公司沒有特殊要求,建議參數(shù)改為 0.0.0.0 ,不然會出現(xiàn)很多奇奇怪怪的錯誤,而且是那種解決一種另外一種又出現(xiàn)的錯誤
這里我把我的7001的配置直接發(fā)上來,如果搞不定的話,或者是我漏寫了某個要點,我把我配置好的文件拿出來,特地實驗過新的虛擬機裝redis后redis-server直接跑沒問題。
修改好的配置文件地址:
鏈接:https://pan.baidu.com/s/1MbRin1VjNsBSnYjw8N67eA 提取碼:8pt6
我們將這個redis.conf文件,分別復制到對應(yīng)的文件目錄中,接著我們直接將文件中所有的7001改成對應(yīng)的700x,配置就完成了,簡不簡單啊ヽ( ̄▽ ̄)?
第三關(guān):3個實例->3個主節(jié)點
本次路徑解釋
/usr/local/src/redis/redis-5.0.7/src/redis-server #安裝目錄下redis-server的路徑
/usr/local/src/redis/7001/redis.conf #配置文件中的redis.conf路徑
首先分別啟動7001,7002,7003這3個實例
接著我們運行:
redis-cli--cluster create192.168.163.101:7001192.168.163.101:7002192.168.163.101:7003
這個就是設(shè)置這3個端口,創(chuàng)建集群主節(jié)點的操作,如果這時候,你報錯說什么連不上這3個端口,就去上文看我寫的bind的配置。
如果再次出現(xiàn)[ERR] Node 192.168.163.101:6379 is not configured as a cluster node.說明我上面寫的集群配置你還是no
這里注意一定要寫yes!!! 只寫個y或者寫什么鬼東西的,出了問題,概不負責。
查詢集群狀態(tài)(任意一個節(jié)點均可查詢):
redis-cli--cluster check192.168.163.101:7001--cluster-search-multiple-owners
這樣子表示3個主節(jié)點均已開啟,都是0個從節(jié)點是正常的,因為我都沒配嘛。
第四關(guān):3個實例->3個從節(jié)點
這一步應(yīng)該都懂怎么創(chuàng)建實例了吧,創(chuàng)建過程就跳過,↓添加從節(jié)點代碼
redis-cli--cluster add-node#從節(jié)點# #主節(jié)點# --cluster-slave
redis-cli--cluster add-node192.168.163.101:7004192.168.163.101:7001--cluster-slave
上一步?jīng)]錯,這步也大概率錯不了。 增加時:會平均的給7001.7002.7003分配從節(jié)點
所有的節(jié)點都出現(xiàn)1個子節(jié)點,說明配置成功了,
恭喜了各位,到這一步,7001.7002.7003.7004.7005.7006 已經(jīng)是個完整的集群了
以下是補充
5.0集群部署和4.0的區(qū)別
參考: https://www.cnblogs.com/zhoujinyi/p/11606935.html
不知道自己版本的可以先在liunx下用:redis-cli --version 或 redis-cli -v 進行查詢
如果自己的版本是5.0以上本文適合你,如果你用的還是4.0我就無能為力了
有關(guān)于集群的改動,其實就一條:
如果你跟我一樣,找教程時候,發(fā)現(xiàn)這個教程要裝除了redis之外的另外一個trib腳本,就說明他是4.0版本的軟件,當然操作命令行還是一樣的,但我就沒成功順著那些教程走起來…(?д?;)
JAVA中測試分片的類不能測試集群!
報錯:
Exception in thread "main" redis.clients.jedis.exceptions.JedisMovedDataException: MOVED 7798 192.168.163.101:7002
或
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
啟動路徑要寫清楚!
錯誤演示:
[root@localhost ~]# /usr/local/src/redis/redis-5.0.7/src/redis-server /usr/local/redis-cluster/redis02/redis.conf
錯誤:
1385:C 01 Mar 2020 14:24:20.420 # Fatal error, can't open config file '/usr/local/redis-cluster/redis02/redis.conf'
報錯:(error) CLUSTERDOWN Hash slot not served
在liunx下,可以進入節(jié)點,但set時候報這個錯的話,你說你是不是配置主節(jié)點的是時候沒有老老實實輸入yes,重新來一遍吧