这次讲讲如何搭建redis集群,官方的介绍版本是三主三从的形式,这次就这样演示,并看看集群的一些特性。

• ① 环境
192.168.79.100 192.168.79.101 192.168.79.102 每台服务器1主1从,共3主3从 相关安装包存储路径:/root/soft/

系统类型 | IP地址 | 节点角色 | CPU | Memory | Hostname |
|---|---|---|---|---|---|
Centos7 | 192.168.79.100 | redis-master-1 | 2 | 2G | redis-master-1 |
Centos7 | 192.168.79.101 | redis-master-2 | 2 | 2G | redis-master-2 |
Centos7 | 192.168.79.102 | redis-master-3 | 2 | 2G | redis-master-3 |

•① 准备工作
三台主机都在root 目录下创建soft

•② 下载 79.100机器


• ③ 79.100机器安装
•④ 79.100机器配置

79.100机器修改7001下的redis.conf,查找esc键,输入/名称
1.bind 127.0.0.1 修改 bind 0.0.0.02.port 6379 修改 port 70013.logfile "" 修改 logfile "/root/soft/redis-3.2.9/cluster-conf/7001/redis.log"4.dir ./ 修改dir /root/soft/redis-3.2.9/cluster-conf/70015.appendonly no修改appendonly yes6.文件末尾添加 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000







79.100机器修改7002下的redis.conf,查找esc键,输入/名称
1.bind 127.0.0.1 修改 bind 0.0.0.02.port 6379 修改 port 70023.logfile "" 修改 logfile "/root/soft/redis-3.2.9/cluster-conf/7002/redis.log"4.dir ./ 修改dir /root/soft/redis-3.2.9/cluster-conf/70025.appendonly no修改appendonly yes6.文件末尾添加 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000






•⑤ 配置说明
1.端口号。
port
2.指定了记录日志的文件。
logfile
3.数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录。
dir
4.是否开启集群
cluster-enabled
5.集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。这个文件并不需要手动配置,这个配置文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件,请确保与实例运行的系统中配置文件名称不冲突
cluster-config-file nodes.conf
6.节点互连超时的阀值。集群节点超时毫秒数
cluster-node-timeout
7.默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了。但是redis如果中途宕机,会导致可能有几分钟的数据丢失,根据save来策略进行持久化,Append Only File是另一种持久化方式,可以提供更好的持久化特性。Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。
appendonly
•⑥ scp拷贝到101,102主机

•⑦ 启动100,101,102


•⑧ 创建集群
100,101,102机器执行,安装ruby 2.4.1
100机器执行


redis-trib.rb是redis作者用ruby完成的是对redis cluster管理工具, 集成在redis的源码src目录下。
名称 | 作用 |
|---|---|
call | 在集群全部节点上执行命令 |
set-timeout | 设置集群节点间心跳连接的超时时间 |
del-node | 从集群中删除节点 |
reshard | 在线迁移slot |
check | 检查集群 |
import | 将外部redis数据导入集群 |
add-node | 将新节点加入集群 |
create | 创建集群 |
info | 查看集群信息 |
fix | 修复集群 |
rebalance | 平衡集群节点slot数量 |
•⑨ 查看连接效果
里面三个master,三个slave。

•⑩ 查看集群
•⑪ 宕机重启集群

分片的方式,一个集群有16383的槽,根据主相对平均的方式来分配的。

增加节点:./redis-trib.rb add-node ip:port ip:port 第一个参数是新节点的地址,第二个参数是任意一个已经存在的节点的IP和端口. 移除节点:redis-trib del-node ip:port
<node-id>第一个参数是任意一个节点的地址,第二个节点是你想要移除的节点地址 改变一个从节点的主节点cluster replicate master-node-id
1.主节点挂了,是没有问题的正常。2.从节点挂了,肯定是可以正常访问的。3.两个都挂了(一主一从),不能用了
集群的方式不能使用select 1 直接选择数据库。但是它有槽的概念,cluster keyslot wst。可以看到这个key在那个槽位。
理论:redis最大的集群节点数16384,最大槽点数16384。一个集群16384个槽点。像微博,淘宝,他们的集群有个共性:N个集群,集群不在同一个机房中。
PS:redis的集群搭建基本就这样完毕了,写文章用了1个小时,但是搭建环境搞了我2个小时,家里的网速太不稳定了。就像咱们正常的情况可能应用都能承受的住,一旦突然情况量上去可能就无法承受,通过集群的很大好处,分担压力,容灾,众人拾柴火焰高。