vlambda博客
学习文章列表

redis集群原理及搭建


                                 Reids集群设置

机器数量:6台

实例个数:9

Redis集群至少六个实例,至少六个节点,实现三主三从的集群方式,在spring cloud 及其开发构架中主要写在application.yaml文件中

                           

需要将实例的ip和端口全部写上,如需要密码,还需要添加password参数

为了将资源利用最大化并且达到最高可用性和数据稳定性,采用六个节点,配置九个实例的方式,将集群中slave节点的机器配置不同端口号,这样实现集群资源最大化利

 


Spring cloud  在连接时填写需要填写九个ip 和想对应的端口

此集群,因为每一组主从节点均不在一台机器上,所以六台机器任一台集群挂机,都不会影响程序

 

 

原理:

Redis集群将redis的主节点has成16384个虚拟内存槽平均分配给三个主节点,要存储的数据会通过hash计算分配带对应的主节点,再由主节点同步给队形的slave节点 。

Redis集群是没有同意的入口的,客户端连接集群的时候连接集群中的node即可,集群内部的节点是互相通信(PING-PONG机制),每个节点都是一个redis实例。

为了实现集群的高可用,判断节点是否健康,redis-cluster有一个投票容错机制,吐过集群中超过半数的节点投票认为节点挂了,那么节点就挂了,超过半数的主节点挂了,那么cluser也挂了。

 

工具: 

在之前的redis4.X版本中创建redis集群必须的搭建ruby环境,到了redis5.x以后自带的c语言工具redis-cli便可以完成集群的使用和搭建

 

搭建过程及遇到的问题

首先安装reids

在redis安装包中tar解压后不用生成makefile直接就可以编译

在make过程出现问题可能原因是gcc  gcc-c++  或者在内核中使用的内存函数没有指定正确需要手动修改make MALLOC=libc即可修复

 

改动配置文件

bind 192.168.155.114

监听的IP

protected-mode no

是否开启redis保护机制,会有拒绝请求的可能

port 6378

监听端口

masterauth 1q2w3e4r

开启集群密码

replica-priority 96

权重值,集群中挂掉机器再次复活,看权重值是否代替活着的机器

requirepass 1q2w3e4r

开启redis密码

cluster-enabled yes

集群模式是否开启

cluster-node-timeout6000

集群超时时间。默认15这里设置成6秒,不能大也不能小

cluster-require-full-coverageno

表示当负责一个插槽的主库下线且没有相应的从库进行故障恢复时,集群仍然可用

pidfile/var/run/redis_6379.pid

生成相应的pid位置,根据端口号来修改

 

 

将所有势力按照此方式修改保存

 

进入src目录

使用命令创建集群

./redis-cli --clustercreate 192.168.155.108:6378 192.168.155.107:6378 192.168.155.104:6378 192.168.155.130:6378 192.168.155.114:6378192.168.155.143:6378 192.168.155.130:6377 192.168.155.143:6377 192.168.155.114:6377--cluster-replicas 2 -a 1q2w3e4r

 

其中 --cluster-replicas 2 意思是每个主节点设置两个slave节点

也可以设置更多主节点,理论上可以设置16384个主节点。通过-M 指定  -a 是集群密码

蓝色标记的是主节点,要放在前面,后面随机生成

 

 

查看集群状态

./redis-cli   --cluster  info 192.168.155.108:6378 -a 1q2w3e4r

节点可以是任意的。-a 是集群密码


由于配置的权重值,实验问题,每次kill掉机器重启,主节点都会被接替

 

更多功能使用  ./redis-cli   --cluster help  查看

也可以进入集群查看

./redis-cli   -c  -h192.168.155.108   -p   6378 -a 1q2w3e4r

CLUSTER INFO

-c  是进入集群模式


如果集群fail 可以使用./redis-cli   --cluster fix  ip  来修复单点

重新创建集群时务必将集群里的数据清理干净,并把src下的  dump.rdb node.conf文件删除后才能重新创建集群,要不会报错或者脑裂

单点:在单点环境中默认会出现16个db数据库

     默认set  key value值是会选择db0 如果在spring cloud的配置文件中设置库需要select x 再进行set

集群:集群环境下  将所有的库合并成db0

      所以不需要选库,直接设置就好,spring cloud的配置文件中也要改写成db0