Redis 哨兵模式安装部署

Redis 哨兵模式安装部署

什么是哨兵?

Sentinel 其实也是一个 redis 的服务端程序,它也会定时执行 serverCron 函数,只是里面其他的程序用不到,用到的是对普通 redis 节点的监控以及故障转移模块。

Sentinel 初始化的时候会清空原来的命令表,写入自己独有的命令进去,所以普通 redis 节点支持的数据读写命令,对 Sentinel 来说都是找不到命令,因为它根本就没有初始化这些命令的执行器。

Sentinel 会定时的对自己监控的 master 执行 info 命令,获取最新的主从关系,还会定时的给所有的 redis 节点发送 ping 心跳检测命令,如果检测到某个 master 无法响应了,就会在给其他 Sentinel 发送消息,主观认为该 master 宕机,如果 Sentinel 集群认同该 master 下线的人数达到一个值,那么大家统一意见,下线该 master。

下线之前需要做的是找 Sentinel 集群中的某一个来执行下线操作,这个步骤叫领导者选举,选出来以后会从该 master 所有的 slave 节点中挑一个合适的作为新的 master,并让其他 slave 重新同步新的 master。

其实以上我们就简单的介绍了 Sentinel 是什么,本质上做了哪些事情,等下我们会结合源码细说其中的细节实现。这里我们再看下,如何配置并启动一个 Sentinel 监控。(生产环境建议配置大于三个

哨兵模式配置

  1. 准备三台机器或者三个redis实例
hadoop001 hadoop002 hadoop3 分别安装 redis

hadoop001:192.168.52.50
hadoop002:192.168.52.52
hadoop003:192.168.52.53

设定hadoop001 为master 节点,hadoop002 位slave节点,hadoop003 为sentinel节点

  1. master节点编辑配置文件:cp redis.conf master.conf
daemonize yes  #设置redis在后台启动
port 16379
slave-read-only no
protected-mode no
  1. slave节点编辑配置文件:cp redis.conf slave.conf
daemonize yes  # 设置redis在后台启动)
port 26379
slaveof 192.168.52.50 16379
slave-read-only no
protected-mode no
  1. sentinel节点编辑配置文件:sentinel.conf
protected-mode no
daemonize yes  # 设置redis在后台启动)
port 26380
sentinel monitor master1 192.168.52.50 16379 1
sentinel down-after-milliseconds master1 5000
sentinel failover-timeout master1 900000
sentinel parallel-syncs master1 1
  1. 其他的配置项信息可自行修改也可用默认
protected-mode no                                    (关闭保护模式)

port 6379                    
daemonize yes                                        (设置redis在后台启动)

pidfile /var/run/redis_6379.pid              
logfile "/opt/module/redis/6379/logs/redis_6379.log"  (设置日志文件的存放位置) 

dbfilename dump_6379.rdb                       		 (设置dump文件名)
dir "/opt/module/redis/6379"                         (设置dump文件和nodes文件的存放位置)               

masterauth bigdata                                    (设置集群节点间访问密码,跟上面一致)
requirepass bigdata                                   (设置redis访问密码)

启动redis服务

  1. 启动Master
redis-server master.conf
  1. 启动Slave
redis-server slave.conf 
  1. 启动Sentineld
redis-sentinel sentinel.conf

4.连接redis客户端查看配置信息

redis-cli -p 16379

[root@redis01 src]# redis-cli -p 16379
127.0.0.1:16379> INFO replication
# Replication
role:master   ---------------------> 角色为master
connected_slaves:1   ---------------------> slave 连接数为1
slave0:ip=172.31.17.229,port=26379,state=online,offset=183125,lag=0
master_replid:a7e8d31a7cca92f659dc1af9d6556e2d039588b8
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:183125
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:183125
[root@redis02 redis-sentinel]# redis-cli -p 26379
127.0.0.1:26379> INFO replication
# Replication
role:slave   ---------------------> 角色为slave
master_host:172.31.31.130
master_port:16379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:185981
slave_priority:100
slave_read_only:0
connected_slaves:0
master_replid:a7e8d31a7cca92f659dc1af9d6556e2d039588b8
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:185981
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:71
repl_backlog_histlen:185911

测试Redis可用

在master节点设置值,然后在slave节点查看是否能够同步

127.0.0.1:16379[1]> set test6 666

127.0.0.1:16379[1]> keys *
1) "test6"
2) "test5"
3) "test1"
4) "test3"
127.0.0.1:26379[1]> keys *
1) "test1"
2) "test5"
3) "test3"
4) "test6"

127.0.0.1:26379[1]> get test6
"666"

猜你喜欢

转载自blog.csdn.net/qq_43081842/article/details/114290215