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指定端口号