设为首页 收藏本站
查看: 1006|回复: 0

[经验分享] redis-cluster

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-1-9 16:42:56 | 显示全部楼层 |阅读模式
服务器:
Master: 192.168.1.200   192.168.1.202   192.168.1.203
Slave:  192.168.1.206   192.168.1.207   192.168.1.208
所有服务器已编译安装redis


一、准备redis-cluster集群环境:
yum install -y ruby
yum install  -y rubygems
gem install redis             //速度很慢



二、创建集群:
1.集群配置参数
cluster-enabled <yes/no>               //是否启用集群

cluster-config-file <filename>         
//指定一个文件,由集群自动维护,用于保存集群相关的信息

cluster-node-timeout <milliseconds>       //节点超时时间,单位为毫秒

cluster-slave-validity-factor <factor>
//举例:如果设置超时时间为5秒,factor为10.当master宕机后,如果slave节点与该master节点断开时间超过50秒(即5*10)的时候,该slave不会被选举为master

cluster-migration-barrier <count>
//举例,如果设置为2,表示master后面至少要维持2个slave,多余的slave可以被迁移到其他孤立的master上

cluster-require-full-coverage <yes/no>
//槽位是否全覆盖,即当有master宕机且没有slave可以顶替的情况下是否还允许集群继续工作


实验中配置:
bind 192.168.1.200
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-enabled yes
appendonly yes


2.  创建集群
①  各个节点启动redis
redis-server /etc/redis/redis.conf
wKioL1hyTTKCxxoMAAFpsAh8NRM042.jpg


②  创建集群
redis-trib.rbcreate --replicas 1 192.168.1.200:6379 192.168.1.202:6379 192.168.1.203:6379192.168.1.206:6379 192.168.1.207:6379 192.168.1.208:6379
wKiom1hyTVXiFzOWAAPJPDBCkPo416.jpg

wKiom1hyTcPi6ArGAACMSzdno8I889.jpg
wKioL1hyTaXgzf5GAAETifK5Sps679.jpg




3.  简单测试
redis-cli -c -h192.168.1.200 -p 6379   
//使用-c选项,可以自动切换到其他节点上

wKioL1hyTfrSvSv0AAGUPzSl1LI143.jpg


redis-cli -h192.168.1.200 -p 6379   //指定访问200节点,不自动切换
wKiom1hyThaQh8AuAAFRhq0HDZY398.jpg



redis-cli -h192.168.1.206 -p 6379        //指定访问slave节点

wKioL1hyTjDToGTiAACd-qGGJKs296.jpg


wKiom1hyTkvCu_tUAAF1svyBnc8117.jpg


三、测试故障转移:
1.关闭203节点
wKioL1hyTn-CArbaAAC7aIqv5iQ426.jpg

wKiom1hyTpmAZainAABuloNHIp4976.jpg


2. 重启203节点
wKioL1hyTq_zxZCfAADBbBuFpSA454.jpg


3. 关闭并重置203节点
wKiom1hyTt2xILd6AAC1dP4--4E459.jpg


4. 移除203节点
wKioL1hyTxLi_D0pAADJa0zWOLc786.jpg
① 停止所有节点上的redis服务


② 修改各节点的nodes.conf
vim nodes.conf
wKiom1hyTzGyfuW0AACsnxQ8IE0293.jpg

③ 重启所有redis服务
wKioL1hyT0vAbXqHAACPdfWEphA532.jpg


5. 重建203节点
①启动redis服务


②添加203节点
redis-trib.rbadd-node 192.168.1.203:6379192.168.1.200:6379
//可以通过集群内任一节点添加新节点

wKiom1hyT3uBJEoTAAGdsyfwpy8994.jpg
redis-trib.rbdel-node 192.168.1.203:6379 4246aef39ae381bca47835132902293d4bac6b00
//删除203节点重新以slave身份添加,还需要删除203节点上的nodes.conf文件

redis-trib.rbadd-node --slave 192.168.1.203:6379 192.168.1.200:6379
//使用--master-id可以指定作为哪一个master的slave
wKioL1hyT7vhDOHOAADLEd-9Phg685.jpg

③ 关闭208节点
wKiom1hyT9HBb_L9AACy76caXdg942.jpg

wKioL1hyT-nBPcarAACe4IdKy4I910.jpg


四、集群扩容:
1.准备两个redis节点
Master:  192.168.1.204   
Slave:   192.168.1.205


2. 加入两个节点
redis-trib.rbadd-node 192.168.1.204:6379 192.168.1.200:6379
wKioL1hyUBij-ghfAAFcseZDzZw521.jpg

redis-trib.rbadd-node --slave --master-id 0996e2a2cf52fab07f85cfdd729573915ce55359  192.168.1.205:6379 192.168.1.200:6379
//指定为204节点的slave


3.  重新分配槽位
wKiom1hyUD2Aq_-oAADvotG64GI244.jpg

redis-trib.rbrebalance --use-empty-masters 192.168.1.200:6379
//让空节点参与rebalance

wKiom1hyUFrQvfZEAADsaYpLaHM955.jpg

redis-trib.rbreshard 192.168.1.200:6379        //可以手动选择迁移多少槽位


五、手动降级Master:
wKioL1hyUJ2gcprvAAED7w-cg7Q971.jpg
1.使用cli登录207(即202节点的slave节点)
redis-cli -h192.168.1.207 -p 6379

wKioL1hyULOi_AtZAABwyUSAj2s406.jpg

wKiom1hyUMmhA3paAAD687MWpog386.jpg


六、测试slave节点的自动迁移:
1.重新准备redis集群
Master: 192.168.1.200   192.168.1.202   192.168.1.203
Slave:  192.168.1.206   192.168.1.207   192.168.1.208


bind 192.168.1.200
cluster-config-filenodes.conf
cluster-node-timeout15000
cluster-enabled yes
appendonly yes
cluster-migration-barrier1
//指定每个master后面应该有一个slave

wKiom1hyUPnRSD8UAADJ0Lsb3Fo103.jpg

2. 新添加204,205节点,都作为200节点的slave
wKioL1hyURvzl4BzAAD5Fi3i2g8261.jpg


3.移除 202节点的slave
wKiom1hyUTzSLILaAADXgLg8AwY571.jpg






附:
计算key的插槽值:
key的有效部分使用CRC16算法计算出哈希值,再将哈希值对16384取余,得到插槽值。

什么是有效部分?
1、如果key中包含了{符号,且在{符号后存在}符号,并且{和}之间至少有一个字符,则有效部分是指{和}之间的部分;
  • key={hello}_tatao的有效部分是hello

2、如果不满足上一条情况,整个key都是有效部分;
  • key=hello_taotao的有效部分是全部




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-326106-1-1.html 上篇帖子: 给redis-cluster设置密码 下篇帖子: CentOS6.5下Redis安装与配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表