Redis集群搭建-哨兵(sentinel)模式

「爱情、让人受尽委屈。」 2022-11-13 00:51 331阅读 0赞

(1)三个sentinel服务

(2)一主三从,即四个Redis服务


建议先查看《Redis集群搭建-主从模式》

一、哨兵模式搭建步骤

(1)拷贝三个redis服务作为sentinel服务

2021032419380046.png

(2)分别修改sentinel01、sentinel02、sentinel03中的sentinel.conf配置

①修改sentinel.conf

不同于普通的redis服务使用的redis.conf配置,sentinel服务使用的是sentinel.conf配置。

20210324193827494.png

②修改端口号配置

因为同样将sentinel的三个服务放在了同一个服务器上,所以服务的端口号不能相同。(sentinel01的端口号:26371;sentinel02的端口号:26372;sentinel03的端口号:26373)

2021032419391476.png

③配置redis服务的主服务地址与端口号

sentinel01、sentinel02、sentinel03此项配置相同。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDUxODI3MQ_size_16_color_FFFFFF_t_70

格式:sentinel monitor 主服务名称 主服务IP地址 主服务端口号 投票数

mater:6371 主服务名称,自定义。不能使用特殊字符或空格

127.0.0.1 主服务的IP。配置主服务器所在的IP地址。

6371 主服务的端口号。

2 投票数,当至少2台sentinel服务判定redis主服务已经不可用了,则开始从从服务器中选举一个服务作为主服务,维护主从集群的可用性。 配置的数目一般为sentinel服务的个数整除以2+1。(因为我使用3台sentinel服务,则3/2+1=2)

④更改其他配置的主服务名称

因为在③处修改了默认配置的主服务名称,所以配置中其他处的主服务名称要与此保持一致。(为了避免修改的麻烦,可以使用默认的主服务名称mymaster)

20210324194020644.png

2021032419403697.png

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDUxODI3MQ_size_16_color_FFFFFF_t_70 1

(3)启动redis的四台服务,以及三台sentinel服务。

启动sentinel服务:

启动sentinel除了使用redis-server外,还可以使用redis-sentinel:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDUxODI3MQ_size_16_color_FFFFFF_t_70 2

运行./redis-sentinel:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDUxODI3MQ_size_16_color_FFFFFF_t_70 3

查看当前服务运行的redis服务:

20210324194150256.png

二、sentinel故障转移

(1)停止redis主服务(端口号为6371的服务)

20210324194217162.png

(2)使用客户端连接redis02(端口号为6372的服务)

使用INFO命令查看服务信息,可见redis02服务已经变成了主服务,从服务为redis03与redis04。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDUxODI3MQ_size_16_color_FFFFFF_t_70 4

(3)重启redis01服务

redis01会作为此时的主服务redis04的从服务。(主服务又变成了redis04服务,可能在操作期间sentinel认为redis02服务已经下线,又重新进行了主服务选举)

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDUxODI3MQ_size_16_color_FFFFFF_t_70 5

(4)使用客户端连接redis01,查看INFO信息

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDUxODI3MQ_size_16_color_FFFFFF_t_70 6

三、sentinel.conf配置

  • port

配置sentinel服务的端口号。默认值:26379。

20210324194418121.png

  • daemonize

服务是否后台启动,yes:后台启动,no:非后台启动。默认值:no。

20210324194441902.png

  • pidfile

pid的文件,文件中配置服务的唯一id。默认值:/var/run/redis-sentinel.pid。当daemonize配置成true后台启动时,redis服务会将pid写进配置的文件中。

20210324194506304.png

  • logfile

配置日志文件。当后台模式启动时,redis服务会将日志写到此路径的文件中。非后台启动,会将日志输出到标准输出(屏幕或控制台)。空字符串表示日志输出到标准输出。默认值:””

2021032419452814.png

  • dir

工作目录。

20210324194548310.png

  • sentinel monitor

配置sentinel监听的redis server的主服务。

:为主服务设置的别名

:主服务的连接IP

:主服务的连接端口

:主服务客观下线的投票数。对于监听同一个主服务的多个sentinel,当至少有此配置设置的数目个数的sentinel判断主机主观下线了,则sentinel会将主服务客观下线,并从主服务的从服务中选出一个服务作为新的主服务。投票一般采用过半数机制,即超过sentienl服务个数的一半。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDUxODI3MQ_size_16_color_FFFFFF_t_70 7

  • sentinel down-after-milliseconds

sentinel服务判定主服务主观下线的时间。当在设置的毫秒数时间内,主服务或其从服务没有正常响应sentinel的通信(PING),则sentinel会将主服务或其从服务设置成主观下线。

:主服务别名,要与sentinel monitor配置的主服务别名相同。

:毫秒数。默认为30000毫秒,即30秒。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDUxODI3MQ_size_16_color_FFFFFF_t_70 8

  • sentinel parallel-syncs

主服务同时可以与几个从服务进行数据同步。Redis服务存在主从复制的机制,将主服务的数据同步到从服务中以此来保证数据的一致性。

20210324194658937.png

发表评论

表情:
评论列表 (有 0 条评论,331人围观)

还没有评论,来说两句吧...

相关阅读

    相关 redis 哨兵

    前言 在上一篇,我们了解了redis 复制集群的完整的搭建流程,本篇来分享一下如何搭建 redis 哨兵集群。 为什么需要哨兵集群 redis哨兵集群要解决的问题

    相关 Redis-哨兵

    目录 一.集群结构 二.准备实例和配置 1. 创建目录 2.添加配置文件 3.修改端口 三.启动 1.启动redis服务 2.建立主从关系 3.启动哨兵