redis哨兵模式搭建

1、环境准备:

  1. 准备3台虚拟机 ,ip地址 192.168.20.211,192.168.20.212,192.168.20.213
  2. 安装redis

2、先配置常规主从,并启动redis

  1. 192.168.20.211 作为master,其他两个节点为slave
bash 复制代码
[root@redis01 redis]# cat /etc/redis/redis.conf
daemonize yes
bind 0.0.0.0
port 6379
requirepass 123456
save 3600 1 300 100 60 10000

dir /var/lib/redis
dbfilename dump.rdb
logfile /var/log/redis/redis.log
pidfile /var/run/redis_6379.pid

masterauth 123456

# 查看主从信息
[root@redis01 redis]# redis-cli  -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.20.212,port=6379,state=online,offset=189704,lag=1
slave1:ip=192.168.20.213,port=6379,state=online,offset=189718,lag=0
  1. 192.168.20.212
bash 复制代码
[root@redis02 redis]# cat /etc/redis/redis.conf 
daemonize yes
bind 0.0.0.0
port 6379
requirepass 123456
save 3600 1 300 100 60 10000

dir /var/lib/redis
dbfilename dump.rdb
logfile /var/log/redis/redis.log
pidfile /var/run/redis_6379.pid

replicaof 192.168.20.211 6379
masterauth 123456
  1. 192.168.20.213
bash 复制代码
[root@redis03 redis]# cat /etc/redis/redis.conf 
daemonize yes
bind 0.0.0.0
port 6379
requirepass 123456
save 3600 1 300 100 60 10000

dir /var/lib/redis
dbfilename dump.rdb
logfile /var/log/redis/redis.log
pidfile /var/run/redis_6379.pid

replicaof 192.168.20.211 6379
masterauth 123456

3、配置sentinel,启动sentinel

  1. sentinel 配置,3个节点配置一样
bash 复制代码
[root@redis01 redis]# cat sentinel.conf
daemonize yes
bind 0.0.0.0
port 26379
requirepass 123456

dir /tmp
logfile /var/log/redis/sentinel.log
pidfile /var/run/redis-sentinel.pid

sentinel monitor mymaster 192.168.20.211 6379 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000
  1. 启动
bash 复制代码
[root@redis01 redis]#  systemctl  start redis-sentinel
  1. 查看
bash 复制代码
[root@redis01 ~]# redis-cli -p 26379
127.0.0.1:26379> auth 123456
OK
127.0.0.1:26379> INFO sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.20.211:6379,slaves=2,sentinels=3
127.0.0.1:26379> SENTINEL GET-MASTER-ADDR-BY-NAME mymaster
1) "192.168.20.211"
2) "6379"
127.0.0.1:26379> SENTINEL MASTER mymaster
 1) "name"
 2) "mymaster"
 3) "ip"
 4) "192.168.20.211"
 5) "port"
 6) "6379"
 7) "runid"
 8) "2f978a656c264e85808b4ed796079cf588703bcf"
 9) "flags"
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "642"
19) "last-ping-reply"
20) "642"
21) "down-after-milliseconds"
22) "30000"
23) "info-refresh"
24) "3235"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "1238087"
29) "config-epoch"
30) "0"
31) "num-slaves"
32) "2"
33) "num-other-sentinels"
34) "2"
35) "quorum"
36) "2"
37) "failover-timeout"
38) "180000"
39) "parallel-syncs"
40) "1"
127.0.0.1:26379> SENTINEL slaves mymaster
1)  1) "name"
    2) "192.168.20.213:6379"
    3) "ip"
    4) "192.168.20.213"
    5) "port"
    6) "6379"
    7) "runid"
    8) "9f57dbe48e38707a18b30a284c9a9d34c0ec0c3c"
    9) "flags"
   10) "slave"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "0"
   17) "last-ok-ping-reply"
   18) "170"
   19) "last-ping-reply"
   20) "170"
   21) "down-after-milliseconds"
   22) "30000"
   23) "info-refresh"
   24) "7705"
   25) "role-reported"
   26) "slave"
   27) "role-reported-time"
   28) "1975580"
   29) "master-link-down-time"
   30) "0"
   31) "master-link-status"
   32) "ok"
   33) "master-host"
   34) "192.168.20.211"
   35) "master-port"
   36) "6379"
   37) "slave-priority"
   38) "100"
   39) "slave-repl-offset"
   40) "520092"
   41) "replica-announced"
   42) "1"
2)  1) "name"
    2) "192.168.20.212:6379"
    3) "ip"
    4) "192.168.20.212"
    5) "port"
    6) "6379"
    7) "runid"
    8) "acbaff90d00b240e8dd5ac6132a99bfa5c357c62"
    9) "flags"
   10) "slave"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "0"
   17) "last-ok-ping-reply"
   18) "170"
   19) "last-ping-reply"
   20) "170"
   21) "down-after-milliseconds"
   22) "30000"
   23) "info-refresh"
   24) "7705"
   25) "role-reported"
   26) "slave"
   27) "role-reported-time"
   28) "1975592"
   29) "master-link-down-time"
   30) "0"
   31) "master-link-status"
   32) "ok"
   33) "master-host"
   34) "192.168.20.211"
   35) "master-port"
   36) "6379"
   37) "slave-priority"
   38) "100"
   39) "slave-repl-offset"
   40) "520092"
   41) "replica-announced"
   42) "1"

4 验证

停掉主节点的,看是否会把从节点提升成主节点

bash 复制代码
[root@redis02 redis]# redis-cli  -p 26379
127.0.0.1:26379> info sentinel
NOAUTH Authentication required.
127.0.0.1:26379> auth 123456
OK
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.20.213:6379,slaves=2,sentinels=3
相关推荐
心中有你02145 分钟前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
龙亘川19 分钟前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环
数据库·智慧城市·数据可视化
数据库小组25 分钟前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制
zhangjw341 小时前
1-5 PostgreSQL 数据类型全集:基础类型、字符串、数值、时间类型
数据库·postgresql
王中阳Go1 小时前
5.27 分钟干完后端和全部测试:一场三小时笔试的五个失分点,四个不在代码上
大数据·数据库·人工智能·后端·大语言模型
cnskylee2 小时前
【MySQL】麒麟V10 SP3系统安装MySQL-Commercial-8.0.46
数据库·mysql·adb
梦幻通灵2 小时前
修改MySQL数据库递增序列【持续更新】
数据库·mysql
IT规划师2 小时前
Redis 数据类型全解 - String 不只是 get set:90% 开发者忽略的 8 个高阶用法与内存陷阱(一)
redis·.net core
liminla!2 小时前
SQL 从入门到进阶:语法速查与实战练习(完整优化版)
数据库·sql·算法