目录
一、redis集群类型
- redis集群模式主要有以下几种方式:
- 1、 主从复制(redis2.8版本之前的模式)
- 2、Redis Sentinel 哨兵模式(redis2.8及之后的模式)
- 3、Redis Cluster集群模式(客户端sharding)(redis3.0版本之后)
- 4、Jedis sharding集群(客户端 sharding)
- 5、利用中间件代理
二、主从复制
2.1、主从复制概念
- 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点。
- 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
- 如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master,但是在连接成功之后,一次完全同步将被自动执行。
2.2、工作原理
- 从服务器连接主服务器,发送SYNC命令;
- 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
- 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
- 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
- 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
- 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;(从服务器初始化完成)
- 主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令 (从服务器初始化完成后的操作)
2.3、主从复制启用
从节点开启主从复制,有3种方式:
- 配置文件: 在从服务器的配置文件中加入:slaveof
- 启动命令: redis-server启动命令后加入 --slaveof
- 客户端命令: Redis服务器启动后,直接通过客户端执行命令:slaveof ,则该Redis实例成为从节点。
- 通过 info replication 命令可以看到复制的一些信息
2.4、主从复制优缺点
2.4.1、优点
- 支持主从复制,可以进行读写分离
- 为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务仍然必须由Master来完成
- Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。
- Master
Server是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求。 - Slave Server同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据
2.4.2、缺点
- Redis不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。
- 主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。
- Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。
三、redis-cluster集群部署
redis官方推荐使用6个节点,其中3个为主节点,3个为从节点。
一旦有master 发生故障的时候,Redis Cluster集群可以选举出对应的slave成为新的主节点,继续对外服务,从而保证服务的高可用性。
这里的实验模拟采用两个虚拟机,每个虚拟机三个网卡,充当6个节点。
3.1、环境说明
节点类型 | ip |
---|---|
master | 192.168.100.20 ;192.168.100.21;192.168.100.22; |
slave | 192.168.100.23;192.168.100.24;192.168.100.10; |
3.2、部署过程
1、master 和 slave节点都安装redis包,步骤一样
//先安装防火墙
systemctl stop firewalld
setenforce 0
//通过yum工具,安装编译工具
yum install gcc gcc-c++ make -y
//解压redis软件包
tar xzvf redis-5.0.7.tar.gz -C /opt
//编译且安装
cd /opt/redis-5.0.7/
make
make PREFIX=/usr/local/redis install
//开启服务,设置各类文件
cd /opt/redis-5.0.7/utils/
[root@localhost utils]# ./install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] //定义主配置文件
Selected default - /etc/redis/6379.conf
Please sel