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

[经验分享] redis 集群架构 cluster 、sentinel-12384524

[复制链接]

尚未签到

发表于 2018-11-4 09:42:59 | 显示全部楼层 |阅读模式
  redis-cluster
  实验环境:
  centos6.5   IP:192.168.1.11
  依赖包:redis    ruby   rubygem
  
  
  [root@localhost redis]#tar xf redis-3.0.2.tar.gz
  [root@localhost redis]#cd redis-3.0.2
  [root@localhost redis]#make &&make install
  用tab键看redis-  这些工具是否安装好,没安装则cp到/usr/local/bin下
  [root@localhost redis]#which redis-cli
  [root@localhost redis]#cp /root/redis-3.0.2/src/redis-trib.rb /usr/local/bin/redis-trib
  [root@localhost redis]#mkdir /usr/local/redis
  [root@localhost redis]#cd /usr/local/redis/
  [root@localhost redis]#mkdir `seq 7001 7008`
  [root@localhost redis]# cp ~/redis-3.0.2/redis.conf ./
  [root@localhost redis]# ls
  7001  7002  7003  7004  7005  7006  7007  7008  redis.conf
  
  配置文件里,这三行配置:
  daemonize yes//后台挂起
  cluster-enabled yes//开启集群
  cluster-config-file nodes-7001.conf//集群节点配置文件
  cluster-node-timeout 5000//超时时间,毫秒
  appendonly yes并且appendonly要开启:
  

  •   requirepass "abc"    #集群加密码,一般是集群配置完后用到
  •   masterauth "abc"
  
  
  for批量修改:
  for i in {7001..7008};do sed  "s/6379/$i/" redis.conf >$i/redis.conf;done
  
  for批量启动:
  for i in {7001..7008};do cd /usr/local/redis/$i&&redis-server redis.conf ;done
  [root@localhost 7008]# ps aux|grep redis//查看redis启动状态
  
  
  联网 yum -y install ruby rubygems建议用yum吧,用源码弄了半天弄不好
  
  [root@localhost 7001]# gem install redis安装ruby的redis接口
  
  
  接下来就是redis-trib  工具出场了:
  [root@localhost redis]# redis-trib help//查看能否使用
  
  [root@localhost redis]# redis-trib create --replicas 1 192.168.1.11:7001 192.168.1.11:7002 192.168.1.11:7003 192.168.1.11:7004 192.168.1.11:7005 192.168.1.11:7006
  Can Iset the above configuration? (type 'yes' to accept):  yes//这里输入yes
  
  #--replicas 1 代表复制一份,即每个主一个从
  #redis cluster最低要求三个主, 定义是host1:port host2:port
  #如果--replicas 2则:
  #host1:port == master host2:port &host3:port
  host1 是host2 和host3的主
  如果是创建9个是节点   --replicas 2  a b c d e f g h i 则,d e 是a的从,f g是b的从  h i是c的从
  
  [root@localhost redis]# redis-cli -c -h 127.0.0.1 -p 7001#连接7001,
  127.0.0.1:7001> cluster nodes#查看集群节点
  127.0.0.1:7001> cluster info#查看集群信息
  cluster_state:ok
  
  
  集群扩容
  [root@localhost redis]# redis-trib add-node 192.168.1.11:7007 192.168.1.11:7001
  redis-trib add-node 要加的节点   现有的任意节点
  
  M: ff2b5205f2c1531422052a7c4c4feca3db046878 192.168.1.11:7001
  slots:0-5460 (5461 slots) master
  1 additional replica(s)
  S: ef4ed8963e868ed9befa2fc25049039d270f7dbe 192.168.1.11:7005
  slots: (0 slots) slave
  replicates 721b0611a6a8a6e027d6619091a747b05a0529c2
  S: 1538fe39b9694912c80024fc2bfcacde9ddbfb47 192.168.1.11:7004
  slots: (0 slots) slave
  replicates ff2b5205f2c1531422052a7c4c4feca3db046878
  M: 721b0611a6a8a6e027d6619091a747b05a0529c2 192.168.1.11:7002
  slots:5461-10922 (5462 slots) master
  1 additional replica(s)
  M: ef07b1bbb70392b4ac57f7d80a0f4ae7a13643f7 192.168.1.11:7003
  slots:10923-16383 (5461 slots) master
  1 additional replica(s)
  S: 0d2e18cbbc2d6abd9cd72e554c8b7484fb089ccb 192.168.1.11:7006
  slots: (0 slots) slave
  replicates ef07b1bbb70392b4ac57f7d80a0f4ae7a13643f7
  
  
  [root@localhost redis]# redis-cli -c -h 127.0.0.1 -p 7001
  127.0.0.1:7001> cluster info
  cluster_state:ok
  cluster_slots_assigned:16384
  ...
  127.0.0.1:7001> cluster nodes
  ef4ed8963e868ed9befa2fc25049039d270f7dbe 192.168.1.11:7005 slave 721b0611a6a8a6e027d6619091a747b05a0529c2 0 1486917802211 5 connected
  1538fe39b9694912c80024fc2bfcacde9ddbfb47 192.168.1.11:7004 slave ff2b5205f2c1531422052a7c4c4feca3db046878 0 1486917801707 4 connected
  78a65dcd0b5165ecdab3ab2320bf975a35a66cf9 192.168.1.11:7007 master - 0 1486917802714 0 connected
  ff2b5205f2c1531422052a7c4c4feca3db046878192.168.1.11:7001 myself,master - 0 0 1 connected 0-5460
  721b0611a6a8a6e027d6619091a747b05a0529c2 192.168.1.11:7002 master - 0 1486917801202 2 connected 5461-10922
  ef07b1bbb70392b4ac57f7d80a0f4ae7a13643f7 192.168.1.11:7003 master - 0 1486917803218 3 connected 10923-16383
  0d2e18cbbc2d6abd9cd72e554c8b7484fb089ccb 192.168.1.11:7006 slave ef07b1bbb70392b4ac57f7d80a0f4ae7a13643f7 0 1486917801202 6 connected
  
  前一大串是节点里的ID,新上来的节点没有槽位,得重新分片:
  [root@localhost redis]# redis-trib reshard 192.168.1.11:7007//对7007分片
  How many slots do you want to move (from 1 to 16384)?1000//给7007分1000槽位
  What is the receiving node>//接受节点的ID,这里复制7007的ID过来
  Source node #1:all//从源节点过来
  
  添加7008给7007做从
  [root@server.tianshuai.com]# redis-trib add-node192.168.1.11:7008192.168.1.11:7001
  
  [root@localhost redis]# redis-cli -c -p 7008//进入7008节点
  127.0.0.1:7008> cluster nodes//查看节点,现在他还是主
  127.0.0.1:7008> cluster replicate 78a65dcd0b5165ecdab3ab2320bf975a35a66cf9
  OK//复制7007的ID过来
  127.0.0.1:7008> cluster nodes//现在就变为7007的从了
  
  删除节点:
  [root@localhost redis]# redis-trib del-node 192.168.1.11:7008 6a8a8c8a4c9640d2cda682de85ac9b83b837e2cd
  
  redis-trib del-ode 主机:端口>
  
  
  查看节点以及槽位:
  [root@localhost redis]# redis-trib check 192.168.1.11:7001
  
  
  转移槽位:如果要删除主,则需要把槽位给删了在删除节点。
  [root@localhost 7009]# redis-trib reshard 192.168.1.11:7002
  How many slots do you want to move (from 1 to 16384)?
  需要移动的数目:
  
  What is the receiving node>
  接受这些槽位的ID//目标节点
  
  Source node #1:
  从何处移到上面所指定的ID  //源节点
  
  Source node #2:done//结束
  
  [root@localhost redis]# pkill redis//关闭所有redis,
  
  
  
  可以看到redis-trib.rb具有以下功能:
  1、create:创建集群
  2、check:检查集群
  3、info:查看集群信息
  4、fix:修复集群
  5、reshard:在线迁移slot
  6、rebalance:平衡集群节点slot数量
  7、add-node:将新节点加入集群
  8、del-node:从集群中删除节点
  9、set-timeout:设置集群节点间心跳连接的超时时间
  10、call:在集群全部节点上执行命令
  11、import:将外部redis数据导入集群
  redis-sentinel
  IP分布:
  reids master  192.168.1.11  6379
  reids slalve   192.168.1.11  6380
  reids slave   192.168.1.11  6381
  reids sentinel  192.168.1.11  26379
  
  先启动所有reids,(修改好配置,配置好主从)
  redis-server /usr/local/redis/6379/redis.conf &
  redis-server /usr/local/redis/6380/redis.conf &
  redis-server /usr/local/redis/6381/redis.conf &
  
  [root@localhost 6379]# ps aux|grep redis
  root     17151  0.1  0.5 137436  2736 pts/0    Sl   07:43   0:00 redis-server *:6379                          
  root     17165  0.2  0.5 137436  2680 pts/0    Sl   07:43   0:00 redis-server *:6381                                                
  root     17204  0.2  0.5 137436  2636 pts/0    Sl   07:45   0:00 redis-server *:6380  
  
  cp /root/redis-3.0.0-rc2/sentinel.conf /usr/local/redis/
  vi /usr/local/redis/sentinel.conf#一份配置文件可以配置多个群集组
  sentinel monitor mymaster192.168.7.40 6379 1
  #监听的群集,1代表一个slave节点ping不通,则认为master宕机
  sentinel down-after-milliseconds mymaster5000
  #sentinel向master发送ping,多长时间内没通则认为宕机。单位为毫秒
  sentinel failover-timeout mymaster900000
  #failover后,如果此时间内没有任何failover操作,则默认为failover失败
  sentinel parallel-syncs mymaster 2
  #最多有多少个slave对新master进行同步###mymaster可以自己定义
  sentinel can-failover def_master yes
  #sentinel是否实施failover,no则只参与投票,不实施failover
  
  redis-server /usr/local/redis/sentinel.conf  --sentinel &启动sentinel
  
  [root@localhost 6379]# ps aux|grep redis
  root     17151  0.1  0.4 137436  2448 pts/0    Sl   07:43   0:02 redis-server *:6379                          
  root     17165  0.1  0.5 137436  2536 pts/0    Sl   07:43   0:02 redis-server *:6381                          
  root     17172  0.3  0.4 137436  2436 pts/0    Sl   07:43   0:05 redis-server *:26379 [sentinel]                           
  root     17204  0.1  0.5 137436  2488 pts/0    Sl   07:45   0:02 redis-server *:6380                          
  root     17419  0.0  0.1 103216   772 pts/0    S+   08:08   0:00 grep redis
  
  
  [root@localhost 6379]#redis-cli -p 26379 info sentinel查看sentinel信息
  # Sentinel
  sentinel_masters:1
  sentinel_tilt:0
  sentinel_running_scripts:0
  sentinel_scripts_queue_length:0
  master0:name=mymaster,status=ok,address=127.0.0.1:6381,slaves=2,sentinels=1    #红色部分为master
  [root@localhost 6379]#redis-cli -p 26379 sentinel slaves mymaster查看集群从节点
  
  [root@localhost ~]#redis-cli -p 6379 info Replication查看单个节点的角色
  
  故障演示:  (自行完成),当主宕机后,从代替,主恢复后,变成新主的从。
  
  恢复数据:先把redis关掉,然后把.aof和.rdb结尾的文件导入配置文件目录下。启动redis


运维网声明 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-630509-1-1.html 上篇帖子: redis3.2.7安装出现的小问题 下篇帖子: redis配置文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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