Redis主从、哨兵和集群环境搭建

一、Redis单机安装

(1)安装依赖的C语言

shell 复制代码
yum install -y gcc-c++ automake autoconf libtool make tcl 

(2)上传安装包并解压

shell 复制代码
cd /usr/local/tmp

tar zxf redis-5.0.5.tar.gz

(3)编译并安装

shell 复制代码
cd /usr/local/tmp/redis-5.0.5/

# 编译
make

# 安装
make install PREFIX=/usr/local/redis

(4)开启守护进程

复制 /usr/local/tmp/redis-5.0.5/redis.conf 配置文件

shell 复制代码
cp redis.conf /usr/local/redis/bin/

修改配置文件

shell 复制代码
cd /usr/local/redis/bin/

vim redis.conf

把 daemonize 的值由 no 修改为 yes

(5)修改外部访问 在redis5中需要修改配置文件redis.conf允许外部访问。需要修改两处。

注释掉 bind 127.0.0.1

把 protected-mode 的值由 yes 改成 no

(6)启动并测试

shell 复制代码
# 启动 redis
./redis-server redis.conf

# 重启redis
./redis-cli shutdown
./redis-server redis.conf

二、Redis主从搭建

我们可以继续在单机Redis基础上安装,先关闭Redis单机版

shell 复制代码
./redis-cli shutdown

(1)新建目录

java 复制代码
mkdir /usr/local/replica

(2)复制目录 把之前安装的redis单机版中bin目录复制三份,分别叫做:master、slave1、slave2

shell 复制代码
cp -r /usr/local/redis/bin /usr/local/replica/master
cp -r /usr/local/redis/bin /usr/local/replica/slave1
cp -r /usr/local/redis/bin /usr/local/replica/slave2

(3)修改从节点配置文件 修改从节点的 redis.conf,指定主节点ip和端口;修改从节点自身端口号防止和其他redis冲突

  • 从节点slave1
shell 复制代码
vim /usr/local/replica/slave1/redis.conf

# 指定主节点ip和端口
replicaof 192.168.93.10 6379

# 修改自己的端口
port 6380
  • 从节点slave2
shell 复制代码
vim /usr/local/replica/slave2/redis.conf

# 指定主节点ip和端口
replicaof 192.168.93.10 6379

# 修改自己的端口
port 6381

(4)启动Redis实例

shell 复制代码
cd /usr/local/replica

vim startup.sh

在启动脚本中添加下面内容

shell 复制代码
cd /usr/local/replica/master/
./redis-server redis.conf
cd /usr/local/replica/slave1
./redis-server redis.conf
cd /usr/local/replica/slave2
./redis-server redis.conf

给脚本执行权限

shell 复制代码
chmod a+x startup.sh

执行脚本

shell 复制代码
./startup.sh 

(5)查看启动状态

shell 复制代码
ps aux | grep redis

(6)测试

bash 复制代码
cd /usr/local/replica/master/
./redis-cli 

三、Redis 哨兵搭建

Redis主从默认是只有主具备写的能力,而从只能读。如果主宕机,整个节点不具备写能力。如果此时让一个从变成主,整个节点就可以继续工作。当之前的主恢复过来以后,也可以当做这个节点的从即可。

Redis 的哨兵就是帮助监控整个节点的,当节点主宕机等情况下,帮助重新选取主。Redis 中哨兵支持单哨兵和多哨兵。单哨兵是只要这个哨兵发现 master 宕机了,就直接选取另一个 master。而多哨兵是根据我们的设定,达到一定数量哨兵认为 master 宕机后才会进行重新选取主。本篇笔记以多哨兵为例演示。

当我们杀掉主节点,整个节点无法写数据,从节点身份不会变化,主节点信息不变。

我们还是在 Redis 单机版的基础上进行搭建,搭建步骤如下:

(1)新建目录

shell 复制代码
mkdir /usr/local/sentinel

(2)复制 Redis

