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

[经验分享] redis3-itboy的博客园

[复制链接]

尚未签到

发表于 2018-11-3 13:35:21 | 显示全部楼层 |阅读模式
  前言:
  参考文档
  Redis官方集群指南:Redis cluster tutorial a“ Redis
  Redis官方集群规范:Redis Cluster Specification a“ Redis
  Redis集群指南(中文翻译,紧供参考):集群教程 — Redis 命令参考
  Redis集群规范(中文翻译,紧供参考):Redis 集群规范
  1、安装步骤
  1、依赖包
  yum install -y gcc tcl
  2、安装
  cd /usr/local/
  cp /tmp/redis-3.2.9.tar.gz .
  tar -zxvf redis-3.2.9.tar.gz
  make && make install
  mkdir -p /data/service/redis/redis_cluster/
  cd /data/service/redis/redis_cluster/
  mkdir -p 7111 7112 7113 7114 7115 7116
  mkdir /data/service/redis/redis_cluster/7111/log/
  mkdir /data/service/redis/redis_cluster/dumps
  3、修改配置文件,将配置文件拷贝到每个目录。
  port 7111
  pidfile "/data/service/redis/redis_cluster/7111/redis_7111.pid"
  loglevel verbose
  logfile "/data/service/redis/redis_cluster/log/redis_7111.log"
  daemonize yes
  databases 16
  timeout 0
  #客户端连接超时时间,0表示关闭
  tcp-backlog 511
  #确定tcp连接中已完成队列的长度。
  tcp-keepalive 60
  #检测客户端健康状态的时间,建议60s,单位是s。
  #maxmemory 8gb
  #使用内存最大值,多余的使用swap
  cluster-enabled yes
  cluster-config-file "/data/service/redis/redis_cluster/7111/nodes.conf"
  cluster-node-timeout 5000
  dir "/data/service/redis/redis_cluster/dumps"
  appendonly yes
  #aof重写
  appendfilename "7111.aof"
  appendfsync everysec
  #每秒写入一次,最优。
  no-appendfsync-on-rewrite no
  #在在aof-rewrite期间,不暂缓appendfsync文件同步。
  auto-aof-rewrite-percentage 100
  #当前写入日志文件的大小超过上一次rewrite之后的文件大小的百分之100时就是2倍时触发Rewrite
  auto-aof-rewrite-min-size 512mb
  #当aof大于512m 才写入硬盘。
  #aof-rewrite-incremental-fsyn yes
  #aof rewrite 过程,默认文件是增量同步策略。
  lua-time-limit 5000
  #一个Lua脚本最长的执行时间,单位为毫秒,默认是5000
  #notify-keyspace-events ""
  #按键通知事件,默认关闭
  bind 10.32.5.63
  protected-mode no
  masterauth "$1$9a$A3v2uy9"
  requirepass "$1$9a$A3v2uy9"
  cluster-migration-barrier 1
  slowlog-log-slower-than 10000
  slowlog-max-len 128
  hash-max-ziplist-entries 512
  hash-max-ziplist-value 64
  list-max-ziplist-entries 512
  list-max-ziplist-value 64
  set-max-intset-entries 512
  zset-max-ziplist-entries 128
  zset-max-ziplist-value 64
  activerehashing yes
  client-output-buffer-limit normal 0 0 0
  client-output-buffer-limit slave 256mb 64mb 60
  client-output-buffer-limit pubsub 32mb 8mb 60
  hz 10
  4、创建集群
  yum -y install ruby
  yum install ruby rubygems
  gem install redis
  修改密码文件
  /usr/lib/ruby/gems/1.8/gems/redis-3.3.3/lib/redis/client.rb
  # :password => nil,
  :password => '$1$9a$A3v2uy9',
  cd /usr/local/redis/src
  ./redis-trib.rb create --replicas 1 10.32.5.63:7111 10.32.5.63:7112 10.32.5.63:7113 10.32.5.63:7114 10.32.5.63:7115 10.32.5.63:7116 10.32.5.63:7117 10.32.5.63:7118 10.32.5.63:7119 10.32.5.64:7121 10.32.5.64:7122 10.32.5.64:7123 10.32.5.64:7124 10.32.5.64:7125 10.32.5.64:7126 10.32.5.64:7127 10.32.5.64:7128 10.32.5.64:7129
  5、创建启动脚本
  6、登录
  redis-cli -c -h 10.32.5.63 -p 7111 -a '$1$9a$A3v2uy9'
  7、集群客户端
  10.32.5.64:7124> GET foo
  "bar"
  10.32.5.64:7122>
  [root@l-redis33 ~]# redis-cli -c -h 10.32.5.63 -p 7111 -a '$1$9a$A3v2uy9'
  10.32.5.63:7111> get foo
  -> Redirected to slot [12182] located at 10.32.5.64:7124
  "bar"
  8、重新划分100个槽位,到本节点。
  ./redis-trib.rb reshard 10.32.5.63:7111
  9、计数器
  计数器的值只能增加,不能减少。
  10、故障转移测试。
  1、查看主节点
  [root@l-redis33 src]# redis-cli -h 10.32.5.63 -p 7111 -a '$1$9a$A3v2uy9' cluster nodes |grep master
  9a731c78db51c7d9af039c9e1b8240b2bc6174d5 10.32.5.63:7111 myself,master - 0 0 1 connected 1820-3640
  16cd1198a3317d32682e0b17edcd842bc61306ef 10.32.5.63:7112 master - 0 1499051510616 2 connected 5461-7281
  de651d85822eb2caaa0054b72bb765e950ec66d9 10.32.5.64:7121 master - 0 1499051511617 10 connected 0-1819
  ef2d23168a9e4856ef94e19074fa55f239b880ad 10.32.5.64:7123 master - 0 1499051511718 12 connected 7282-9101
  851818450b44a179fa25a0ed0667de5f0e618cd3 10.32.5.63:7113 master - 0 1499051511717 3 connected 9102-10922
  7b226249af22cfa67bfb15e676c8934e6e4c691d 10.32.5.64:7124 master - 0 1499051511718 13 connected 10923-12742
  166116e0e76a2699d4471319306dfc99e246f760 10.32.5.64:7125 master - 0 1499051510115 14 connected 14564-16383
  a83ec82fd0e3053e0882337a72c7affb70563d8a 10.32.5.63:7114 master - 0 1499051511117 4 connected 12743-14563
  4c402d2324a94228d3cd63235c0acd4ba3547d03 10.32.5.64:7122 master - 0 1499051510617 11 connected 3641-5460
  2、关闭一个主节点
  [root@l-redis33 src]# redis-cli -c -h 10.32.5.63 -p 7112 -a '$1$9a$A3v2uy9' debug segfault
  Error: Server closed the connection
  3、检查主节点
  [root@l-redis33 src]# redis-cli -h 10.32.5.63 -p 7111 -a '$1$9a$A3v2uy9' cluster nodes |grep master
  9a731c78db51c7d9af039c9e1b8240b2bc6174d5 10.32.5.63:7111 myself,master - 0 0 1 connected 1820-3640
  53494b5e18c726b8f75001c069940e740c6dcb6d 10.32.5.64:7127 master - 0 1499051716944 19 connected 5461-7281
  16cd1198a3317d32682e0b17edcd842bc61306ef 10.32.5.63:7112 master,fail - 1499051659552 1499051657348 2 disconnected
  de651d85822eb2caaa0054b72bb765e950ec66d9 10.32.5.64:7121 master - 0 1499051717946 10 connected 0-1819
  ef2d23168a9e4856ef94e19074fa55f239b880ad 10.32.5.64:7123 master - 0 1499051718446 12 connected 7282-9101
  851818450b44a179fa25a0ed0667de5f0e618cd3 10.32.5.63:7113 master - 0 1499051718446 3 connected 9102-10922
  7b226249af22cfa67bfb15e676c8934e6e4c691d 10.32.5.64:7124 master - 0 1499051718948 13 connected 10923-12742
  166116e0e76a2699d4471319306dfc99e246f760 10.32.5.64:7125 master - 0 1499051718948 14 connected 14564-16383
  a83ec82fd0e3053e0882337a72c7affb70563d8a 10.32.5.63:7114 master - 0 1499051717445 4 connected 12743-14563
  4c402d2324a94228d3cd63235c0acd4ba3547d03 10.32.5.64:7122 master - 0 1499051718948 11 connected 3641-5460
  [root@l-redis33 src]#
  从节点升级为主节点。启动7112,发现7112变成从节点。
  [root@l-redis33 src]# redis-cli -h 10.32.5.63 -p 7111 -a '$1$9a$A3v2uy9' cluster nodes
  53494b5e18c726b8f75001c069940e740c6dcb6d 10.32.5.64:7127 master - 0 1499052056521 19 connected 5461-7281
  53494b5e18c726b8f75001c069940e740c6dcb6d 0 1499052058824 19 connected
  cluster nodes 命令的输出有点儿复杂, 它的每一行都是由以下信息组成的:

  •   节点>3fc783611028b1707fd65345e763befb36454d73 。
  •   ip:port :节点的 IP 地址和端口号, 例如 127.0.0.1:7000 , 其中 :0 表示的是客户端当前连接的 IP 地址和端口号。
  •   flags :节点的角色(例如 master 、 slave 、 myself )以及状态(例如 fail ,等等)。
  •   如果节点是一个从节点的话, 那么跟在 flags 之后的将是主节点的节点>127.0.0.1:7002 的主节点的节点>3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 。
  •   集群最近一次向节点发送 PING 命令之后, 过去了多长时间还没接到回复。
  •   节点最近一次返回 PiNG 回复的时间。
  •   节点的配置纪元(configuration epoch):详细信息请参考 Redis 集群规范 。
  •   本节点的网络连接情况:例如 connected 。
  •   节点目前包含的槽:例如 127.0.0.1:7001 目前包含号码为 5960 至 10921 的哈希槽。
  11、添加节点到集群
  1、配置启动新节点
  2、添加主节点
  /redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7111
  3、添加作为从节点,作为随机的从节点。
