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

[经验分享] 搭建Redis 集群,测试集群:对节点主机重新分片

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-11-2 09:38:55 | 显示全部楼层 |阅读模式
  搭建Redis 集群
  准备6台redis服务器,具体要求如下:
  ip地址                 端口              etho                         日志文件名
  192.168.4.51     6051             都可以接收连接请求    redis51.log
  192.168.4.52     6052             都可以接收连接请求   redis52.log
  192.168.4.53     6053             都可以接收连接请求   redis53.log
  192.168.4.54     6054             都可以接收连接请求   redis54.log
  192.168.4.55     6055             都可以接收连接请求   redis55.log
  192.168.4.56     6056             都可以接收连接请求   redis56.log
  环境准备
  1  在6台redis服务器上运行服务,按照如下要求修改配置文件后,重启redis服务,清。
  生成密钥与传密钥
  [root@51 ~]# ssh-keygen
  [root@51 ~]# for i in 192.168.4.{51..56}

  do
  ssh-copy-id $i
  done

  在每一台主机上创建redis
  [root@51 ~]# tar -xf  redis/redis-4.0.8.tar.gz  -C .
  [root@51 ~]# cd redis-4.0.8/
  [root@51 redis-4.0.8]# yum -y install gcc gcc-c++
  [root@51 redis-4.0.8]# make && make install
  [root@51 redis-4.0.8]# ./utils/install_server.sh
  [root@51 redis-4.0.8]# ln -s  /etc/init.d/redis_6379 /bin/
  在这大家可以也写个脚本批量安装redis
  1.1 清空数据(在51-56上做一样的操作)
  [root@51 phpredis-2.2.4]# redis-cli -h 192.168.4.51 -p 6051
  192.168.4.51:6051> FLUSHALL
  OK
  192.168.4.51:6051> keys *
  (empty list or set)
  192.168.4.51:6051>
  [root@51 phpredis-2.2.4]# vim /etc/redis/6379.conf
  70 bind 192.168.4.51  //物理接口ip地址
  93 port 6051  //端口
  

