修改redis.conf配置文件:java
port 700X //各自監聽的端口node
#bind 127.0.0.1 //這裏不綁定,默認容許全部ip訪問,或者bind 0.0.0.0redis
cluster-enabled yes //開啓集羣ruby
cluster-node-timeout 15000 //15時間內沒有收到對方的回覆,則單方面認爲端節點掛掉app
另外,因爲下面咱們須要配置集羣密碼,故以前配置的 requirepass 先刪掉,集羣成功後再進行配置。tcp
3.啓動各個redis:分別進入700一、700二、...7006目錄,執行./redis-server ./redis.confui
4.建立集羣:/home/tools/redis/redis-3.0.6/src/redis-trib.rb create --replicas 1 123.123.123.123:7001 123.123.123.123:7002 123.123.123.123:7003 123.123.123.123:7004 123.123.123.123:7005 123.123.123.123:7006this
注意:spa
(1)爲保證遠程可訪問,這裏的ip儘可能使用公網ip,且建立集羣時可先關閉防火牆,不然能夠出現一直join……的現象。.net
(2)redis集羣至少須要3個主節點,每一個主節點有一個從節點總共6個節點
(3)replicas指定爲1表示每一個主節點有一個從節點
(4)若是出現[ERR] Sorry, can't connect to node錯誤:
1.ruby 和rubygem 版本過低,安裝新版本。查看gem版本和redis版本(redis-cli -v可查看redis版本)
2.查看reids配置文件,bind綁定的容許鏈接的ip是否正確。
3.是否redis配置文件仍是使用了密碼,使用了密碼也可能致使這個錯誤。
(5)若是出現[ERR] Node 127.0.0.1:7005 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0:
表示集羣時,以前的redis已有數據,那麼登陸到7005的redis中,執行FLUSHALL便可
(6)若是出現ERR Slot 0 is already busy (Redis::CommandError):
用redis-cli登陸到每一個節點執行flushall和cluster reset便可2.6進入集羣:./redis-cli -c -p 7001 -h 123.123.123.123(-c即-cluster 表示進入集羣模式,不加表示進入單機redis)
5.檢查集羣是否成功:進入集羣后,鍵入cluster info,顯示cluster_state:ok,表示成功
6.設置密碼:
(1)登陸到每一個節點,執行 config set masterauth 你的密碼 config set requirepass 你的密碼
(2)隨後登入 7001/bin/redis-cli -c -h 112.74.55.239 -p 7004 -a 你的密碼,執行: config rewrite
(3)防火牆開放7001到7006端口,以及redis總線:17001到17006:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 7001:7006 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 17001:17006 -j ACCEPT
7.JedisCluster鏈接redis集羣
[java] view plain copy