暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Redis Sentinel高可用集群(Redis哨兵模式)

167


一、 Redis单个实例

当系统中只有一台Redis运行时,一旦该Redis挂了,会导致整个系统无法运行。



二、 备份模式

由于单台Redis出现单点故障,就会导致整个系统不可用,所以想到的办法自然就是备份(一般工业界认为比较安全的备份数应该是3份)。当一台Redis出现问题了,另一台Redis可以继续提供服务。当1出现故障时,可以将Redis切换到2上面,保证数据的可用性,但是切到备份的Redis服务器时,只能读取数据,不能写入数据。



三、自动故障转移(哨兵模式)

虽然上面Redis做了备份,可以保证服务的不中断。但由于Redis目前只支持主从复制备份(不支持主主复制),当主Redis挂了,从Redis只能提供读服务,无法提供写服务。所以,当主Redis挂了,让从Redis升级成为主Redis。

这就需要自动故障转移,Redis sentinel带有这个功能,当一个主Redis不能提供服务时,Redis sentinel可以将一个从Redis升级为主Redis,并对其他从Redis进行配置,让它们使用新的主Redis进行复制备份。



四、哨兵模式环境搭建

4.1 环境搭建

这里使用三台服务器CentOS 7,内存16G,四核八线程,内核3.10。每台服务器上开启一个Redis-server和Redis-sentinel服务,Redis-server端口为8000,Redis-sentinel的端口为6800。 

Redis-server说明

    10.2.1.140:8000 主

    10.2.1.145:8000 从

    10.2.1.150:8000 从

Redis-sentinel说明

    10.2.1.140:6800

    10.2.1.145:6800

    10.2.1.150:6800


4.2 搭建Redis系统

首先下载安装Redis

wget http://download.Redis.io/releases/Redis-4.0.2.tar.gz

tar zxvf Redis-4.0.2.tar.gz

cd Redis-4.0.2

make & make install

cd src

#复制Redis相关命令到/usr/sbin目录下,这样就可以直接执行这些命令,不用写全路径

sudo cp redis-cli  redis-server  redis-sentinel   /usr/sbin/


4.3 配置主从Redis的配置文件

Redis目录下有redis.conf和sentinel.conf配置文件示例,使用命令

sudo cp  redis.conf  sentinel.conf  /etc/

将两个配置文件复制到/etc目录下,然后修改配置文件。

vim /etc/redis.conf

修改主redis-server配置文件内容如下:

port  8000

daemonize  yes

bind  0.0.0.0 #监听在所有地址上

pidfile   /var/run/redis-8000.pid

logfile   /var/log/redis/redis-8000.log

protected-mode no # redis版本3.2后新增protected-mode配置,默认是yes,即开启保护模式。

修改从redis-server配置文件内容如下:

port  8000

daemonize  yes

bind  0.0.0.0 #监听在所有地址上

pidfile   /var/run/redis-8000.pid

logfile   /var/log/redis/redis-8000.log

protected-mode no # redis版本3.2后新增protected-mode配置,默认是yes,即开启保护模式。

 

slaveof  10.2.1.140  8000    #从redis比主redis多这一行,表示的是主Redis的ip地址以及端口,其他的都是从redis。

启动redis-server服务

sudo redis-server /etc/redis.conf


4.4 配置sentinel的配置文件

从命令行输入:

vim /etc/sentinel.conf

配置的内容如下:

daemonize yes

port  6800(默认是26379,可更改)

logfile  /var/log/redis/sentinel.log

pidfile  /var/run/sentinel.pid

sentinel monitor mymaster 10.2.1.140 8000 2    (格式是:sentinel monitor <master-name> <ip> <redis-port> <quorum>master-name可以自定义ip是你的主redis的ip地址。quorum是一个数字,指明当有多少个sentinel认为一个master失效时,master才算真正失效。)

#5秒内mymaster没有响应,就认为SDOWN

sentinel down-after-milliseconds mymaster 5000  

sentinel failover-timeout  mymaster 15000

启动redis-sentinel。

redis-sentinel  /etc/sentinel.conf

三个redis-sentinel服务启动完毕后,连接任意sentinel服务可以获知当前主redis服务信息

至此,Redis的哨兵模式高可用系统搭建完成。





结识更多朋友

 

 

 


为了方便大家相互交流学习,创建了一个微信群:《大数据和云计算技术交流群》,人数已经1500+,欢迎大家加下面微信。

文章转载自数据库和 AI 技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论