zoukankan      html  css  js  c++  java
  • Docker Redis哨兵模式部署

    Docker Redis哨兵模式部署

    我们先拉取redis配置 wget -c http://download.redis.io/redis-stable/redis.conf
    当我们下载好配置文件之后,我们只需要注意一下几个配置即可。

    • port 是redis服务运行的端口(防止占用)
    • slaveof 指定redis的主机地址。
    • masterauth 当我们的主机redis有设置密码的时候,它就是设置主机连接密码。
    # 设置redis端口
    port 6379
    
    # 主机地址 (从机添加就可以了 格式:ip 端口)
    slaveof 121.40.122.104 6379
    
    # 设置密码(选择性配置)
    masterauth 123456
    

    上方我们介绍了,重要的几个配置之后,就可以运行容器了

    • -v 将运行配置文件,指定为我们设置的/home/docker/redis/redisConfig/redis.conf ,容器内部路径/etc/redis/redis.conf。
    • -v /home/docker/redis/data为容器文件存储位置,与上方同理。
    • 我们已经将配置文件映射为我们的了,就只需要指定配置文件运行即可,redis-server /etc/redis/redis.conf
    # 上方是对命令的部分解析,可以直接粘贴使用
    docker run -p 6379:6379  --restart=always --name redis -v /home/docker/redis/redisConfig/redis.conf:/etc/redis/redis.conf -v /home/docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf
    
    # 我们部署完成之后,就需要查看redis主机配置是否成功
    docker exec -it redis /bin/bash
    # 进入redis客户端
    redis-cli
    # 查看配置节点
    info Replication
    

    好到这里我们redis的主从复制就已经完成了。

    • 但是如果现在主机死了怎么办呢?
    • 廖爷问的真好,我就大发慈悲的告诉你。
    • redis有一种模式叫做哨兵模式,它会定期的监控所有redis服务,给他们发送健康检查,如果长时间不回复,就判定死亡,就会将该redis节点移除,等后面活过来了,再把该redis节点拉入。
    • 还有一种情况,就是哨兵在监控过程中只是和某些节点网络波动,这样就会被假移除,那我不叼死你呀,所以我们可以哨兵模式集群。
    • 哨兵集群模式工作原理
      • 单个哨兵容易导致误判主节点下线,比如主节点正常,只是在与哨兵之间通讯出现短暂异常,如果是单个哨兵,在指定的时间间隔没有通讯就认为主节点下线了,但其实没有;如果哨兵集群,可以询问多个哨兵指定的主节点是否下线,这样就显得更有保障;
      • 假如主哨兵死亡,也会进行选举新的哨兵为领导者。

    部署哨兵模式

    创建哨兵模式

    # 哨兵的端口号
    # 因为各个哨兵节点会运行在单独的Docker容器中
    # 所以无需担心端口重复使用
    # 如果需要在单机
    port 26379
    
    # 配置哨兵的监控参数
    # 格式:sentinel monitor <master-name> <ip> <redis-port> <quorum>
    # master-name是为这个被监控的master起的名字
    # ip是被监控的master的IP或主机名。因为Docker容器之间可以使用容器名访问,所以这里写master节点的容器名
    # redis-port是被监控节点所监听的端口号
    # quorom设定了当几个哨兵判定这个节点失效后,才认为这个节点真的失效了
    sentinel monitor local-master 121.40.122.104 6379 2
    
    # master在连续多长时间无法响应PING指令后,就会主观判定节点下线,默认是30秒
    # 格式:sentinel down-after-milliseconds <master-name> <milliseconds>
    sentinel down-after-milliseconds local-master 30000
    

    docker 运行哨兵

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

    进入哨兵容器查看状态

    # 进入哨兵容器
    docker exec -it sentinel-26379 /bin/bash
    # 连接客户端
    redis-cli -p 26379
    # 查看信息
    info sentinel
    

    当我停止了主节点

    过30000秒就变了,这个时间自己设置的

    我曾七次鄙视自己的灵魂:
    第一次,当它本可进取时,却故作谦卑;
    第二次,当它空虚时,用爱欲来填充;
    第三次,在困难和容易之间,它选择了容易;
    第四次,它犯了错,却借由别人也会犯错来宽慰自己;
    第五次,它自由软弱,却把它认为是生命的坚韧;
    第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
    第七次,它侧身于生活的污泥中虽不甘心,却又畏首畏尾。
  • 相关阅读:
    Hibernate与数据库的触发器协同工作
    Hibernate的调用数据库的存储过程
    hibernate中持久化对象的状态
    Hibernate-sessio缓存的操作
    Hibernate中的一些关键字理解
    配置Hibernate的流程
    Struts2自定义拦截器
    Struts2中解决表单重复提交
    Struts文件下载(静态)
    Struts2的简单的文件上传
  • 原文地址:https://www.cnblogs.com/chenxi001/p/14636445.html
Copyright © 2011-2022 走看看