动手搭_redis集群

搭建redis集群至少需要三个master节点。

我用了三台虚拟机,129,130,131。各一主一从,共三主三从的集群。

修改配置文件

创建集群配置目录,用端口号命名好区分 8001 & 8002
复制redis.conf文件分别至8001和8002目录下。
修改redis.conf文件

port 8001     #端口号
logfile "/srv/redis-3.2.9/cluster-conf/8001/redis.log"  #指定日志文件
dir "/srv/redis-cluster/8001/"              #数据存放文件位置rdb,aop,nodes.conf
cluster-enabled yes                         #开启集群
cluster-config-file  nodes.conf             #集群节点信息文件命名
cluster-node-timeout 5000                   #集群节点超时毫秒数
appendonly yes                              #开启aof持久化
bind 0.0.0.0                                #绑定ip。

同理 130和131机器,修改这些配置。

启动节点

cd 到bin目录下,./redis-server ../8001/redis.conf& 分别启动各自机器的8001和8002

创建集群

./redis-trib.rb create --replicas 1 192.168.0.11:7001 192.168.0.12:7001 192.168.0.13:7001 192.168.0.11:7002 192.168.0.12:7002 192.168.0.13:7002 

## 切换到src目录下,执行tedis-trib.rb集群管理命令
## replicas 1 表示为集群中的每一个主节点通过创建的先后顺序创建一个从节点

redis-trib.rb需要先安装ruby环境 yum install ruby yum install rubygems

image.png-67.8kB
image.png-67.8kB

image.png-81.7kB
image.png-81.7kB

集群信息代表意思分别是:

节点id
ip:port
角色(master0 slaver1),主节点的id
节点最后一次返回pong回复的时间
连接次数
节点占有的槽(slot)

image.png-37.9kB
image.png-37.9kB

测试

通过./redis-cli -c集群连接模式,set一个key,可以看到,通过crc126算法定位到130这台机器对应的slot,然后存放。

image.png-13.7kB
image.png-13.7kB

如果130机器上的master节点宕掉,能否拿到site的值?


image.png-17.4kB
image.png-17.4kB

image.png-34.7kB
image.png-34.7kB

停掉 130机器的8001 master节点。


image.png-8.2kB
image.png-8.2kB

可以看到,并没有收到影响,从129的8002 slave机器上取到了值。

那么停到129的8002呢?

image.png-15.5kB
image.png-15.5kB

image.png-7.1kB
image.png-7.1kB

可以看到,集群挂掉了。所以结论:停掉一个master或者slave 服务正常,停掉master
和slave集群挂掉。

重启这两个节点。


image.png-35.7kB
image.png-35.7kB

可以看到,redis通过选举,master身份发生了变化。

遇到的问题

## /usr/bin/env: ruby: No such file or directory
解决:安装ruby环境,**不要直接yum install ruby,redis要求ruby版本2.4以上**使用rvm安装。

## ./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from ./redis-trib.rb:24
解决:yum install rubygems

## in `gem_original_require': no such file to load -- redis (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
解决:gem install redis

## 创建集群节点时出错,检查bind修改为0.0.0.0

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文档翻译自 http://redis.io/topics/cluster-tutorial 。 本文档是 Red...
    会跳舞的机器人阅读 67,032评论 2 21
  • 前言 Redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用。单节点的Red...
    Kevin_ZGJ阅读 14,013评论 19 133
  • 一、概述 节点自动发现,slave->master 选举,集群容错,Hot resharding:在线分片进群管理...
    WeiminSun阅读 7,900评论 0 3
  • 今天估计开了电脑了,效率又一落千丈。看来真的不能开电脑…… 长腿姐讲的政治课好好好!!好想报她的班啊但是已经报了那...
    弹弹弹阅读 2,615评论 0 1
  • 创建民促救人民,佛教领袖慈善心。 西泠印社艺载道,文学渊薮臻上品。 民主建言发真音,肝胆相照诚瑟琴。 禅宗悠远弥巨...
    顧勇詩書阅读 3,203评论 1 4

友情链接更多精彩内容