daemonize yes   //以守护方式运行  

  815 cluster-enabled yes  //开启集群
  823 cluster-config-file nodes-6051.conf  // 集群的配置文件不要使用默认的名称
  829 cluster-node-timeout 15000  // 请求超时 5 秒
  [root@51 phpredis-2.2.4]# redis_6379 stop
  [root@51 phpredis-2.2.4]# redis_6379 start
  [root@51 ~]# ss -antulp | grep redis
  tcp LISTEN 0 128 192.168.4.51:6051 :  users:(("redis-server",pid=24771,fd=6))
  tcp LISTEN 0 128 192.168.4.51:16051 :   users:(("redis-server",pid=24771,fd=8))
  装包: 在执行创建集群命令的主机安装ruby软件包
  安装解释ruby代码的软件包(在51上安装)
  [root@51 redis]# yum -y install ruby ruygems
  [root@51 redis]# rpm -q rubygems ruby
  rubygems-2.0.14.1-30.el7.noarch
  ruby-2.0.0.648-30.el7.x86_64
  [root@51 redis-cluster]#rpm -ivh --nodeps ruby-devel-2.0.0.648-30.el7.x86_64.rpm
  安装ruby连接redis 接口程序 gem
  [root@51 redis-cluster]# gem install redis-3.2.1.gem
  生成创建集群的脚本redis-trib.rb
  [root@51 redis]# tar -xf redis-4.0.8.tar.gz
  [root@51 redis]# cd redis-4.0.8/
  [root@51 redis-4.0.8]# ln -s /root/redis/redis-4.0.8/src/redis-trib.rb   /sbin/
  创建集群:
  [root@51 redis-4.0.8]# redis-trib.rb create --replicas 1 \

  192.168.4.51:6051 \
  192.168.4.52:6052 \
  192.168.4.53:6053 \
  192.168.4.54:6054 \
  192.168.4.55:6055 \
  192.168.4.56:6056
  >> Creating cluster
  >> Performing hash slots allocation on 6 nodes...

  Using 3 masters:
  192.168.4.51:6051
  192.168.4.52:6052
  192.168.4.53:6053
  Adding replica 192.168.4.55:6055 to 192.168.4.51:6051
  Adding replica 192.168.4.56:6056 to 192.168.4.52:6052
  Adding replica 192.168.4.54:6054 to 192.168.4.53:6053
  M: c5f725669ad74fbf48b907b06c3b0ff6ca5eeb01 192.168.4.51:6051
  slots:0-5560 (5561 slots) master
  M: 2c9ee556add7e5187621efd64e4a9fc54bc99489 192.168.4.52:6052
  slots:5561-10922 (5562 slots) master
  M: bcb32a6d6b9e988789e654c32856c8c478ef253e 192.168.4.53:6053
  slots:10923-16383 (5561 slots) master
  S: 799f99bc22d8c4a9e0fcdc98166f6e6f5e348df0 192.168.4.54:6054
  replicates bcb32a6d6b9e988789e654c32856c8c478ef253e
  S: 18b86bca8fa9c9d36f3cad927a1c75c825bee9a4 192.168.4.55:6055
  replicates c5f725669ad74fbf48b907b06c3b0ff6ca5eeb01
  S: 6a7196a77555cdf14f1a665386ff493928b31d94 192.168.4.56:6056
  replicates 2c9ee556add7e5187621efd64e4a9fc54bc99489
  Can I set the above configuration? (type 'yes' to accept): yes

  >> Nodes configuration updated
  >> Assign a different config epoch to each node
  >> Sending CLUSTER MEET messages to join the cluster

  Waiting for the cluster to join....

  >> Performing Cluster Check (using node 192.168.4.51:6051)

  M: c5f725669ad74fbf48b907b06c3b0ff6ca5eeb01 192.168.4.51:6051
  slots:0-5560 (5561 slots) master
  1 additional replica(s)
  S: 6a7196a77555cdf14f1a665386ff493928b31d94 192.168.4.56:6056
  slots: (0 slots) slave
  replicates 2c9ee556add7e5187621efd64e4a9fc54bc99489
  ............................................
  ..............................................
  replicates bcb32a6d6b9e988789e654c32856c8c478ef253e
  [OK] All nodes agree about slots configuration.

  >> Check for open slots...
  >> Check slots coverage...

  [OK] All 16384 slots covered.
  [root@51 redis-4.0.8]# cat /var/lib/redis/6379/nodes-6051.conf #集群配置文件
  6a7196a77555cdf14f1a665386ff493928b31d94 192.168.4.56:6056@16056 slave 2c9ee556add7e5187621efd64e4a9fc54bc99489 0 1530777397000 6 connected
  。。。。。。。。。。。。。。。。。。。。。。
  。。。。。。。。。。。。。。。。。。。。。。。。。
  每台 redis服务 在本机登录 查看集群信息
  [root@51 redis-4.0.8]# redis-cli -c -h 192.168.4.51 -p 6051
  192.168.4.51:6051> CLUSTER INFO  # 查看集群信息
  cluster_state:ok
  cluster_slots_assigned:16384
  cluster_slots_ok:16384
  cluster_slots_pfail:0
  cluster_slots_fail:0
  cluster_known_nodes:6
  cluster_size:3
  cluster_current_epoch:6
  cluster_my_epoch:1
  cluster_stats_messages_ping_sent:934
  cluster_stats_messages_pong_sent:1137
  cluster_stats_messages_sent:2071
  cluster_stats_messages_ping_received:1132
  cluster_stats_messages_pong_received:934
  cluster_stats_messages_meet_received:5
  cluster_stats_messages_received:2071
  192.168.4.51:6051> CLUSTER NODES  # 查看本机信息
  6a7196a77555cdf14f1a665386ff493928b31d94 192.168.4.56:6056@16056 slave 2c9ee556add7e5187621efd64e4a9fc54bc99489 0 1530778521000 6 connected
  bcb32a6d6b9e988789e654c32856c8c478ef253e 192.168.4.53:6053@16053 master - 0 1530778520185 3 connected 10923-16383
  18b86bca8fa9c9d36f3cad927a1c75c825bee9a4 192.168.4.55:6055@16055 slave c5f725669ad74fbf48b907b06c3b0ff6ca5eeb01 0 1530778521000 5 connected
  2c9ee556add7e5187621efd64e4a9fc54bc99489 192.168.4.52:6052@16052 master - 0 1530778521187 2 connected 5561-10922
  799f99bc22d8c4a9e0fcdc98166f6e6f5e348df0 192.168.4.54:6054@16054 slave bcb32a6d6b9e988789e654c32856c8c478ef253e 0 1530778520000 4 connected
  c5f725669ad74fbf48b907b06c3b0ff6ca5eeb01 192.168.4.51:6051@16051 myself,master - 0 1530778519000 1 connected 0-5560
  测试集群:
  连接master库 存储数据,对应的从库 会自动同步数据
  [root@51 ~]# redis-cli  -c -h  master库ip地址  -p 对应的端口号
  Master::
  [root@51 redis-4.0.8]# redis-cli -c -h 192.168.4.51 -p 6051
  192.168.4.51:6051> set age 10
  192.168.4.51:6051> set name aa
  192.168.4.52:6052> keys *
  1) "name"
  Slave:
  [root@52 phpredis-2.2.4]# redis-cli -c -h 192.168.4.52 -p 6052
  192.168.4.52:6052> keys *
  1)"name"
  选项 参数
  – add-node 添加新节点(default master)
  – check 对节点主机做检查
  – reshard 对节点主机重新分片
  – add-node --slave 添加从节点主机
  – del-node 删除节点主机
  集群选举测试:停止某个主库的redis服务  对应的从会自动升级主库
  [root@51 redis-4.0.8]# redis-trib.rb check 192.168.4.51:6051
  M: bcb32a6d6b9e988789e654c32856c8c478ef253e 192.168.4.53:6053
  slots:10923-16383 (5561 slots) master
  1 additional replica(s)
  S: 18b86bca8fa9c9d36f3cad927a1c75c825bee9a4 192.168.4.54:6054
  slots: (0 slots) slave
  replicates c5f725669ad74fbf48b907b06c3b0ff6ca5eeb01
  ......................
  由此可以看出4.53是master ,4.55是slave,现在我们停止53
  [root@53 ~]# redis-cli -c -h 192.168.4.53 -p 6053 shutdown
  [root@51 redis-4.0.8]# redis-trib.rb check 192.168.4.51:6051
  M: 799f99bc22d8c4a9e0fcdc98166f6e6f5e348df0 192.168.4.54:6054
  slots:10923-16383 (5561 slots) master
  对节点主机重新分片
  [root@51 ~]# redis-trib.rb reshard 192.168.4.51:6051
  How many slots do you want to move (from 1 to 16384)? 5196

  What is the receiving node>
  Please enter all the source node>  Type 'all' to use all the nodes as source nodes for the hash slots.

  Type 'done' once you entered all the source nodes>  Source node #1:799f99bc22d8c4a9e0fcdc98166f6e6f5e348df0
  添加主节点主机:
  redis-trib.rb add-node   添加的节点:端口号   集群主节点:端口号
  [root@51 ~]# redis-trib.rb add-node 192.168.4.48:6048 192.168.4.51:6051
  添加从节点
  redis-trib.rb add-node --slave      从节点 ip: 端口 192.168.4.51:6351

  *如果不指定主节点的>  [root@51 ~]# redis-trib.rb add-node --slave 192.168.4.51:6051 192.168.4.51:6051
  删除节点主机
  删除从库
  [root@51 ~]# redis-trib.rb del-node 192.168.4.51:6051 676c81e55e491ea7d4f9eb9f53d5c72abc1b8513

  >> Removing node 676c81e55e491ea7d4f9eb9f53d5c72abc1b8513 from cluster 192.168.4.51:6051
  >> Sending CLUSTER FORGET messages to the cluster...
  >> SHUTDOWN the node.

  如果要想把删除的数据节点重新加入集群需要还原数据库
  [root@51 ~]# redis-cli  -h 192.168.4.51 -p 6051
  192.168.4.51:6051> CLUSTER INFO
  cluster_state:ok
  cluster_slots_assigned:16384
  cluster_slots_ok:16384
  cluster_slots_pfail:0
  cluster_slots_fail:0
  cluster_known_nodes:9
  cluster_size:3
  。。。。。。。。
  192.168.4.51:6051> CLUSTER RESET
  OK
  192.168.4.51:6051>  CLUSTER INFO
  cluster_state:fail
  cluster_slots_assigned:0
  cluster_slots_ok:0
  cluster_slots_pfail:0
  这样才可以重新添加
  删除主机master
  [root@51 ~]# redis-trib.rb reshard 192.168.4.51:6051
  How many slots do you want to move (from 1 to 16384)? 2000   #增加的槽数

  What is the receiving node>  Source node #1:6e8a84fdd95193fd53a9386f8b24c24c4e5122ff  #重哪个节点上移出
  Do you want to proceed with the proposed reshard plan (yes/no)?yes
  [root@51 ~]# redis-trib.rb del-node 192.168.4.48 6e8a84fdd95193fd53a9386f8b24c24c4e5122ff

  >> Removing node 6e8a84fdd95193fd53a9386f8b24c24c4e5122ff from cluster 192.168.4.48

  Invalid IP or Port (given as 192.168.4.48) - use IP:Port format



运维网声明 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-629668-1-1.html 上篇帖子: redis的四大特性和原理 下篇帖子: redis config配置详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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