Redis主从配置 以及哨兵
1. 概述
今天我们要分享下关于
主从Redis配置 以及哨兵
,但是学习此文章之前,可以先看下上一篇文章【【保姆级&安装大全之】单机版Redis】。
我们在生产环境使用Redis部署高可用的时候,无非有几种情况。
- 第一种是:主从配置
- 第二种是:集群
- 第三种是:主从 + 集群
那么接下来让我们从主从配置
开始一步一步进行学习。
2. 主从配置
2.1 关闭Redis
也许服务器上启动了redis,如果再配置相同的端口,会出现一些意想不到的情况,所以我们先将redis关闭掉。
通过上述截图中我们会发现仍然有redis 占用6379
端口。所以我们需要关闭掉,下面列举出两种方式供君任意选择
方案 1
直接通过kill
命令杀死进程。
kill -9 19191
通过cli 关闭redis
[root@VM-8-3-centos bin]# pwd
/opt/redis/bin
[root@VM-8-3-centos bin]# ./redis-cli shutdown
[root@VM-8-3-centos bin]# ps aux | grep redis
root 20135 0.0 0.0 112812 980 pts/0 S+ 15:40 0:00 grep --color=auto redis
[root@VM-8-3-centos bin]#
2.2 创建主从文件
创建文件
cd /opt
mkdir -p redis-replica/master
mkdir -p redis-replica/slave1
mkdir -p redis-replica/slave2
复制redis 配置文件
这里我们直接使用shell 来移动文件
- 创建并编辑 sh文件
vi mv-redis.sh
- 直接将下面的内容复制到sh中
#!/bin/bash
cp -r /opt/redis/bin/* /opt/redis-replica/master
cp -r /opt/redis/bin/* /opt/redis-replica/slave1
cp -r /opt/redis/bin/* /opt/redis-replica/slave2
- 通过命令执行shell
/bin/bash mv-redis.sh
2.3 修改主从配置文件
为了不影响我们之前的单机版
Redis
,我们修改主从的配置
修改master 节点配置
修改前
# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379
修改后
# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6380
修改slave1 节点配置
修改前
# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379
修改后
# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6381
指定 master节点:
修改前
# 3) Replication is automatic and does not need user intervention. After a
# network partition replicas automatically try to reconnect to masters
# and resynchronize with them.
#
# replicaof <masterip> <masterport>
修改后
# 3) Replication is automatic and does not need user intervention. After a
# network partition replicas automatically try to reconnect to masters
# and resynchronize with them.
#
replicaof 127.0.0.1 6380
如果是不同的服务器。此处的127.0.0.1
可以修改为 指定的IP。 但是如果服务器上有密码就需要指定字段masterauth
修改slave2 配置文件
跟slave1 修改方式保持一致。只不过端口为6382
2.4 启动服务
这次我们还是通过shell 进行启动以及关闭
#!/bin/bash
cd /opt/redis-replica/master
./redis-server ./redis.conf
cd /opt/redis-replica/slave1
./redis-server ./redis.conf
cd /opt/redis-replica/slave2
./redis-server ./redis.conf
执行shell
cd /opt/redis-replica
/bin/bash setup.sh
2.5 查看 启动状态
2.6 查看主从信息
主节点设置值
从节点可以读取
3. 哨兵
如果执行到这,表示主从配置执行了一半了。此时我们的配置是:主(写),从(读)。当我们的master节点宕机了呢,是不是我们就没法写了。 那怎么解决这个问题。说到这里我们的哨兵到了。
3.1 概述
在redis主从默认是只有主具备写的能力,而从只能读。如果主宕机,整个节点不具备写能力。但是如果这是让一个从变成主,整个节点就可以继续工作。即使之前的主恢复过来也当做这个节点的从即可。
Redis的哨兵就是帮助监控整个节点的,当节点主宕机等情况下,帮助重新选取主。
Redis中哨兵支持单哨兵和多哨兵。单哨兵是只要这个哨兵发现master宕机了,就直接选取另一个master。而多哨兵是根据我们设定,达到一定数量哨兵认为master宕机后才会进行重新选取主。我们以多哨兵演示
3.2 哨兵配置
创建目录
mkdir -p /opt/redis-replica/sentinel
cp /opt/redis-replica/master/redis-sentinel /opt/redis-replica/sentinel
从之前的解压目录 复制配置文件
cp /tmp/soft/redis-5.0.14/sentinel.conf /opt/redis-replica/sentinel/
3.3 修改配置文件
三个配置文件 修改内容类似,如下内容:
port 26379
daemonize yes
logfile "/opt/redis-replica/sentinel/26379.log"
sentinel monitor mymaster 127.0.0.1 6380 2
3.4 启动sentinel
3.5 杀死master节点,主动自动切换
等杀死master节点后,等待一段时间后,通过哨兵,第一个从节点升级为master节点了。
4. 结论
上述的配置就是主从配置的过程,其实包括哨兵模式。下面我们会开始学习
redis 集群模式