前言
集群演变
单机架构
如果Redis宕机,数据没做好持久化,数据会丢失。
主从架构
相对于单节点,做了主从同步备份,数据安全性上有了一定程度的提高,但是主节点和从节点的切换还需要运维做的切换。
哨兵模式
相对于主从模式,哨兵模式,哨兵模块来监控Redis集群,当主节点宕机,哨兵会通过选举,选出新的主节点,自动做主从切换。
哨兵模式客户端访问Redis的步骤为:
- 客户端访问哨兵集群,哨兵返回目前Redis集群主节点IP
- 客户拿到主节点IP,访问主节点。
缺点:
- 一台Redis的理想状态并发为10万,哨兵模式只有一个主节点对外提供服务,没法支持很高的并发
- 内存也有限制(单台8~16)。内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率。
- 主从切换的瞬间存在访问瞬断;
CODIS模式
使用中间件,将多个主从的Redis 集群管理,对key进行算法计算,分片存储在不同的主从小集群中。需要借助ZooKeeper.
Codis的原理以及部署—— CODIS (分布式 Redis 解决方案)
高可用集群模式
相较哨兵模式的性能缺点,高可用做了弥补。并且不需要使用中间件。
redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要sentinel哨兵也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展,据官方文档称可以线性扩展到上万个节点(官方推荐不超过1000个节点)
集群搭建
redis集群需要至少要三个master节点
【Redis】— Linux安装Redis,集群安装整体和单机安装类似,集群其实就是根据不同的Redis配置文件,启动不同Redis实例,建立一个集群。
相比单机,集群模式配置不同。
- 集群端口,配置为每个实例单独的端口
- 将
redis.config
文件中cluster-enabled
配置为 yes(启动集群模式) cluster-config-file
配置对应实例的文件地址(这里存放集群信息文件)cluster-node-timeout
集群节点超时时间
配置完成之后,分别启动每个redis实例。然后用redis-cli创建整个redis集群。
./redis-cli –cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002
三台机器部署6个redis实例,每台机器一主一从,搭建集群的步骤如下:
-
在第一台机器的/usr/local下创建文件夹redis-cluster,然后在其下面分别创建2个文件夾如下
(1)mkdir -p /usr/local/redis-cluster
(2)mkdir 8001、 mkdir 8004 -
把之前的redis.conf配置文件copy到8001下,修改如下内容:
(1)daemonize yes
(2)port 8001(分别对每个机器的端口号进行设置)
(3)dir /usr/local/redis-cluster/8001/(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据)
(4)cluster-enabled yes(启动集群模式)
(5)cluster-config-file nodes-8001.conf(集群节点信息文件,这里800x最好和port对应上)
(6)cluster-node-timeout 5000
(7) # bind 127.0.0.1(去掉bind绑定访问ip信息)
(8) protected-mode no (关闭保护模式)
(9)appendonly yes
如果要设置密码需要增加如下配置:
(10)requirepass 123456 (设置redis访问密码)
(11)masterauth 123456 (设置集群节点间访问密码,跟上面一致) -
把修改后的配置文件,copy到8002,修改第2、3、5项里的端口号
-
另外两台机器也需要做上面几步操作,第二台机器用8002和8005,第三台机器用8003和8006
-
分别启动6个redis实例,然后检查是否启动成功
(1)/usr/local/redis-5.0.2/src/redis-server /usr/local/redis-cluster/800*/redis.conf
(2)ps -ef | grep redis 查看是否启动成功 -
用redis-cli创建整个redis集群
(1)/usr/local/redis-5.0.2/src/redis-cli -a 123456 --cluster create --cluster-replicas 1 192.168.0.61:8001 192.168.0.62:8002 192.168.0.63:8003 192.168.0.61:8004 192.168.0.62:8005 192.168.0.63:8006 代表为每个创建的主服务器节点创建一个从服务器节点 -
验证集群
(1)连接任意一个客户端即可:./redis-cli -c -h -p (-a访问服务端密码,-c表示集群模式,指定ip地址和端口号)如:/usr/local/redis-5.0.2/src/redis-cli -a 123456 -c -h 192.168.0.61 -p 800*
(2)进行验证: cluster info(查看集群信息)、cluster nodes(查看节点列表)
(3)进行数据操作验证
(4)关闭集群则需要逐个进行关闭,使用命令:
/usr/local/redis/bin/redis-cli -a 123456 -c -h 192.168.0.60 -p 800* shutdown