redis哨兵环境搭建

Redis Sentinel(哨兵)

Redis Sentinel保证了Redis的高可用性。实际上,这意味着使用Sentinel可以创建一个Redis部署,可以在没有人为干预的情况下抵抵抗某些类型的故障。
1、监控:Sentinel会不断检查主实例和从属实例是否按预期工作。
2、通知:如果redis服务发生故障,Sentinel可以通过api通知系统管理员
3、自动故障转移:如果主服务器未按预期工作,Sentinel可以启动故障转移过程,其中从服务器升级为主服务器,其他其他服务器重新配置为使用新主服务器,并且使用Redis服务器的应用程序通知有关新服务器的地址。

配置Sentinel

1、首先准备三个redis实列一主二从
①实例一(主服务器)创建配置文件6379.conf,在里面写入以下内容:

port 6379
daemonize yes
pidfile /data/6379/redis.pid
loglevel notice
logfile "/data/6379/redis.log"
dbfilename dump.rdb
dir /data/6379
protected-mode no

②实例二(从服务器)创建配置文件6380.conf,在里面写入以下内容:

port 6380
daemonize yes
pidfile /data/6380/redis.pid
loglevel notice
logfile "/data/6380/redis.log"
dbfilename dump.rdb
dir /data/6380
protected-mode no
slaveof 127.0.0.1 6379

②实例三(从服务器)创建配置文件6381.conf,在里面写入以下内容:

port 6381
daemonize yes
pidfile /data/6381/redis.pid
loglevel notice
logfile "/data/6381/redis.log"
dbfilename dump.rdb
dir /data/6381
protected-mode no
slaveof 127.0.0.1 6379

2、启动三个实列

[root@love2 ~]# redis-server 6379.conf
[root@love2 ~]# redis-server 6380.conf
[root@love2 ~]# redis-server 6381.conf

3、查看主从信息

主
[root@love2 data]# redis-cli -p 6379 info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=84,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=84,lag=1
master_replid:c68311b9fd7865c2429487dc756a36b2b533a737
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:84
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:84

从1
[root@love2 data]# redis-cli -p 6380 info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:126
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:c68311b9fd7865c2429487dc756a36b2b533a737
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:126
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:126

从2
[root@love2 data]# redis-cli -p 6381 info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:168
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:c68311b9fd7865c2429487dc756a36b2b533a737
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:168
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:168

4、主从已经配置好了,现在来配置哨兵的配置文件,最少需要三个哨兵,以下为配置文件,修改另外两个哨兵配置文件,如果为了方便,仅仅只需要更改端口就行,所以配置文件分别为 5000.conf,5001.conf,5002.conf

port 5000     #该哨兵运行端口
daemonize yes #使哨兵可以在后台运行
dir /data/5000/     #该哨兵存放数据的目录
logfile "5000.log"    #日志文件路劲为'/data/5000/5000.log’

sentinel monitor master 127.0.0.1 6379 2
#当前Sentinel节点监控 192.168.119.10:6379 这个主节点,master是主节点的别名,2代表判断主节点失败以及切换主节点至少需要2个Sentinel节点节点同意

sentinel down-after-milliseconds master 5000
#sentinel会定期向redis主节点ping信号,如果5s内没有回复,则判断master故障

sentinel failover-timeout master 60000
#故障转移时间为6s

sentinel parallel-syncs master 1
#当sentinel达成协议一直时,将会向新的主节点转移数据,原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为1

5、启动哨兵

可以使用 redis-sentinel,该文件位于redis的安装目录下,是一个可执行文件,直接使用以下命令:

redis-sentinel  /data/5000.conf

也可以用redis-server命令:

redis-server /data/5000.conf --sentinel

6、启动后效果如下

[root@love2 data]# ps -ef |grep redis
root       8723      1  0 01:02 ?        00:00:05 redis-server *:6379
root       8734      1  0 01:07 ?        00:00:05 redis-server *:6380
root       8740      1  0 01:07 ?        00:00:04 redis-server *:6381
root       8863      1  0 01:41 ?        00:00:00 redis-server *:5000 [sentinel]
root       8884      1  0 01:44 ?        00:00:00 redis-server *:5001 [sentinel]
root       8889      1  0 01:44 ?        00:00:00 redis-server *:5002 [sentinel]
root       8894   8488  0 01:44 pts/0    00:00:00 grep --color=auto redis

7、通过命令查看状态信息


[root@love2 data]# redis-cli -p 5000 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=master,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3

8、测试故障转移,我们直接杀死,master节点

kill -9 8921

9、查看效果,大概5s后,自动进行了主从切换

[root@love2 data]# redis-cli -p 5000 info sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=master,status=ok,address=127.0.0.1:6380,slaves=2,sentinels=3

原文地址:https://www.cnblogs.com/hjnzs/p/12849202.html