首页 > 数据库 >docker环境搭建redis sentinel哨兵集群

docker环境搭建redis sentinel哨兵集群

时间:2022-12-08 16:39:08浏览次数:40  
标签:log -- redis sentinel home docker data


Sentinel(哨岗、哨兵)是Redis的高可用性(high availability)解决方案:由一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。

docker环境搭建redis sentinel哨兵集群_数据库


docker环境搭建redis sentinel哨兵集群_服务器_02


Redis Sentinel 是官方推荐的高可用性解决方案。它不会因为节点宕机而导致服务不可用,同时,它可以作为监控管理工具,可以提供节点监控、通知、自动故障恢复和客户端配置发现服务等,即使出现了故障,也能很快知道,并进行修复。

1主2从3哨兵模式

环境搭建:

1、拉取docker镜像

docker环境搭建redis sentinel哨兵集群_数据库_03


2、本地ip为192.168.8.145

3、各Redis的ip和端口如下:

主:ip:6379
从:ip:6380,ip:6381
sentinel:ip:26379,ip:26380,ip:26381

二、部署主从redis

docker run --name redis6379 --net=host -v /home/redis/data6379:/data -d redis:latest  redis-server --port 6379
docker run --name redis6380 --net=host -v /home/redis/data6380:/data -d redis:latest  redis-server --slaveof 192.168.2.139 6379 --port 6380
docker run --name redis6381 --net=host -v /home/redis/data6381:/data -d redis:latest  redis-server --slaveof 192.168.2.139 6379 --port 6381

命令说明:

-p 6379:6379 : 将容器的6379端口映射到主机的6379端口

-v /home/redis/data6379:/data : 将主机中目录/home/redis/data6379:/data 挂载到容器的/data

--name redis6381: 给出容器名称

-d: 后台运行

redis:latest: 镜像名称

docker环境搭建redis sentinel哨兵集群_服务器_04

执行命名查看redis 同步情况:

docker logs -f redis6379
docker logs -f redis6380
docker logs -f redis6381

三、部署sentinel

新建文件 sentinel-26379.conf、sentinel-26380.conf、sentinel-26381.conf:

protected-mode no
bind 0.0.0.0
port 26379
dir "/home/redis_sentinel/log"
logfile "/home/redis_sentinel/log/26379.log"
daemonize yes
sentinel monitor mymaster 192.168.8.145 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
protected-mode no
bind 0.0.0.0
port 26380
dir "/home/redis_sentinel/log"
logfile "/home/redis_sentinel/log/26380.log"
daemonize yes
sentinel monitor mymaster 192.168.8.145 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
protected-mode no
bind 0.0.0.0
port 26381
dir "/home/redis_sentinel/log"
logfile "/home/redis_sentinel/log/26381.log"
daemonize yes
sentinel monitor mymaster 192.168.8.145 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1

配置说明:

logfile "sentinel.log":输出日志目录

sentinel monitor mymaster 192.168.8.145 6379 2:

哨兵监控的主服务器名称为mymaster,
ip为192.168.8.145,端口为6379,
将这个主服务器标记为失效至少需要2个哨兵进程的同意

执行命令启动3台sentinel

docker run -p 26379:26379 --restart=always --name sentinel-26379 -v /home/redis_sentinel/sentinel/sentinel-26379.conf:/etc/redis/sentinel.conf -v /home/redis_sentinel/sentinel/sentinel-26379-data:/data -v /home/redis_sentinel/log:/home/redis_sentinel/log -d redis redis-sentinel /etc/redis/sentinel.conf
docker run -p 26380:26380 --restart=always --name sentinel-26380 -v /home/redis_sentinel/sentinel/sentinel-26380.conf:/etc/redis/sentinel.conf -v /home/redis_sentinel/sentinel/sentinel-26380-data:/data -v /home/redis_sentinel/log:/home/redis_sentinel/log -d redis redis-sentinel /etc/redis/sentinel.conf
docker run -p 26381:26381 --restart=always --name sentinel-26381 -v /home/redis_sentinel/sentinel/sentinel-26381.conf:/etc/redis/sentinel.conf -v /home/redis_sentinel/sentinel/sentinel-26381-data:/data -v /home/redis_sentinel/log:/home/redis_sentinel/log -d redis redis-sentinel /etc/redis/sentinel.conf

