Redis高可用部署-搭建redis哨兵模式

背景

最近在使用中有遇到redis的哨兵模式,这种模式能够做到主节点异常自动切换,保证了服务的高可用,在生产部署使用比较多。为更深入了解相关模式和配置,以及熟悉和方便问题的排查,在本地部署一套redis服务。

准备工作

基础信息

版本为7.0.0 , 部署方式为docker。

部署

部署主从模式

version: '3'
services:
  master:
    image: redis
    container_name: redis-master
    command: redis-server --requirepass redis_pwd  --masterauth redis_pwd
    ports:
      - 6380:6379
  slave1:
    image: redis
    container_name: redis-slave-1
    ports:
      - 6381:6379
    command:  redis-server --slaveof redis-master 6379 --requirepass redis_pwd --masterauth redis_pwd
  slave2:
    image: redis
    container_name: redis-slave-2
    ports:
      - 6382:6379
    command: redis-server --slaveof redis-master 6379 --requirepass redis_pwd --masterauth redis_pwd

启动后如图

image.png

部署哨兵

version: '3.7'
services:
  sentinel1:
    image: redis
    container_name: redis-sentinel-1
    restart: always
    ports:
      - 26379:26379
    command: redis-sentinel /usr/local/etc/redis/conf/sentinel1.conf
    volumes:
      # - ./conf1/sentinel1.conf:/usr/local/etc/redis/conf/sentinel.conf
      - ./data1:/data
      - ./conf1:/usr/local/etc/redis/conf
  sentinel2:
    image: redis
    container_name: redis-sentinel-2
    restart: always
    ports:
    - 26380:26379
    command: redis-sentinel /usr/local/etc/redis/conf/sentinel2.conf
    volumes:
      # - ./conf2/sentinel2.conf:/usr/local/etc/redis/conf/sentinel.conf
      - ./data2:/data
      - ./conf2:/usr/local/etc/redis/conf
  sentinel3:
    image: redis
    container_name: redis-sentinel-3
    ports:
      - 26381:26379
    command: redis-sentinel /usr/local/etc/redis/conf/sentinel3.conf
    volumes:
      # - ./conf3/sentinel3.conf:/usr/local/etc/redis/conf/sentinel.conf
      - ./data3:/data
      - ./conf3:/usr/local/etc/redis/conf
networks:
  default:
    external:
      name: redis_default

注意!
哨兵模式在部署的时候挂载配置文件使用目录的形式,否则会有文件无权修改的警告!

sentinel模式配置文件

//三个节点都一致

# 自定义集群名,其中10.80.20.22 为 redis-master 的 "主机" ip,6379 为 redis-master 的端口,2 为最小投票数(因为有 3 台 Sentinel 所以可以设置成 2)
port 26379
dir "/tmp"
sentinel monitor mymaster 10.80.20.22 6380 2
sentinel auth-pass mymaster redis_pwd
sentinel deny-scripts-reconfig yes

#如下是自动生成的
# Generated by CONFIG REWRITE
latency-tracking-info-percentiles 50 99 99.9
user default on nopass sanitize-payload ~* &* +@all
sentinel myid a9c271090d6ea265ab42cf63a1655b64eef17a7d
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel current-epoch 0

sentinel known-replica mymaster 172.22.0.2 6379

sentinel known-replica mymaster 172.22.0.3 6379

sentinel known-sentinel mymaster 172.21.0.3 26379 69603b62ad821b18a5fae6646ace568ef53d0630

sentinel known-sentinel mymaster 172.21.0.2 26379 b6567ba64e321991b85762a0707c51d173b998e0

注意其中的
sentinel monitor mymaster 10.80.20.22 6380 2
10.80.20.22 是宿主机的IP,如果配置容器IP,可能导致外部无法访问。

启动后如图

image.png

验证

登录主从

# Replication
role:master
connected_slaves:2
slave0:ip=172.22.0.2,port=6379,state=online,offset=468205,lag=1
slave1:ip=172.22.0.3,port=6379,state=online,offset=468341,lag=0
master_failover_state:no-failover
master_replid:a6d8f07d488ea5769117bc4497d05f38f438aa30
master_replid2:7dd4ecc3aabefbf7cf6ac859eb6c24fd03ae6321
master_repl_offset:468477
second_repl_offset:225
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:225
repl_backlog_histlen:468253

登录哨兵

# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_tilt_since_seconds:-1
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=10.80.20.22:6380,slaves=2,sentinels=4

参考

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

推荐阅读更多精彩内容