您的位置:首页 > 数据库 > Redis

redis3.0自带集群配置

2015-08-02 18:32 816 查看
参考

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参数必须有
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: