redis 集群环境搭建

原理:

1,每个Redis群集的节点都需要打开两个TCP连接,由于这两个连接就需要两个端口,分别是用于为客户端提供服务的常规Redis TCP命令端口(例如6379)以及通过将10000和命令端口相加(10000+6379)而获得的端口,就是集群端口(例如16379)。

2,节点使用群集总线进行故障检测,配置更新,故障转移授权等。 客户端不应尝试与群集总线端口通信,为了保证Redis命令端口的正常使用,请确保在防火墙中打开这两个端口,否则Redis群集节点将无法通信。

 

要求:

1,redis集群必须要求有6个实例,也就是说至少要启动6个redis-server进程。

2,每个redis都需要开放两个端口,如果不能关闭防火墙,就要放行两个端口。总共至少是12个端口号。

3,redis版本限制.

  redis版本>=5.xxx,直接使用 ./redis-cli –cluster create 指令构建redis集群。

  redis版本<5.xxx,需要安装ruby、rubygems环境,使用 ./redis-trib.rb create 指令构建redis集群,

 

 

步骤:

1,在同一台主机上首先安装好单机redis。解压,make,修改配置文件,启动命令等。

2,暂时不启动上面的server实例,将redis文件复制五份,按端口号命名。替换redis.conf中的端口号。建立一个cluster-redis的文件夹,将这些redis都放进去。

3,在集群文件夹下新建一个bin目录,复制一份redis的/bin工具进去,方便以后一起使用。

4,使用集群的详细配置文件 redis.conf如下:

port 7001(每个节点的端口号)
daemonize yes
bind 192.168.119.131(绑定当前机器 IP)
dir /usr/local/redis-cluster/7001/data/(数据文件存放位置)
pidfile /var/run/redis_7001.pid(pid 9001和port要对应)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes7001.conf(9001和port要对应)#这不是用户可编辑的配置文件,而是Redis群集节点每次发生更改时自动保留群集配置(基本上为状态)的文件,以便能够在启动时重新读取它。 
cluster-node-timeout 15000  #Redis群集节点可以不可用的最长时间,而不会将其视为失败。 如果主节点超过指定的时间不可达,它将由其从属设备进行故障切换。 此参数控制Redis群集中的其他重要事项。
appendonly yes  #开启aof 持久化存储

5,更改好其他redis实例的配置文件。 

6,我用的redis版本大于5.0,所以不需要安装ruby环境。如需要ruby 环境,可以看这篇//www.cnblogs.com/ding2016/p/7903147.html

7,指定各自的配置文件,启动所有redis-server实例。

8,执行创建集群命令:

   ./bin/redis-cli –cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.01:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 –cluster-replicas 1

  replicas设置为1

  比如6个节点,设置1,6*(1/2)=3个master,6*(1/2)=3个slave;

  比如24个节点,设置2,24*(1/3)=8个master,24*(2/3)=16个slave。

9,按提示下一步就可以了。

  slot(槽点)是用来进行写指令的,只分配给master,一共16384个槽点,均匀分配给各个master。slave只是作为备份,不执行写指令,不需要槽点,所以分配0个槽点。

10,任意连接摸一个节点,测试 -h host -p port

  例如:redis1/bin/redis-cli   -c    #连接到集群节点(不管是master、还是slave)都要使用参数-c,c即cluster

  >cluster info

  >info replication

Tags: