redis分布式缓冲主从集群(一主二从一哨兵)搭建(不怎么讲原理)教程

本文详细介绍了如何在Linux上配置Redis主从模式,包括创建实例、配置文件、启动服务以及建立主从关系。随后扩展至哨兵模式,设置哨兵监控主节点并实现故障转移的过程。
摘要由CSDN通过智能技术生成

一、配置主从模式

用一台Linux配置3台redis实例  端口号分别为 6380、6381、6382

1创文件夹.

在/usr/redis下创建一个目录myredis,用来放我们的三个redis实例。(这里我的reids是提前解压到了/usr这个目录下面)

mkdir /usr/redis/myredis

2.创建配置文件

在该目录下创建3台主机的配置文件(直接用cp指令从redis安装目录中复制过来即可)文件名分别为reids6380.conf、reids6381.conf、reids6382.conf,分别以端口号命名。

cp /usr/redis/redis-5.0.5/redis.conf /usr/redis/myredis/reids6380.conf
cp /usr/redis/redis-5.0.5/redis.conf /usr/redis/myredis/reids6381.conf
cp /usr/redis/redis-5.0.5/redis.conf /usr/redis/myredis/reids6382.conf

这3个文件就代表我们的三个redis实例。用ll指令查看  /usr/redis/myredis  目录能发现已经存在三个实例如下图。

3.配置信息

修改实例中的配置信息改六处地方。

三个实例都需要修改,这里以6380为例作为修改。输入指令  vim/usr/redis/myredis/redis6380.conf进入编辑,找到下面六个地方,按  i  进行修改。

   :69    bind 192.168.48.142     bind后面跟虚拟机的ip,表示绑定这个ip

   :92    port 6380                      实例端口号

   :136  daemonize yes             daemonize守护进程(daemon)的方式运行,yes后台no前台

   :158  pidfile /var/run/redis_6380.pid         pidfile指定 Redis 服务器进程的 PID 文件的路径 ,这里只要改里面的端口号就行啦

   :253  dbfilename   dump6380.rdb        持久化数据库的文件,同样加上端口号就行

   :699  appendonly  yes       持久化 Redis, 将开始记录所有对数据的写操作到一个名为 appendonly.aof 的文件中,改成yes就行。

绿色的数字代表行号,不同版本的reids对应的行号可能不一致,这里建议直接”/“搜关键词来找。

配置完成后:wq 退出。其余两台使用同样的配置方式进行配置。

4.启动三台redis实例并连接

用后台启动方式分别启动三台实例

/usr/redis/bin/redis-server /usr/redis/myredis/redis6380.conf
/usr/redis/bin/redis-server /usr/redis/myredis/redis6381.conf
/usr/redis/bin/redis-server /usr/redis/myredis/redis6382.conf

这里是将后面每个实例的配置文件当成参数传进redis-server文件中进行启动

连接实例的时候建议分成三个窗口来连接,便于观察。这里我用的finalshell,直接复制窗口,其他的shell也可以进行类似的操作。

分别在三个窗口输入如下连接命令,连接三个实例,并且ping一下,如果出现pong代表成功连通。

-h 选项表示ip地址,-p 代表要连接的实例的端口号。

/usr/redis/bin/redis-cli -h 192.168.73.132 -p 6380
/usr/redis/bin/redis-cli -h 192.168.73.132 -p 6381
/usr/redis/bin/redis-cli -h 192.168.73.132 -p 6382

下图展示了6380连接成功图,其余两个实例也一样。

5.查看三台服务器的运行情况,

查看信息指令主要用以下三条:

 info    显示当前redis实例运行情况

 info   replication   显示主从角色信息

 info   keyspace   显示key分布情况

因为我们是建立主从关系,所以主要看主从角色信息,三台服务器分别输入  info   replication

 

注意看上图,role代表角色,connected_slaves表示连接了几个从服务器;可以看见三台服务器都是master,都没有连接从服务器。