命令说明:

-p 26379:26379 : 将容器的26379端口映射到主机的26379端口

-v /app/redis/data:/data : 将主机中目录/app/redis/data挂载到容器的/data

--name sentinel: 给出容器名称

-d: 后台运行

redis:latest: 镜像名称

redis-sentinel sentinel.conf: sentinel的启动命令,指定配置文件

docker环境搭建redis sentinel哨兵集群_服务器_05


执行docker logs -f sentinel-26379 查看启动情况

查看sentinel配置文件

启动完成后查看sentinel配置文件,sentinel会将发现的redis节点和sentinel节点写入到配置文件中

Spring Boot 2 整合Redis哨兵模式

Spring Boot 2 整合Redis哨兵模式除了配置稍有差异,其它与整合单实例模式类似,配置示例为:

spring:
redis:
password: passw0rd
timeout: 5000
sentinel:
master: mymaster
nodes: 192.168.40.201:26379,192.168.40.201:36379,192.168.40.201:46379 # 哨兵的IP:Port列表
jedis: # 或lettuce
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0


标签:log,--,redis,sentinel,home,docker,data
From: https://blog.51cto.com/u_15906694/5922707

相关文章

  • 通过docker compose部署项目jar包
    Docker-Compose是用来管理容器的,类似用户容器管家,我们有N多台容器或者应用需要启动的时候,如果手动去操作,是非常耗费时间的,如果有了Docker-Compose只需要一个配置文件就可......
  • Dockerfile中CMD和ENTRYPOINT的区别
    CMD和ENTRYPOINT同样作为容器启动时执行的命令,区别有以下几点:CMD的命令会被dockerrun的命令覆盖而ENTRYPOINT不会如使用CMD["/bin/bash"]或ENTRYPOINT["/bin/bash"]后,......
  • 熔断与服务降级开源库Sentinel
    Sentinel介绍分布式系统中一个微服务需要依赖于很多的其他的服务,那么服务就会不可避免的失败。例如A服务依赖于B、C、D等很多的服务,当B服务不可用的时候,会一直阻塞或者异常......
  • centos7下安装docker镜像
    在线下载docker镜像:dockerpullmysql:5.7dockerpullredis:5.0-alpinedockerpulltomcat:9.0.13-jre8-alpine查看已下载的Docker镜像latest具体版本:dockerimageins......
  • Docker 安装 Python
    1.拉取镜像:dockerpullpython:3.5查看镜像dockerimages2.创建python容器:dockerrun--namepython3.7-v/mydata:/python/myapp-w/mydata/python/myapppython:3.7......
  • 清理Docker占用的磁盘空间
    使用df-h命令来查看磁盘信息使用du-h-x--max-depth=1查看哪个目录占用过高查看docker池空间大小dockerinfo由于没有修改docker的默认目录,docker默认目录空间太小了,......
  • openEuler安装docker
     一、准备工作#更新镜像源缓存dnfmakecache#修改chrony时间同步配置sed-i's/poolpool.ntp.orgiburst/poolntp.aliyun.com/g'/etc/chrony.conf#重启chron......
  • Docker部署inluxdb,grafana,prometheus环境
    创建网络查看现有网络:dockernetworkls[root@zhulanghome]#dockernetworklsNETWORKIDNAMEDRIVERSCOPE874979f64b45bridgebridge......
  • virtualbox中安装docker
    安装yum-utilsyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2为yum源添加docker仓库位置yum-config-manager--add-repohttps://download.d......
  • 将jar包、vue项目打成docker镜像并推送到Harbor本地仓库
    ​​Centos7下harbor的安装部署​​先制作自己的docker镜像,使用commit方式也可以制作镜像,我这里采用通过编写Dockerfile命令脚本进行生成镜像。​​利用Dockerfile制作自己......