./redis-trib.rb add-node --slave 127.0.0.1:7006 127.0.0.1:7000  4、指定做为从节点
./redis-trib.rb add-node --slave --master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 127.0.0.1:7006 127.0.0.1:7000  5、新添加节点为空主机,使用replicate复制到副本中。如果丐姐蒂娜是从属节点,但是要将其作为不通的主节点的副本移动。此功能也起作用。
  添加从节点:
redis 127.0.0.1:7006> cluster replicate 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912eredis-cli -p 7000 cluster nodes | grep slave | grep 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e  
f093c80dde814da99c5cf72a7dd01590792b783b 127.0.0.1:7006 slave 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 0 1385543617702 3 connected
  
2938205e12de373867bf38f1ca29d31d0ddb3e46 127.0.0.1:7002 slave 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 0 1385543617198 3 connected
  12、删除节点:
    1、删除从节点  
       ./redis-trib del-node 127.0.0.1:7000 ``
  2、删除主节点
  1、减少主节点数量,先把主节点变成为空节点
  2、删除主节点的另一种方法是在其从站之一上执行手动故障切换,并在将节点变为新主节点的从属节点后将其删除
  13、副本迁移。
CLUSTER REPLICATE   14、升级Redis群集中的节点
  15、迁移到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-630283-1-1.html 上篇帖子: 【基础概念】 Redis简介和面试常见问题 下篇帖子: springBoot(16):集成redis
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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