Redis学习笔记六——搭建redis集群(非分布式真正的cluster)

来源:互联网 发布:癌症诊断书生成软件 编辑:程序博客网 时间:2024/04/28 14:14


要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,

其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下:

127.0.0.1:7000

127.0.0.1:7001

127.0.0.1:7002

127.0.0.1:7003

127.0.0.1:7004

127.0.0.1:7005

1、redis集群配置:

将redis.conf复制一份作为redis-cluster.conf,修改如下配置:

port 6379bing  #建议将主机地址127.0.0.1和主机的实际IP或局域网地址都绑定appendonly yesdaemonize yes #允许以后台程序允许

跟集群有关的配置:

cluster-enabled yescluster-config-file nodes-6379.conf #(建议以nodes-端口号的形式命名,方便辨识)cluster-node-timeout 15000cluster-slave-validity-factor 10cluster-migration-barrier 1cluster-require-full-coverage yes

redis-cluster.conf复制六份到以端口号命名的文件夹下,并将名称更改为端口号以便于区分。

分别修改如下配置:

port #对应端口号bing  #对应ip   建议加上127.0.0.1原因后面解释cluster-config-file

2、redia集群环境准备工作

必须安装的东西:

ruby(用来执行redis-trib.rb脚本,创建集群)

rubygems(用来安装redis)此处安装不需要重新下载redis

 安装命令:

redis-cluater的搭建需要执行ruby的脚本,所以需要ruby的环境

所以先需要安装ruby的环境,

yum install ruby

或者ruby下载地址

然后再使用yum安装gem

yum install rubygems

或者gems下载地址

然后使用gem 安装redis 例如我的版本是3.2.1

gem install -l redis-3.2.1.gem

3、集群启动和建立

然后就可以进入redis的src目录执行

./redis-trib.rb  create --replicas 1 127.0.0.1:7000127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

默认是前三个为主,后三个为从

默认情况下不能从slaves读取数据,但建立连接后,执行一次命令READONLY,该slaves即可读取数据。

4、客户端登录

用redis-cli -c -h -p命令登录 

-c是以集群方式登录; 

-h后跟主机号 ;

-p后跟端口号。

绑定了127.0.0.1则可以省略-h参数。不加-c则客户端不自动切换。

例如:客户端登录7000端口的,设置的数据应该存放在7001上则会报错请转到7001。而加上-c启动则会自动切换到7001客户端保存。

5、集群配置解析

 

默认情况下不能从slaves读取数据,但建立连接后,执行一次命令READONLY,该slaves即可读取数据。

否则只能以redis-cli -c -h -p命令登录 -c是以集群方式

cluster-enabled yes    集群开关,默认是不开启集群模式。

cluster-config-file nodes-6379.conf  集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。这个文件并不需要手动配置,这个配置文件有 Redis生成并更新,每个Redis集群节点需要一个单独的配置文件,请确保与实例运行的系统中配置文件名称不冲突。

cluster-node-timeout 15000 节点互连超时的阀值。集群节点超时毫秒数。即节点与集群其他节点断开多长时间将被认定为超时。建议稍微大一点

cluster-slave-validity-factor 10 在进行故障转移的时候,全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了,导致数据过于陈旧,这样的slave不应该被提升为master。该参数就是用来判断slave节点与master断线的时间是否过长。判断方法是:比较slave断开连接的时间和(node-timeout * slave-validity-factor)+ repl-ping-slave-period如果节点超时时间为三十秒, 并且slave-validity-factor为10,假设默认的repl-ping-slave-period是10秒,即如果超过310秒slave将不会尝试进行故障转移

cluster-migration-barrier 1 master的slave数量大于该值,slave才能迁移到其他孤立master上,如这个参数若被设为2,那么只有当一个主节点拥有2个可工作的从节点时,它的一个从节点才会尝试迁移。

cluster-require-full-coverage yes 默认情况下,集群全部的slot有节点负责,集群状态才为ok,才能提供服务。设置为no,可以在slot没有全部分配的时候提供服务。不建议打开该配置,这样会造成分区的时候,小分区的master一直在接受写请求,而造成很长时间数据不一致。


下篇文章讲解如何向集群节点添加、删除和分配slot。


0 1
原创粉丝点击