接下来建立主从关系,我们想要的是6380为主,6381,6382是他的从服务器,所以需要在两个从服务器中执行 slaveof  <ip>  <port>  这条指令,表示当哪个服务器的从属。返回ok代表成功。

192.168.73.132:6381> SLAVEOF 192.168.73.132 6380 
192.168.73.132:6382> SLAVEOF 192.168.73.132 6380 

在两台从服务器上执行 info   replication   可以发现role都变成了slave,并且指出了他的主服务器。

6,测试主从关系

此时,我们就实行了主从关系的配置。测试发现,主机有读写功能,从机只有读功能,没有写功能。

192.168.73.132:6380> set a 1
192.168.73.132:6380> get a


192.168.73.132:6381> set b 2
192.168.73.132:6381> get a

注意点

当主机服务器关闭了后再重启是没有什么问题的,但是从机服务器重启后设置的主从关系会掉,需要重新在重启后的从服务器上使用  slaveof 192.168.73.132  3680 来重新建立主从关系。

二配置哨兵实例

建立实例并配置:

在自定义的/myredis目录下新建sentinel.conf文件,建议从redis源目录文件下复制过来,同时建议再新开一个窗口方便我们待会观察主机宕机后,哨兵服务器进中日志的内容。

 cp /usr/redis/redis-6.2.4/sentinel.conf  /usr/redis/myredis/

修改哨兵配置:修改以下配置,如果被注释了就把注释符删掉

port 26379

        设置 Sentinel 节点的监听端口号为 26379

sentinel announce-ip 192.168.173.132

        指定 Sentinel的 IP 地址。在某些情况下,Sentinel 节点可能无法正确检测到其自己的公共 IP 地址。这个选项允许我们手动指定 Sentinel 节点应该使用的 IP 地址。

sentinel monitor mymaster 192.168.73.132 6380  1

        指定了 Sentinel 要监控的 Redis 主节点的信息。mymaster 是这个主节点的名字,根据需要自定义。后面是主节点的 IP 地址和端口号。Sentinel 将定期检查这个主节点是否可达,并在检测到故障时执行故障转移.  后面的1表示有几个Sentinel判断主机宕机,就算客观上的宕机,这里我们只有一个监视者,所以就写1.  如果有三个可以写2.

sentinel down-after-milliseconds mymaster 10000

        指定了 Sentinel在将主节点标记为不可达之前,应该等待的时间长度(以毫秒为单位)。如果 Sentinel 节点在 10000 毫秒(即 10 秒)内没有收到主节点的有效响应,它将认为主节点已宕机。

sentinel failover-timeout mymaster 60000             (在这整个配置中可以不用配置他)

        指定了 Sentinel 执行故障转移时的超时时间(以毫秒为单位)。如果在这个时间内没有成功完成故障转移,Sentinel 节点将停止尝试,并可能需要手动干预。在这个例子中,超时时间设置为 60000 毫秒(即 60 秒)

dir /tmp

        指定了 Sentinel 的工作目录,即 Sentinel 用来存储持久化文件(如配置文件的备份)的目录。

这样,我们的监控着就配置完成了。

启动哨兵:

这里没有设置后台启动,直接前台启动,方便我们待会观察主机宕机后的变化

/usr/redis/bin/redis-sentinel /usr/redis/myredis/sentinel.conf 

如所示,现在可以监听到主服务器,和他的两个从服务器

接着我们切换到主服务器的窗口,将主服务器宕机,切换回哨兵窗口观察日志。

在主服务器宕机后,哨兵检测到主节点故障并进行故障转义。

+sdown:主节点主管下线

+odown:主节点客观下线

quorum:达到法定人数的Sentinel 节点都认为该主节点不可达

+try-failover:尝试进行故障转移

+selected-slave :选择了新的节点即(6382)为主节点

上图可看出哨兵选出了6382为主服务器,并且把6380、6381变成了6382的从服务器

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值