Redis 主从复制以及哨兵模式搭建文档

一、主从复制

主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自动化:写操作无法负载均衡;存储能力受到单机的限制。

主机 IP地址 软件包
Master节点 192.168.199.40 redis-5.0.7.tar.gz
Slave1节点 192.168.199.50 redis-5.0.7.tar.gz
Slave2节点 192.168.199.60 redis-5.0.7.tar.gz
systemctl stop firewalld
setenforce 0

安装 Redis

[NoSQL之 Redis配置与优化]

修改Redis 配置文件(Master节点)

vim /etc/redis/6379.conf
bind 0.0.0.0                        #70,修改监听地址为0.0.0.0
daemonize yes                       #137行,开启守护进程
logfile /var/ log/redis_6379.log    #172行,指定日志文件目录
dir /var/lib/redis/6379             #264行,指定工作目录
appendonly yes                      #700行,修改为yes开启AOF持久化功能

/etc/init.d/redis_6379 restart

修改Redis 配置文件(Slave节点)

vim /etc/redis/6379.conf
bind 0.0.0.0                       #70行,修改监听地址为0.0.0.0
daemonize yes                      #137行,开启守护进程
logfile /var/log/redis_6379.log    #172行,指定日志文件目录
dir /var/lib/redis/6379            #264行,指定工作目录
replicaof 192.168.199.40 6379      #288行,指定要同步的Master节点IP和端口
appendonly yes                     #700行,开启AOF持久化功能

/etc/init.d/redis_6379 restart

验证主从效果

在Master节点上看日志

tail -f /var/log/redis_6379.log 

在这里插入图片描述

在Master节点上验证从节点

redis-cli info replication

在这里插入图片描述

二、搭建Redis 哨兵模式

哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的Redis工作节点是否正常,当Master出现问题的时候,因为其他节点与主节点失去联系,因此会投票,投票过半就认为这个Master的确出现问题,然后会通知哨兵间,然后从Slaves中选取一个作为新的Master。

systemctl stop firewalld
setenforce 0

修改 Redis 哨兵模式的配置文件(所有节点)

vim /opt/redis-5.0.7/sentinel.conf
protected-mode no                                    #17行,关闭保护模式
port 26379                                           #21行,Redis哨兵默认的监听端口
daemonize yes                                        #26行,指定sentinel为后台启动
logfile "/var/1og/sentinel.log"                      #36行,指定日志存放路径
dir "/var/lib/redis/6379"                            #65行,指定数据库存放路径
sentinel monitor mymaster 192. 168.199.40 6379 2     #84行,修改,指定该哨兵节点监控192.168.199.40:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2
个哨兵节点同意,才能判定主节点故障并进行故障转移
sentinel down-after-milliseconds mymaster 3000       #113行,判定服务器down掉的时间周期,默认30000毫秒(30 )
sentinel failover-timeout mymaster 180000            #146行,故障节点的最大超时时间为180000 (180)

启动哨兵模式

先启master,再启slave

cd /opt/redis-5.0.7/ 
redis-sentinel sentinel.conf &

在这里插入图片描述

查看哨兵信息

redis-cli -p 26379 info sentinel

在这里插入图片描述

故障模拟

查看redis-server进程号

ps -ef | grep redis

在这里插入图片描述

杀死Master节点上redis-server的进程号

kill -9 8503     #Master节点上redis-server的进程号

在这里插入图片描述

redis-cli -p 26379 info sentinel

在这里插入图片描述

在这里插入图片描述

三、搭建 Redis 群集

一般来说,redis的集群需要6个节点,3主3从。
为方便起见,这里所有节点在同一台服务器上模拟:
以端口号进行区分:
3个主节点端口号:6000/6001/6002, 对应的从节点端口号:6004/6003/6005。

cd /etc/redis/
mkdir -p redis-cluster/redis600{
    
    0..5}

for w in {
    
    0..5}
do
cp /opt/redis-5.0.7/redis.conf  /etc/redis/redis-cluster/redis600$w
cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis600$w
done

在这里插入图片描述

开启群集功能

其他5个文件夹的配置文件以此类推修改,注意6个端口都要不一样。
vim /etc/redis/redis-cluster/redis6000/redis.conf

#bind 127.0.0.1                       #69行,注释掉bind项,默认监听所有网卡
protected-mode no                     #88行,修改,关闭保护模式
port 6000                             #92行,修改,redis 监听端口,
daemonize yes                         #136行,开启守护进程,以独立进程启动
appendonly yes                        #700行,修改,开启AOF持久化
cluster -enabled yes                  #832行,取消注释,开启群集功能
cluster-config-file nodes-6379.conf   #840行,取消注释,群集名称文件设置
cluster-node-timeout 15000            #846行,取消注释群集超时时间设置

在这里插入图片描述

启动redis节点

分别进入那六个文件夹,执行命令: redis-server redis.conf,来启动redis节点
cd /etc/redis/redis-cluster/redis6000
redis-server redis.conf
(或使用for循环来启动)
for i in {
    
    0..5}
do
cd /etc/redis/redis-cluster/redis600$i
redis-server redis.conf
done

在这里插入图片描述
在这里插入图片描述

ps -ef | grep redis

启动集群

redis-cli --cluster create 127.0.0.1:6000 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 --cluster-replicas 1

#六个实例分为三组,每组一主一从,前面的做主节点,后面的做从节点。下面交互的时候需要输入yes才可以创建。
–replicas 1表示每个主节点有1个从节点。

在这里插入图片描述

redis-cli -p 6000 -c         #加-c参数,节点之间就可以互相跳转	
cluster slots			     #查看节点的哈希槽编号范围

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_51614581/article/details/114581884