四、redis集群,哨兵模式

redis如果只有一个服务,当服务出现问题时,就无法使用了。使用集群,就可以避免这类问题。哨兵模式是集群的一种,目前比较流行的方式。

哨兵模式的机制就是,一个redis服务(master或者slaver)启动时,随之启动一个哨兵(sentinel)。这个哨兵就用来监测这个服务的。

集群中所有的数据服务(master或者slaver)互相通信,共享数据,但是只有一个主服务master,其他都是从服务slave。哨兵们也互相通信,用来交流各个slaver和master是否正常。当master异常时,哨兵会选举一个最佳的slaver作为新的master。当原先的master恢复以后,会变成一个slaver。

客户端取数据可以从任意一个数据服务中获取,可以做成就近原则获取。而写入时,只有master可以被写入。

以下是配置两台机器的一主五从六哨兵的配置。其中也解决了各个出现的状况,比如密码等问题。需要注意的是,实际生产也不会这么用,因为我的机器有限,只有两台机器,各个机器有三个服务。

四、redis集群,哨兵模式_第1张图片

1.223服务器总启动脚本:(startupAll.bat)

start %~dp0Redis-x64-3.2.100_16379\startup.bat
start %~dp0Redis-x64-3.2.100_16380\startup.bat
start %~dp0Redis-x64-3.2.100_16381\startup.bat
start %~dp0Redis-x64-3.2.100_26379\startup_sentinel.bat
start %~dp0Redis-x64-3.2.100_26380\startup_sentinel.bat
start %~dp0Redis-x64-3.2.100_26381\startup_sentinel.bat

四、redis集群,哨兵模式_第2张图片

2.223机器的数据服务:(startup.bat)

title master_16379
%~dp0redis-server.exe %~dp0redis.windows.conf

3.223机器数据服务的配置:(redis.windows.conf)

# 绑定所有网卡
bind 0.0.0.0

# 保护模式关闭,防止外部机器无法访问,开启时无法使用192的网卡地址telnet,只能用127回环地址访问
protected-mode no

# 绑定端口
port 16379

tcp-backlog 511

timeout 0

tcp-keepalive 0

loglevel notice

logfile ""

# 数据库数量,相当于表数量
databases 16

save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename "dump.rdb"

# 配置密码
masterauth "1234"
# 缓存路径
dir "E:\\myrun\\Redis-x64-3.2.100_16379"
slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

# 访问其他机器时使用的密码
requirepass "1234"

appendonly yes

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512
hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes
# Generated by CONFIG REWRITE

# 当前服务是隶属于192.168.0.126 16379的一个从服务
slaveof 192.168.0.126 16379

四、redis集群,哨兵模式_第3张图片

4.223第一个哨兵的启动脚本(startup_sentinel.bat)

title sentinel_16379
%~dp0redis-server.exe %~dp0sentinel.conf --sentinel

5.223第一个哨兵的配置文件(sentinel.conf)

port 26379
#sentinel

# 外网访问
protected-mode no
sentinel myid 64f3efc620882f9b78a4e86e551bd39ec0084dbc

# 四个哨兵认为master掉线时会重新选举
sentinel monitor mymaster 192.168.0.126 16379 4

# 哨兵心跳检测间隔为5秒
sentinel down-after-milliseconds mymaster 5000

# 哨兵心跳检测超时时间为15秒
sentinel failover-timeout mymaster 15000

# 设置访问master的密码
sentinel auth-pass mymaster 1234
sentinel config-epoch mymaster 54
# Generated by CONFIG REWRITE
dir "E:\\myrun"
sentinel leader-epoch mymaster 54
sentinel known-slave mymaster 192.168.0.223 16380
sentinel known-slave mymaster 192.168.0.223 16379
sentinel known-slave mymaster 192.168.0.126 16381
sentinel known-slave mymaster 192.168.0.223 16381
sentinel known-slave mymaster 192.168.0.126 16380
sentinel known-sentinel mymaster 192.168.0.223 26380 b56c86047b8c11419528f94870f1db52b5c33733
sentinel known-sentinel mymaster 192.168.0.126 26381 14275e52d290da84451c6c523e4bd95c16368662
sentinel known-sentinel mymaster 192.168.0.126 26379 a07d4dbf388c50746fb49e9cd3cbc03e0eba3686
sentinel known-sentinel mymaster 192.168.0.126 26380 59bcb77faea57639b27173bd0e059447467122e9
sentinel known-sentinel mymaster 192.168.0.223 26381 1d0c22c6cc3a5ee6bdef7ec0479282fc1e53bf4b
sentinel current-epoch 54

6.启动效果:

四、redis集群,哨兵模式_第4张图片

四、redis集群,哨兵模式_第5张图片

启动了一主五从六哨兵。此时关闭master,则哨兵会推举一个新的master替代原先的master

7.配置的时候有一些注意点:

7.1比如需要本机使用ip访问而不是127.0.0.1访问,以及跨机器访问等,都按照我上边3当中的配置来,就可以规避。

7.2访问需要密码而不是随意访问,同样在上边也规避掉了。注意其中有汉字注释的部分。无论是数据服务还是哨兵。

你可能感兴趣的:(redis,redis)