redis3.0自带集群配置

参考

http://redis.readthedocs.org/en/latest/topic/cluster-tutorial.html

http://yindashan.github.io/blog/2014/11/02/redisclusterda-jian-jiao-cheng/

主从切换需要使用sentinel

http://blog.mkfree.com/posts/5257683d479e1dd72e7c1b4e

一些说明

集群使用的是gossip协议,是最终一致,并非强一致
数据根据不同的slot分到不同的实例,这个测试的时候需要用用redis-cli上添加-c参数
主从使用sentinel实现自动切换,不需要在配置里面里面强行约束master和slave,应该是动态使用命令验证掉了

以下是我配置的例子

编译redis,重新组织下目录,具体自己搞搞
复制到7000,7001,7002,7003,7004,7005

修改每个实例的配置文件

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

自己写个run-cluster.sh

cd ./7000;
./bin/redis-server ./conf/redis.conf;
cd ../;

cd ./7001;
./bin/redis-server ./conf/redis.conf;
cd ../;

cd ./7002;
./bin/redis-server ./conf/redis.conf;
cd ../;

cd ./7003;
./bin/redis-server ./conf/redis.conf;
cd ../;

cd ./7004;
./bin/redis-server ./conf/redis.conf;
cd ../;

cd ./7005;
./bin/redis-server ./conf/redis.conf;
cd ../;

./redis/bin/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005;

自己写个sentinel.conf,用于监控redis实例

port 26379
 
sentinel monitor master1 127.0.0.1 7000 1
sentinel down-after-milliseconds master1 5000
sentinel failover-timeout master1 15000
sentinel parallel-syncs master1 2

sentinel monitor master2 127.0.0.1 7001 1
sentinel down-after-milliseconds master2 5000
sentinel failover-timeout master2 15000
sentinel parallel-syncs master2 2
 
sentinel monitor master3 127.0.0.1 7002 1
sentinel down-after-milliseconds master3 5000
sentinel failover-timeout master3 15000
sentinel parallel-syncs master3 2

第1行,指定sentinel使用的端口,不能与redis-server运行实例的端口冲突

第3行,显示监控master节点127.0.0.1,master节点使用端口7000,最后一个数字表示投票需要的"最少法定人数",比如有10个sentinal哨兵都在监控某一个master节点,如果需要至少6个哨兵发现master挂掉后,才认为master真正down掉,那么这里就配置为6,最小配置1台master,1台slave,在二个机器上都启动sentinal的情况下,哨兵数只有2个,如果一台机器物理挂掉,只剩一个sentinal能发现该问题,所以这里配置成1,至于master1只是一个名字,可以随便起,但要保证3-6行都使用同一个名字
第4行,表示如果5s内master1没响应,就认为挂了
第5行,表示如果15秒后,master1仍没活过来,则启动failover,从剩下的slave中选一个升级为master
第6行,表示如果master重新选出来后,其它slave节点能同时并行从新master同步缓存的台数有多少个,显然该值越大,所有slave节点完成同步切换的整体速度越快,但如果此时正好有人在访问这些slave,可能造成读取失败,影响面会更广。最保定的设置为1,只同一时间,只能有一台干这件事,这样其它slave还能继续服务,但是所有slave全部完成缓存更新同步的进程将变慢。

sentinel.sh

./redis/bin/redis-sentinel ./sentinel.conf

测试连接客户端

./redis/bin/redis-cli -c -p 7005

注意,-c参数必须有

原文地址:https://www.cnblogs.com/ziyouchutuwenwu/p/4696462.html