一、项目背景
使用了6节点redis作为缓存数据库。Redis版本Redis server 5。
系统部署架构图:

二、Redis模式介绍
2.1 主从模式
- 主从模式是最为简单的redis集群模式
- 主要工作模式是主从复制。主数据库可以执行读写功能,而从数据库只能执行读功能。主数据库数据发生变化,会自动同步到从数据库。
- 主数据库为master,从数据库为slave,一个master可以有多个slave,一个slave只能有一个master,slave挂了,重新启动会从master同步数据 master挂了,服务器只能进行读功能,不能执行写功能,直到master重新启动同步数据后,才能提供写服务。
2.2 哨兵模式
- 可以解决主从模式的弊端:master挂掉之后不能提供写功能。
- 哨兵模式是建立在主从模式的
- 当master挂掉之后,会自动从slave中选一个作为master。若master重新启动,master则会转化为现有的master下的一个slave
- 当slave切换时,会通过发布订阅方式,将slave所对应的master更改
- 因为哨兵也是一个进程,所以也有挂掉的可能,需要配置多个哨兵互相监督。一个哨兵可以监督多个主从数据库。同样,一个主从数据库可以被多个哨兵监督。
2.3 集群Cluster模式
- redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求,自动将数据进行分片,每个master上放一部分数据提供内置的高可用支持,部分master不可用时,还是可以继续工作的
- 支撑N个redis master node,每个master node都可以挂载多个slave node
- 高可用,因为每个master都有salve节点,那么如果mater挂掉,redis cluster这套机制,就会自动将某个slave切换成master
三、服务器规划
IP地址 | 主机名 | redis版本 | 角色 |
192.168.1.10 | redis-01 | 5 | slave |
192.168.1.11 | redis-02 | 5 | slave |
192.168.1.12 | redis-03 | 5 | master |
192.168.1.13 | redis-04 | 5 | slave |
192.168.1.14 | redis-05 | 5 | master |
192.168.1.15 | redis-06 | 5 | master |
四、redis安装
4.1 系统配置
1. 系统版本
[root@redis-01 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
1. 修改内核参数
[root@redis-02 ~]# more /etc/sysctl.conf
#add
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
fs.file-max = 65535000
fs.nr_open = 65535000
[root@redis-02 ~]# more /etc/security/limits.conf
root soft nofile 6553500
root hard nofile 6553500
[root@redis-02 ~]# more /etc/security/limits.d/20-nproc.conf
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 4096000
root soft nproc unlimited
##生效
sysctl -p
1. 关闭SELinux
# 关闭selinux
sudo vi /etc/selinux/config
修改
SELINUX=disabled
服务器需要重启 reboot
1. 关闭防火墙
# 查看防火墙状态
firewall-cmd --state
#停止防火墙
systemctl stop firewalld.service
# 开机禁用防火墙
systemctl disable firewalld.service
1. 编辑yum源
[root@redis-01 ~]# cd /etc/yum.repos.d/
[root@redis-01 yum.repos.d]# more epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=https://repo.huaweicloud.com/epel/7/$basearch
#metalink=https://mirrors.fedoraproject.org/#metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=https://repo.huaweicloud.com/epel/7/$basearch/debug
#metalink=https://mirrors.fedoraproject.org/#metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=https://repo.huaweicloud.com/epel/7/SRPMS
#metalink=https://mirrors.fedoraproject.org/#metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
4.2 软件下载
wget http://download.redis.io/releases/redis-5.0.9.tar.gz
4.3 安装redis
yum -y install redis
tar -zxf redis-5.0.9.tar.gz
cd redis-5.0.9
make
cp redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server /usr/bin/
#cp src/redis-* /usr/bin/
4.4 编辑redis.conf
#所有节点一直
vim /etc/redis.conf
bind 0.0.0.0
protected-mode no
databases 32
save ""
stop-writes-on-bgsave-error no
requirepass gdCMo6gv7tXOrzvX
masterauth gdCMo6gv7tXOrzvX
cluster-enabled yes
cluster-config-file nodes-6379.conf
maxmemory "8g"
cluster-migration-barrier 1
cluster-node-timeout 8
cluster-slave-validity-factor 0
cluster-require-full-coverage no
maxclients 1024000
4.5 服务启动
systemctl enable redis
systemctl start redis
五、Redis集群配置
5.1 Cluster创建
#选项–replicas 0 表示先为集群创建不含slaver 的集群 1表示1主1从集群
redis-cli --cluster create 192.168.1.10:6379 192.168.1.11:6379 192.168.1.12:6379 192.168.1.13:6379 192.168.1.14:6379 192.168.1.15:6379 --cluster-replicas 1
5.2 主从关系
[root@redis-02 redis]# more nodes-6379.conf
c055fd4f362398ee630a18a0a2759f00ca253667 192.168.1.11:6379@16379 myself,slave 1021343f15f5e113dbeb128ac3a57b224209b4cb 0 1679286965000 2 connected
e8c92f0b567cd40f5a4bc4702c7962091a2eef18 192.168.1.13:6379@16379 slave 55c91becc8c7c95fd2afe8ae0e58b2f989e28bd5 0 1679286965908 4 connected
1021343f15f5e113dbeb128ac3a57b224209b4cb 192.168.1.15:6379@16379 master - 0 1679286965908 7 connected 5461-10922
55c91becc8c7c95fd2afe8ae0e58b2f989e28bd5 192.168.1.12:6379@16379 master - 0 1679286965908 3 connected 10923-16383
468c715cf4cb38945a021f9622d248c4a0fc59af 192.168.1.10:6379@16379 slave 071e99e97581d0903491ee3ee3bb13fc16b4d87e 0 1679286965908 8 connected
071e99e97581d0903491ee3ee3bb13fc16b4d87e 192.168.1.14:6379@16379 master - 0 1679286965908 8 connected 0-5460
vars currentEpoch 8 lastVoteEpoch 0




