系列十五、搭建redis集群
一、概述
? ? ? ? 上篇文章介绍了redis集群的相关知识,本章实战演示redis的集群环境的详细搭建步骤。如果帮助到了你,请点赞 + 收藏 + 关注!有疑问的话也可以评论区交流。
二、搭建步骤
2.1、预备知识
? ? ? ? 判断一个集群中的节点是否可用,是集群中的所有主节点选举的结果,如果半数以上的节点认为当前节点挂了,那么当前节点就是挂了,所以搭建redis集群时,在满足系统吞吐量的前提下,建议节点数最好为奇数,那么搭建集群将至少需要3个主节点+3个从节点,即至少需要6个节点,考虑到本机笔记本的性能问题,我这里就在一台机器上使用6个节点进行搭建演示。
? ? ? ? 注意事项:现在是搭建集群,需要把当前已经启动的所有redis服务关闭掉!
2.2、前置准备(安装ruby和redis集群依赖)
# 联网下载ruby依赖
yum install -y ruby rubygems
# 安装redis-3.2.1.gem
gem install redis-3.2.1.gem
# 我分享的redis-3.2.1.gem
链接:https://pan.baidu.com/s/1NrnB3v5IDr_h5JzumjA0Jw?pwd=yyds
提取码:yyds
2.3、详细步骤
2.3.1、创建文件夹
在 /myconf/redis/ 目录创建7个文件夹,分别为 7001、7002、7003、7004、7005、7006、7007
mkdir 7001 7002 7003 7004 7005 7006 7007
2.3.2、拷贝配置文件
每个目录复制一份配置文件
cp redis6379_standAlone_aof.conf 7001/redis.conf
cp redis6379_standAlone_aof.conf 7002/redis.conf
cp redis6379_standAlone_aof.conf 7003/redis.conf
cp redis6379_standAlone_aof.conf 7004/redis.conf
cp redis6379_standAlone_aof.conf 7005/redis.conf
cp redis6379_standAlone_aof.conf 7006/redis.conf
cp redis6379_standAlone_aof.conf 7007/redis.conf
2.3.3、修改配置文件的信息
修改不同目录的配置文件,主要修改如下内容:
port? ? ? ? ${port},例如:7001文件夹中的port需修改为7001? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 这几个文件夹中的redis.conf分别修改为对应的端口
bind? ? ? ? 0.0.0.0? ? ? ? ????????????????????????????????????????????????????????????????????????????????????????????????# 开启远程连接
daemonize????????yes? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????# 以守护进程运行? ? ? ?
dbfilename? ? ? ? dump${port}.rdb,例如:dump7001.rdb? ? ? ? ?????????????????????????????????# rdb文件的名称
cluster-enabled????????yes? ? ? ??????????????????????????????????????????????????????????????????????????????????????# 开启集群模式
cluster-config-file? ? ? ? nodes-${port}.conf,例如:nodes-7001.conf? ??????????????????????# 集群节点配置文件
cluster-node-timeout? ? ? ? 5000? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????# 集群节点超时时间
appendonly? ? ? ? yes? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 开启aof的持久化机制
appendfilename? ? ? ? "appendonly-${port}.aof",例如:"appendonly-7001.aof"? ? ? ?# 生成的持久化文件的名称
2.3.4、启动节点
指定不同目录的配置文件,启动7个节点?
./redis-server /myconf/redis/7001/redis.conf
./redis-server /myconf/redis/7002/redis.conf
./redis-server /myconf/redis/7003/redis.conf
./redis-server /myconf/redis/7004/redis.conf
./redis-server /myconf/redis/7005/redis.conf
./redis-server /myconf/redis/7006/redis.conf
./redis-server /myconf/redis/7007/redis.conf
?
2.3.5、创建集群
创建集群
第一步:拷贝redis源码包中的redis-trib.rb 至 /usr/local/bin 目录:cp /opt/redis-4.0.10/src/redis-trib.rb ./
第二步:创建集群
指令解释:
????????????--replicas 1:指定每个master节点有几个slave节点
?? ?????????192.168.173.232:7001 :master1
?? ?????????192.168.173.232:7002 :master2
?? ?????????192.168.173.232:7003 :master3
?? ?????????192.168.173.232:7004 :masterXxx的slave节点
?? ?????????192.168.173.232:7005 :masterXxx的slave节点
?? ?????????192.168.173.232:7006 :masterXxx的slave节点?注意事项:
? ? ? ? (1)master的slave节点的选举是随机的。
? ? ? ? (2)第一次创建master集群时,会打印各个节点的信息(例如角色、从节点是谁)
./redis-trib.rb create --replicas 1 192.168.173.232:7001 192.168.173.232:7002 192.168.173.232:7003 192.168.173.232:7004 192.168.173.232:7005 192.168.173.232:7006
2.4、redis-cli连接测试
?
2.5、查看集群状态
(1)查看集群状态:
? ? ? ? 第一次创建集群时,会在控制台打印各个节点的详细信息,如果后续想要查看节点的情况应该怎办呢?可以使用如下指令进行查看:
????????./redis-trib.rb check 192.168.173.232:7001
? ? ? ? 说明:后边的192.168.173.232:7001为集群中的任意一个节点
(2)集群节点状态说明
主节点:
? ? ? ? ①主节点存在hash slots,且各个主节点的hash slots不存在交叉的情况;
? ? ? ? ②主节点不能删除;
? ? ? ? ③一个主节点可以有多个从节点;
? ? ? ? ④主节点宕机时,多个slave节点自动选举新的主节点;
从节点:
? ? ? ? ①从节点没有hash slots;
? ? ? ? ②从节点可以删除;
? ? ? ? ③从节点不负责数据的写,只负责数据的同步;
2.6、添加主节点
语法:./redis-trib.rb add-node <新加入节点IP:新加入节点PORT>?<集群中任意节点IP:集群中任意节点PORT>
案例:./redis-trib.rb add-node 192.168.173.232:7008?192.168.173.232:7001
注意事项:
? ? ? ? (1)要添加的节点必须以集群模式启动;
? ? ? ? (2)默认情况下该节点就是以master节点的形式添加
2.7、添加从节点
语法:./redis-trib.rb add-node --slave? <新加入节点IP:新加入节点PORT>?<集群中任意节点IP:集群中任意节点PORT>
案例:./redis-trib.rb add-node --slave 192.168.173.232:7009?192.168.173.232:7001
注意事项:
????????(1)要添加的节点必须以集群模式启动;
? ? ? ? (2)当添加的从节点没有指定主节点时,redis会随机给从节点较少的主节点添加当前节点作为它的从节点
为指定的master节点添加从节点
语法:./redis-trib.rb add-node --slave --master-id <masterID> <新加入节点IP:新加入节点PORT>?<集群中任意节点IP:集群中任意节点PORT>
案例:./redis-trib.rb add-node --slave --master-id?b76e7a8dc7eab793eab245f71e2bc9aabf6997ec 192.168.173.232:7009?192.168.173.232:7001
2.8、删除从节点
语法:./redis-trib.rb del-node <集群中任意节点IP:集群中任意节点PORT> <删除节点ID>
案例:./redis-trib.rb del-node?192.168.173.232:7009?b76e7a8dc7eab793eab245f71e2bc9aabf69xxxx
注意事项:被删除的节点必须是从节点或者是没有分配hash slots的节点
2.9、集群在线分片
语法:./redis-trib.rb reshard?<集群中任意节点IP:集群中任意节点PORT>
案例:./redis-trib.rb reshard?192.168.173.232:7009
2.10、?关闭redis集群
语法:./redis-cli -c <-h 192.168.7.4> -p port SHUTDOWN
案例:
????????./redis-cli -c -p 7001 SHUTDOWN????????./redis-cli -c -p 7001 SHUTDOWN
????????./redis-cli -c -p 7002 SHUTDOWN
????????./redis-cli -c -p 7003 SHUTDOWN
????????./redis-cli -c -p 7004 SHUTDOWN
????????./redis-cli -c -p 7005 SHUTDOWN
????????./redis-cli -c -p 7006 SHUTDOWN
????????./redis-cli -c -p 7007 SHUTDOWN
2.11、参考
https://www.bilibili.com/video/BV1jD4y1Q7tU?p=28&vd_source=72ebc194dbfa51ec950a52c25c337f7c
?
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!