Redis Cluster集群搭建

Redis Cluster集群搭建

集群搭建参考官网:https://redis.io/topics/cluster-tutorial

​ redis集群需要至少要三个master节点,我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,这里用一台机器(可以多台机器部署,修改一下ip地址就可以了)部署6个redis实例,三主三从,搭建集群的步骤如下:

Redis 5.0以上版本

1、创建Redis节点安装目录

mkdir -p /usr/local/redis_cluster  :指定目录下 创建 redis_cluster

2、在redis_cluster目录下,创建7000-7005个文件夹下

mkdir 7000 7001 7002 7003 7004 7005

3、并将redis-conf分别拷贝到7000-7005文件夹下

cp /opt/redis-5.0.4/redis.conf  ./7000

4.修改Redis配置文件

/usr/local/redis_cluster/7000/redis.conf

# 关闭保护模式 用于公网访问
protected-mode no
port 7000
# 开启集群模式
cluster-enabled yes  
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
# 后台启动
daemonize yes
pidfile /var/run/redis_7000.pid
logfile "7000.log"
#dir /redis/data
# 此处绑定ip 可以是阿里内网ip 和 本地ip 也可以直接注释掉该项  
#bind 127.0.0.1    
#用于连接主节点密码
masterauth guoweixin
#设置redis密码 各个节点请保持密码一致
requirepass guoweixin

5、依次复制并修改 6个redis.conf

cp ./7000/redis.conf  ./7001/    :依次进行复制
vim ./7001/redis.conf     :执行 %s/old/new/g  全部替换  :wq 保存并退出 即可

6、依次启动6个节点

将安装的redis 目录下的src 复制到 cluster下,方便启动服务端

cd /opt/redis-5.0.0    :进入redis安装目录
cp -r  ./src/ /usr/local/redis_cluster/    :将src文件复制到redis_cluster目录中
./src/redis-server ./7000/redis.conf 
./src/redis-server ./7001/redis.conf 
./src/redis-server ./7002/redis.conf 
./src/redis-server ./7003/redis.conf 
./src/redis-server ./7004/redis.conf 
./src/redis-server ./7005/redis.conf 

启动后,可以用PS查看进程:

ps -ef | grep  -i redis

7、创建集群

Redis 5版本后 通过redis-cli 客户端命令来创建集群。

./src/redis-cli --cluster  create  -a guoweixin 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 --cluster-replicas 1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EKi47xRm-1619096729875)(mdpic-cluster\p34.png)]

Redis Cluster集群验证

在某台机器上(或)连接集群的7001端口的节点:

 redis-cli -h 127.0.0.1  -c -p 7000 -a guoweixin  :加参数 -c 可连接到集群

redis cluster在设计的时候,就考虑到了去中心化,去中间件,也就是说,集群中的每个节点都是平等的关系,都是对等的,每个节点都保存各自的数据和整个集群的状态。每个节点都和其他所有节点连接,而且这些连接保持活跃,这样就保证了我们只需要连接集群中的任意一个节点,就可以获取到其他节点的数据

基本命令

info replication通过Cluster Nodes命令和Cluster Info命令来看看集群效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KjcxI9SF-1619096729876)(mdpic-cluster\p36.png)]

输入命令 cluster nodes

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZsvDgNfS-1619096729877)(mdpic-cluster\p37.png)]

​ 每个Redis的节点都有一个ID值,此ID将被此特定redis实例永久使用,以便实例在集群上下文中具有唯一的名称。每个节点都会记住使用此ID的每个其他节点,而不是通过IP或端口。IP地址和端口可能会发生变化,但唯一的节点标识符在节点的整个生命周期内都不会改变。我们简单地称这个标识符为节点ID。

测试数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A8S1lxFe-1619096729880)(mdpic-cluster\p38.png)]

Redis Cluster总结

简介:

​ Redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。

​ 集群有ABC三个主节点, 如果这3个节点都没有加入从节点,如果B挂掉了,我们就无法访问整个集群了。A和C的slot也无法访问。

​ 所以我们在集群建立的时候,一定要为每个主节点都添加了从节点, 比如像这样, 集群包含主节点A、B、C, 以及从节点A1、B1、C1, 那么即使B挂掉系统也可以继续正确工作。

​ B1节点替代了B节点,所以Redis集群将会选择B1节点作为新的主节点,集群将会继续正确地提供服务。 当B重新开启后,它就会变成B1的从节点。

不过需要注意,如果节点B和B1同时挂了,Redis集群就无法继续正确地提供服务了。

五 Redis Cluster关闭集群

启动集群

开启全部redis节点 redisall.sh

/usr/local/redis_cluster/src/redis-server ./7000/redis.conf 
/usr/local/redis_cluster/src/redis-server ./7001/redis.conf 
/usr/local/redis_cluster/src/redis-server ./7002/redis.conf 
/usr/local/redis_cluster/src/redis-server ./7003/redis.conf 
/usr/local/redis_cluster/src/redis-server ./7004/redis.conf 
/usr/local/redis_cluster/src/redis-server ./7005/redis.conf 
chmod u+x redisall.sh    :执行将redisall.sh变成可执行文件
./redisall.sh  :在当前目录下启动: 

启动集群

vim startall.sh 追加如下内容:(记得改自己ip地址和密码)

/usr/local/redis_cluster/src/redis-cli --cluster  create  -a guoweixin 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 --cluster-replicas 1
 chmod u+x startall.sh    :执行将redisall.sh变成可执行文件
./startall.sh    :在当前目录下启动

关闭集群

/usr/local/redis_cluster目录下编写脚本文件:vim shutdown.sh

内容如下:

/usr/local/redis_cluster/src/redis-cli -c -h 127.0.0.1 -p 7000 -a guoweixin shutdown
/usr/local/redis_cluster/src/redis-cli -c -h 127.0.0.1 -p 7001 -a guoweixin shutdown
/usr/local/redis_cluster/src/redis-cli -c -h 127.0.0.1 -p 7002 -a guoweixin shutdown
/usr/local/redis_cluster/src/redis-cli -c -h 127.0.0.1 -p 7003 -a guoweixin shutdown
/usr/local/redis_cluster/src/redis-cli -c -h 127.0.0.1 -p 7004 -a guoweixin shutdown
/usr/local/redis_cluster/src/redis-cli -c -h 127.0.0.1 -p 7005 -a guoweixin shutdown
chmod u+x shutdown.sh   :然后执行将shutdown.sh变成可执行文件
 ./shutdown.sh   :在当前目录下启动
查看:ps aux|grep redis
官方:/usr/local/redis_cluster/redis-cli -a xxx -c -h 192.168.5.100 -p 8001
提示:-a访问服务端密码,-c表示集群模式,-h指定ip地址,-p指定端口号