修改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