首页 > 数据库 >Redis 2.8主从集群及故障自动切换(转载)

Redis 2.8主从集群及故障自动切换(转载)

时间:2023-08-07 12:36:08浏览次数:40  
标签:0.1 Redis redis 2.8 master conf sentinel 主从

Redis 2.8主从集群及故障自动切换

Redis官网:https://redis.io/

一、架构

操作系统:Debian 7

Master:127.0.0.1,端口:6379

Slave1::127.0.0.1,端口:6378

Slave2::127.0.0.1,端口:6377

Sentinel1:127.0.0.1,端口:26379

Sentinel2:127.0.0.1,端口:26378

Sentinel3:127.0.0.1,端口:26377

二、主从配置

1、下载redis压缩包,并解压,我这里下载的是2.8.24版本:

1

tar -zxvf redis-2.8.24.tar.gz

2、进入解压目录,修改配置文件redis.conf

1

2

cd redis-2.8.24

vi redis.conf

3、其他保持默认,为客户端连接增加密码为fish

1

2

masterauth fish

requirepass fish

至此,master节点配置完毕。下面开始配置slave节点。

4、拷贝一份redis-2.8.24目录的副本,命名为redis-2.8.24-slave1

1

cp  redis-2.8.24  redis-2.8.24-slave1

5、进入上面目录,修改配置文件redis.conf

1

2

cd redis-2.8.24-slave1

vi redis.conf

6、分别进行以下修改:

1

2

3

4

5

6

7

8

9

10

11

#端口

port  6378

#设置连接主节点的密码:

masterauth fish

#修改路径

dir "/home/fish/redis/redis-2.8.24-slave1/src"

#配置为slave

slaveof 127.0.0.1 6379

7、同样的步骤再复制一份redis-2.8.24-slave2目录,并修改配置文件:

1

2

3

4

port  6377

masterauth fish

dir "/home/fish/redis/redis-2.8.24-slave2/src"

slaveof 127.0.0.1 6379

至此,两个slave也配置完毕。

8、测试集群配置

1)启动master节点:

1

2

cd  redis-2.8.24

src/redis-server  redis.conf

应该可以看到如下界面:

2)启动slave1节点

新开一个终端并执行:

1

2

cd  redis-2.8.24-slave1

src/redis-server  redis.conf

可以看到如下界面:

表示已经开始和master节点通信。

3)新开一个终端,同样方式启动slave2。

4)客户端连接master节点,查看信息

1

2

3

4

cd  redis-2.8.24

src/redis-cli

127.0.0.1:6379> auth fish

127.0.0.1:6379> info replication

可以看到当前连接的是master节点,并且有两个slave节点:

存储一个string到redis:

1

127.0.0.1:6379> set name zhangsan

可以观察到两个slave节点也将信息同步到自己这边:

5)客户端连接slave节点,查看信息

退出客户端连接:

1

127.0.0.1:6379> quit

再重新连接一个slave节点:

1

2

3

src/redis-cli -p 6378

127.0.0.1:6378> auth fish

127.0.0.1:6378> info replication

可以看到当前连接信息和master的信息:

从slave节点上获取存入master节点的值:

1

2

127.0.0.1:6378> get name

"zhangsan"

至此,主从集群配置完毕。但是如果master节点发生故障,尚不能自动切换到slave节点。下面使用redis sentinel来配置监控集群,便于自动切换。

三、Sentinel集群配置

1、Redis Sentinel

Sentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中
Sentinel作用:
1):Master状态检测

2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave

3):Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换。

2、进入redis目录,修改sentinel配置文件

1

2

cd  redis-2.8.24

cp  sentinel.conf  sentinel_bak.conf

清空原文件内容

1

>sentinel_bak.conf

存入内容:

1

2

3

4

5

6

7

port 26379

#master

sentinel monitor master 127.0.0.1 6379 3

sentinel down-after-milliseconds master 5000

sentinel auth-pass master fish

sentinel config-epoch master 8

sentinel leader-epoch master 9

其中标红的3:代表有3个sentinel实例

3、复制两份sentinel.conf,分别命名为sentinel23678.confsentinel23677.conf

1

2

cp  sentinel.conf  sentinel23678.conf

cp  sentinel.conf  sentinel23677.conf

并分别修改端口为2367823677

4、运行redis-sentinel

开三个终端,分别执行

1

2

3

src/redis-sentinel  sentinel.conf  --sentinel

