Redis+Sentinel哨兵模式安装与配置

机器环境有限,搭建一个伪集群。

1.环境介绍

集群机器                           redis服务                       哨兵(sentinel)                     节点描述

虚拟机:172.17.199.70    端口6400            安装sentinel服务,端口26400             主节点

虚拟机:172.17.199.70    端口6401            安装sentinel服务,端口26401             从节点

虚拟机:172.17.199.70    端口6402            安装sentinel服务,端口26402             从节点

2.配置主从关系

2.1.主redis.conf 配置  #日志和数据文件地址自行修改

daemonize yes

pidfile "/usr/redis/redis-2.8.19/redis_6400.pid"

port 6400

tcp-backlog 65535

bind 0.0.0.0

timeout 0

tcp-keepalive 0

loglevel notice

logfile "/usr/redis/redis-2.8.19/redis_6400.log"

maxmemory 8gb

maxmemory-policy allkeys-lru

databases 16

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename "dump.rdb"

dir "/usr/redis/redis-2.8.19/data"

slave-serve-stale-data yes

slave-read-only yes

repl-disable-tcp-nodelay no

slave-priority 100

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128


2.2.从redis.conf 配置    #相比于主多了一行slaveof

daemonize yes

pidfile "/usr/redis/redis-slave1/redis_6401.pid"

port 6401

tcp-backlog 65535

bind 0.0.0.0

timeout 0

tcp-keepalive 0

loglevel notice

logfile "/usr/redis/redis-slave1/redis_6401.log"

maxmemory 8gb

maxmemory-policy allkeys-lru

databases 16

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename "dump.rdb"

dir "/usr/redis/redis-slave1/data"

slave-serve-stale-data yes

slave-read-only yes

repl-disable-tcp-nodelay no

slave-priority 100

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128

slaveof 172.17.199.70 6400

2.3启动

./src/redis-server redis.conf

2.4.查询主从关系

2.4.1主

[root@iZ2zeemywxjdx93lap023pZ redis-slave1]# ./src/redis-cli -h 172.17.199.70 -p 6400 info Replication

# Replication

role:master

connected_slaves:2

slave0:ip=172.17.199.70,port=6401,state=online,offset=15596870,lag=1

slave1:ip=172.17.199.70,port=6402,state=online,offset=15597011,lag=0

master_repl_offset:15597011

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:14548436

repl_backlog_histlen:1048576


2.4.2从

[root@iZ2zeemywxjdx93lap023pZ redis-slave1]# ./src/redis-cli -h 172.17.199.70 -p 6401 info Replication

# Replication

role:slave

master_host:172.17.199.70

master_port:6400

master_link_status:up

master_last_io_seconds_ago:0

master_sync_in_progress:0

slave_repl_offset:15606951

slave_priority:100

slave_read_only:1

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

3.配置哨兵Sentinel

port 26400

daemonize yes

dir "/usr/redis/redis-2.8.19/sentinel"

sentinel monitor mymaster 172.17.199.70 6400 2

sentinel down-after-milliseconds mymaster 3000

sentinel failover-timeout mymaster 10000

sentinel config-epoch mymaster 0

sentinel leader-epoch mymaster 0

sentinel known-slave mymaster 172.17.199.70 6401

sentinel known-slave mymaster 172.17.199.70 6402

# Generated by CONFIG REWRITE

sentinel known-sentinel mymaster 172.17.199.70 26401 b0adf1633ee389f66794961751f069041b838471

sentinel known-sentinel mymaster 172.17.199.70 26402 c331f278bc5f54ba3e83007ef8af50eccf51e252

sentinel current-epoch 0


port 26401

daemonize yes

dir "/usr/redis/redis-slave1/sentinel"

sentinel monitor mymaster 172.17.199.70 6400 2

sentinel down-after-milliseconds mymaster 3000

sentinel failover-timeout mymaster 10000

sentinel config-epoch mymaster 0

sentinel leader-epoch mymaster 0

sentinel known-slave mymaster 172.17.199.70 6400

sentinel known-slave mymaster 172.17.199.70 6402

# Generated by CONFIG REWRITE

sentinel known-sentinel mymaster 172.17.199.70 26400 57ec8c95e8292ccbcc4da37202f2bdada5208936

sentinel known-sentinel mymaster 172.17.199.70 26402 c331f278bc5f54ba3e83007ef8af50eccf51e252

sentinel current-epoch 0