shell 复制代码
cp -r /usr/local/redis/bin/* /usr/local/sentinel

(3)复制配置文件 从 Redis 解压目录中复制 sentinel 配置文件

shell 复制代码
cd /usr/local/tmp/redis-5.0.5/
cp sentinel.conf /usr/local/sentinel/

(4)修改配置文件

shell 复制代码
cd /usr/local/sentinel
vim sentinel.conf

port 26379
daemonize yes
logfile "/usr/local/sentinel/26379.log"
sentinel monitor mymaster 192.168.93.10 6379 2

对这行配置进行解析一下, sentinel monitor mymaster 192.168.93.10 6379 2,它的 意思是 Sentinel 去监视一个名为 mymaster 的主服务器, 这个主服务器的 IP 地址为 127.0.0.1,端口号为 6379 ,而将这个主服务器判断为失效至少需要 2 个 Sentinel 同意,只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行。

复制 sentinel.conf,命名为 sentinel-26380.conf

shell 复制代码
cp sentinel.conf sentinel-26380.conf
vim sentinel-26380.conf

port 26380
daemonize yes
logfile "/usr/local/sentinel/26380.log"
sentinel monitor mymaster 192.168.93.10 6379 2

复制 sentinel.conf,命名为 sentinel-26381.conf

shell 复制代码
cp sentinel.conf sentinel-26381.conf
vim sentinel-26381.conf

port 26381
daemonize yes
logfile "/usr/local/sentinel/26381.log"
sentinel monitor mymaster 192.168.93.10 6379 2

(5)启动主从 如果已经启动状态,忽略下面命令。如果启动部分,全部kill后重新启动,使用kill杀死全部 Redis 实例。

shell 复制代码
ps aux|grep redis
kill -9 进程号

启动主从

shell 复制代码
cd /usr/local/replica
./startup.sh

(6)启动三个哨兵

shell 复制代码
cd /usr/local/sentinel

./redis-sentinel sentinel.conf
./redis-sentinel sentinel-26380.conf
./redis-sentinel sentinel-26381.conf

四、集群环境搭建

当集群中等于或者超过一半的节点不可用时,整个集群不可用。为了搭建稳定集群,集群节点数最好都采用奇数节点。

(1)复制 Redis 配置文件

从 /usr/local/redis/bin 下把 redis.conf 复制到当前目录中,命名为 redis-7001.conf

shell 复制代码
cp /usr/local/redis/bin/redis.conf /usr/local/redis/bin/redis-7001.conf

(2)修改 redis-7001.conf

shell 复制代码
cd /usr/local/redis/bin
vim redis-7001.conf

需要修改如下

shell 复制代码
port 7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 15000
# appendonly yes 如果开启aof默认,需要修改为yes。如果使用rdb,此处不需要修改
daemonize yes
protected-mode no
pidfile /var/run/redis_7001.pid

(3)复制配置文件,并修改内容

把 redis-7001.conf 复制5份,分别叫做 redis-7002.conf、redis-7003.conf、redis-7004.conf、redis-7005.conf、redis-7006.conf

shell 复制代码
cp redis-7001.conf redis-7002.conf
cp redis-7001.conf redis-7003.conf
cp redis-7001.conf redis-7004.conf
cp redis-7001.conf redis-7005.conf
cp redis-7001.conf redis-7006.conf

新复制的5个配置文件都需要需改三处,例如 nodes-7002.conf 中需要把所有 7001都换成7002。其他配置文件同理修改即可

shell 复制代码
port 7002
cluster-config-file nodes-7002.conf
pidfile /var/run/redis_7002.pid

(4) 启动6个 Redis

可以使用 redis-server 结合6个配置文件进行启动6个实例,执行之前一定要先删除dump.rdb

shell 复制代码
rm -f dump.rdb
vim startup.sh

./redis-server redis-7001.conf
./redis-server redis-7002.conf
./redis-server redis-7003.conf
./redis-server redis-7004.conf
./redis-server redis-7005.conf
./redis-server redis-7006.conf


chmod a+x startup.sh
./startup.sh

(5)查看启动状态

(6)建立集群

在 Redis3 的时候需要借助 ruby 脚本实现集群;在 Redis5 中可以使用自带的redis-cli实现集群功能,比Redis3 更加方便。建议配置静态ip,ip改变集群失效

shell 复制代码
./redis-cli --cluster create 192.168.93.10:7001 192.168.93.10:7002 192.168.93.10:7003 192.168.93.10:7004 192.168.93.10:7005 192.168.93.10:7006 --cluster-replicas 1

(7) 测试

集群测试时,千万不要忘记最后一个-c参数。

shell 复制代码
./redis-cli -p 7001 -c

set age 18

(8)编写关闭脚本

shell 复制代码
vim stop.sh
chmod a+x stop.sh

./redis-cli -p 7001 shutdown
./redis-cli -p 7002 shutdown
./redis-cli -p 7003 shutdown
./redis-cli -p 7004 shutdown
./redis-cli -p 7005 shutdown
./redis-cli -p 7006 shutdown
相关推荐
NCIN EXPE1 天前
redis 使用
数据库·redis·缓存
lUie INGA1 天前
在2023idea中如何创建SpringBoot
java·spring boot·后端
hERS EOUS1 天前
nginx 代理 redis
运维·redis·nginx
geBR OTTE1 天前
SpringBoot中整合ONLYOFFICE在线编辑
java·spring boot·后端
NineData1 天前
NineData 新增支持 GaussDB 到 StarRocks 实时数据复制能力
后端
sghuter1 天前
数字资源分发架构解密
后端·架构·dubbo
小码哥_常1 天前
Spring Boot启动慢?这5个优化点带你起飞
后端
NineData1 天前
NineData将亮相DACon 2026上海站!解锁AGI时代数据“智理”新范式
数据库·后端·架构
NoSi EFUL1 天前
redis存取list集合
windows·redis·list