动手搭_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

动手搭_redis集群_第1张图片
image.png-67.8kB

动手搭_redis集群_第2张图片
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,然后存放。

动手搭_redis集群_第3张图片
image.png-13.7kB

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


动手搭_redis集群_第4张图片
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呢?

动手搭_redis集群_第5张图片
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

你可能感兴趣的:(动手搭_redis集群)