src/redis-sentinel sentinel26378.conf --sentinel

src/redis-sentinel sentinel26377.conf --sentinel

可以看到启动信息:

5、通过sentinel查看主从信息:

1

2

3

cd  redis-2.8.24

src/redis-cli  -p  26379

127.0.0.1:26379> info

四、测试故障切换配置

1、停掉master节点

在master节点的运行终端中,按下Ctrl+C。

2、观察sentinel的输出信息,会看到已经检测到变化,slave1节点(6378端口)自动切换为master:

3、观察slave1节点的输出信息,说明它已经切换到master状态:

 

至此,Redis的主从集群、故障自动切换机制已经完成

 

标签:0.1,Redis,redis,2.8,master,conf,sentinel,主从
From: https://blog.51cto.com/u_13360482/6992458

相关文章

  • 两台服务器redis 3.0.5分布式集群安装部署
    两台服务器redis3.0.5分布式集群安装部署目前redis支持的cluster特性:1):节点自动发现2):slave->master选举,集群容错3):Hotresharding:在线分片4):集群管理:clusterxxx5):基于配置(nodes-port.conf)的集群管理6):ASK转向/MOVED转向机制.一、redis集群安装两台电脑:   192.......
  • MongoDB 3 主从复制配置
    #下载wgethttp://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.0.4.tgz#解压tarzxvfmongodb-linux-x86_64-rhel62-3.0.4.tgzmv/root/mongodb-linux-x86_64-rhel62-3.0.4/usr/local/mongodb#创建目录和日志文件mkdir/usr/local/mongodb/datatouch/usr/loc......
  • Mongodb主从复制分片群集
    推荐步骤:1.在centos05-centos07上安装mongodb,配置主从复制和分片群集,centos05到centos07添加分片sh1分片群集2.在centos08-centos10上安装mongodb,配置主从复制和分片群集,centos08到centos10添加到分片sh2分片群集3.在centos01到centos03安装mongodb配置为配置节点4.配置分片功能实......
  • redis
    dockerrun--namewltjzbjg_redis-p7001:6379-v/root/docker/redis/data:/data-v/root/docker/redis/conf/redis.conf:/etc/redis/redis.conf-dredisredis-server/etc/redis/redis.confdockerrun--namelmqredis-p6379:6379-v/root/docker/redis/data:/dat......
  • Redis概念
    1.数据淘汰策略-noeviction:返回错误当内存限制达到并且客户端尝试执行会让更多内存被使用的命令(大部分的写入指令,但DEL和几个例外)allkeys-lru:尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。volatile-lru:尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得......
  • Redis Pipeline管道技术
    1.什么是pipelinePipeline是Redis提供的一种批量请求机制,可以在client端对多条命令进行打包,然后一次性发送给服务器,避免了多次网络往返的开销。2.pipeline的优势为了解释pipeline的作用,我们先思考一个问题:如果客户端需要依次执行多条Redis命令,该如何处理?客户端一次执行一条......
  • Spring boot集成Redis
    在开发中,放到缓存中的数据我们都要给过期时间,使其可以在系统即使没有主动更新数据也能自动触发数据加载的流程,避免业务奔溃导致的数据永久不一致的问题1、引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-......
  • 零基础尝试mysql主从复制
    本文参考了这篇文章  https://blog.csdn.net/tenc1239/article/details/130451736 感谢大佬的分享前提:自己准备好两个数据库环境,我用的是本机的vm虚拟机linux中的mysql(版本8.0.33)和本机windows中的mysql(8.1.0)一、配置主库  1、配置my.cnf 文件#服务id用来保证......
  • 主从复制
    主从复制一,配置主DNS前提条件两边防火墙都要关闭[root@localhost~]#systemctlstopfirewalld.service​root@localhost~]#setenforce0​ 1.1进入主配置文件2,进入域名配置之文件进入复制文件夹修改配置配置网卡查看是否配置成功二,配置从DNS2.1修改主配......
  • redis 如何解决缓存雪崩、击穿、穿透难题
    引言redis作为一门热门的缓存技术,引入了缓存层,就会有缓存异常的三个问题,分别是缓存击穿、缓存穿透、缓存雪崩。我们用本篇文章来讲解下如何解决!缓存击穿缓存击穿:指的是缓存中的某个热点数据过期了,但是此时大量的并发请求访问这个key的值,此时因为缓存过期无法从缓存中获取,直......