redis 哨兵模式搭建

一.搭建redis集群

1.拉取redis镜像

  docker pull redis

2.创建网络

docker network create consul_consul

3.创建redis数据文件存储路径

mkdir -p /root/distributed/redis/data/master
mkdir -p /root/distributed/redis/data/slave1
mkdir -p /root/distributed/redis/data/slave2

4.创建redis compose文件

mkdir -p  /root/distributed/redis
cd  /root/distributed/redis
touch  docker-compose.yml 

5.配置docker-compsoe.yml文件

version: '3'
networks:
  consul_consul:
    external: true
services:
  redis-master:
    image: redis:latest
    container_name: redis-master
    restart: always
    environment:
      TZ: Asia/Shanghai
    networks:
      - consul_consul
    ports:
      - "6379:6379"
    volumes:
      - ./data/master:/data
    command: redis-server --port 6379  --requirepass g3nt00567  --appendonly yes
  redis-slave1:
    image: redis:latest
    command: redis-server --slaveof redis-master 6379 --port 6380 --requirepass g3nt00567 --masterauth g3nt00567  --appendonly yes
    restart: always
    networks:
      - consul_consul
    ports:
      - "6380:6380"
    environment:
      TZ: Asia/Shanghai
    volumes:
      - ./data/slave1:/data
    #ilinks:
    #  - redis-master
  redis-slave2:
    image: redis:latest    
    command: redis-server --slaveof redis-master 6379 --port 6381 --requirepass g3nt00567 --masterauth g3nt00567  --appendonly yes
    restart: always
    networks:
      - consul_consul
    ports:
      - "6381:6381"
    environment:
      TZ: Asia/Shanghai
    volumes:
      - ./data/slave2:/data
    #ilinks:
    #  - redis-master

二.搭建sentinel哨兵

1.建立sentinel文件夹

mkdir -p /root/distributed/redis/sentinel
cd  /root/distributed/redis/sentinel

2.创建sentienl.conf文件

touch sentinel1.conf

3.配置sentienl1.conf

port 26379
dir "/tmp"
# 自定义集群名,其中 192.168.8.188 为 redis-master 的 ip,6379 为 redis-master 的端口,2 为最小投票数(因为有 3 台 Sentinel 所以可以设置成 2)
sentinel myid 41e24abf1a9b8c509d636678170251febf44036a
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.48.9 6381 2
sentinel auth-pass mymaster g3nt00567
sentinel config-epoch mymaster 1
sentinel leader-epoch mymaster 1
# Generated by CONFIG REWRITE
sentinel known-replica mymaster 192.168.48.7 6379
sentinel known-replica mymaster 192.168.48.8 6380
sentinel known-sentinel mymaster 192.168.48.11 26379 e480267c29f2c27a10a1fe8587a458b58719d719
sentinel known-sentinel mymaster 192.168.48.10 26379 34bac34cbac31e673b53dba146d50ea48b03334e
sentinel current-epoch 1

4.复制sentinel1.conf文件

cp /root/distributed/redis/sentinel1.conf sentinel2.conf 
cp /root/distributed/redis/sentinel1.conf sentinel3.conf 

5.创建docker-compose.yml

touch docker-compose.yml

6.配置docker-compose.yml文件

version: '3'
networks:
  consul_consul:
    external: true
services:
  sentinel1:
    image: redis
    container_name: redis-sentinel-1
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    restart: always
    ports:
      - 26379:26379
    volumes:
      - ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf
    networks:
      - consul_consul
  sentinel2:
    image: redis
    container_name: redis-sentinel-2
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    restart: always
    ports:
      - 26380:26379
    volumes:
      - ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf
    networks:
      - consul_consul
  sentinel3:
    image: redis
    container_name: redis-sentinel-3
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    restart: always
    ports:
      - 26381:26379
    volumes:
      - ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf
    networks:
      - consul_consul

三.检测redis集群是否生效

3.启动redis-sentinel

docker-compose up -d

4.查看redis-sentinel是否启动成功

进入redis-sentinel容器中,查看redis连接状态

docker ``exec` `-it 容器Id ``bash``<br>redis-cli -p 26379

执行如下命令,查看redis主信息

sentinel master mymaster

显示带红框的信息则表明成功

image

执行如下命令,查看从redis信息是否正常

sentinel slaves mymaster

显示如下表明正常

image

四.测试主redis挂了之后,哨兵能否正常选举redis

使用如下命令,停掉主redis. [停掉容器也可以使用容器对应的NAMES来停掉]

docker stop redis-master

显示红框则表明redis已经停了

image

查看redis-sentinel日志,看其将那个redis选举为主,如下,其将端口位6381的redis选举为主

image

测试端口号为6381的redis是否具备写功能,如下则表明成功

image

至此,redis一主二从三哨兵模式部署成功.

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