port 26402

daemonize yes

dir "/usr/redis/redis-slave2/sentinel"

sentinel monitor mymaster 172.17.199.70 6400 2

sentinel down-after-milliseconds mymaster 3000

sentinel failover-timeout mymaster 10000

sentinel config-epoch mymaster 0

sentinel leader-epoch mymaster 0

sentinel known-slave mymaster 172.17.199.70 6401

sentinel known-slave mymaster 172.17.199.70 6400

# Generated by CONFIG REWRITE

sentinel known-sentinel mymaster 172.17.199.70 26401 b0adf1633ee389f66794961751f069041b838471

sentinel known-sentinel mymaster 172.17.199.70 26400 57ec8c95e8292ccbcc4da37202f2bdada5208936

sentinel current-epoch 0


配置文件说明:

1. port :当前Sentinel服务运行的端口

2. dir : Sentinel服务运行时使用的临时文件夹

3.sentinel monitor master001 192.168.110.10163792:Sentinel去监视一个名为master001的主redis实例,这个主实例的IP地址为本机地址192.168.110.101,端口号为6379,而将这个主实例判断为失效至少需要2个 Sentinel进程的同意,只要同意Sentinel的数量不达标,自动failover就不会执行

4.sentinel down-after-milliseconds master001 30000:指定了Sentinel认为Redis实例已经失效所需的毫秒数。当实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。只有一个 Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移:只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线,这时自动故障迁移才会执行

5.sentinel parallel-syncs master001 1:指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长

6.sentinel failover-timeout master001 180000:如果在该时间(ms)内未能完成failover操作,则认为该failover失败

7.sentinel notification-script :指定sentinel检测到该监控的redis实例指向的实例异常时,调用的报警脚本。该配置项可选,但是很常用

4.测试sentinel集群

4.1.停止6400主

[root@iZ2zeemywxjdx93lap023pZ redis-slave2]# ./src/redis-cli -h 127.0.0.1 -p 6400 info Replication

Could not connect to Redis at 127.0.0.1:6400: Connection refused

[root@iZ2zeemywxjdx93lap023pZ redis-slave2]# ./src/redis-cli -h 127.0.0.1 -p 6401 info Replication

# Replication

role:slave

master_host:172.17.199.70

master_port:6402

master_link_status:up

master_last_io_seconds_ago:0

master_sync_in_progress:0

slave_repl_offset:11952

slave_priority:100

slave_read_only:1

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

#可以看到6400不能连接,6402成为了主节点

4.2启动6400

[root@iZ2zeemywxjdx93lap023pZ redis-2.8.19]# ./src/redis-server redis.conf

[root@iZ2zeemywxjdx93lap023pZ redis-2.8.19]# ./src/redis-cli -h 127.0.0.1 -p 6400 info Replication

# Replication

role:slave

master_host:172.17.199.70

master_port:6402

master_link_status:up

master_last_io_seconds_ago:0

master_sync_in_progress:0

slave_repl_offset:26737

slave_priority:100

slave_read_only:1

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

#发现主节点还是6402,6400变成了从节点

4.3只保留一个哨兵sentinel,停止6402主节点

[root@iZ2zeemywxjdx93lap023pZ redis-2.8.19]# ./src/redis-cli -h 127.0.0.1 -p 6402 info Replication

Could not connect to Redis at 127.0.0.1:6402: Connection refused

[root@iZ2zeemywxjdx93lap023pZ redis-2.8.19]# ./src/redis-cli -h 127.0.0.1 -p 6400 info Replication

# Replication

role:slave

master_host:172.17.199.70

master_port:6402

master_link_status:down

master_last_io_seconds_ago:-1

master_sync_in_progress:0

slave_repl_offset:163317

master_link_down_since_seconds:11

slave_priority:100

slave_read_only:1

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

[root@iZ2zeemywxjdx93lap023pZ redis-2.8.19]# ./src/redis-cli -h 127.0.0.1 -p 6401 info Replication

# Replication

role:slave

master_host:172.17.199.70

master_port:6402

master_link_status:down

master_last_io_seconds_ago:-1

master_sync_in_progress:0

slave_repl_offset:163317

master_link_down_since_seconds:14

slave_priority:100

slave_read_only:1

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

#发现6402主已经连接不上,集群中也不存在主节点,原因是因为sentinel.conf中配置 sentinel monitor mymaster 172.17.199.70 6400 2 随后一个配置的是2

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容