zoukankan      html  css  js  c++  java
  • Redis主从复制,哨兵模式搭建(Docker)

    哨兵模式搭建成功!(带密码)

    首先仍然是需要docker-compose(用于启动监控哨兵情况)

    安装(一下网址不需要经过github):

    https://blog.csdn.net/pushiqiang/article/details/78682323

    redis配置文件与sentinel配置文件模板放置网盘中,如下!

    链接:https://pan.baidu.com/s/1MA16xdQl_OnlRY-IJkxg0w
    提取码:1234

    准备搭建情况:

    #主机
    84:6379
    
    #从机
    85:6379
    86:6379
    
    #哨兵
    84:26379
    85:26379
    86:26379
    

    84机器环境搭建

    1.redis搭建

    vim /opt/redis/myredis/redis.conf

    其中bind注释掉或者0.0.0.0
    
    port 6379
    
    protected-mode no
    
    masterauth 123456
    
    requirepass 123456
    
    其他的默认就可以
    

    主机中之所以配置masterauth 正是为了防止主机宕机后已经选择其他机器作为主机,他要作为其他主机的从机,必须要知道他要连接主机的密码是什么

    docker run -p 6379:6379 --name myredis
    -v  /opt/redis/myredis/redis.conf:/etc/redis/redis.conf 
    -d redis 
    redis-server /etc/redis/redis.conf 
    

    -v 主宿机位置 容器内位置 因此这里需要确保/opt/redis/myredis/redis.conf存在,否则将以没有配置文件的方式启动

    使用docker ps检查下有没有启动成功,如果没成功检查下redis.conf内部是不是配置错了

    3.哨兵1搭建

    vim /opt/redis/myredis/sentinel.conf

    进去后 :%d 将内容清除,放入如下内容
    
    port 26379
    daemonize no
    dir "/data"
    #主节点
    sentinel monitor mymaster 192.168.2.84 6379 2
    sentinet auth-pass mymaster 123456
    #默认30s我设置5s就是便于观察(多少时间查看一次主节点通讯)
    sentinel down-after-milliseconds mymaster 5000
    #默认180s我设置5s就是便于观察(选举失败,下次选取时间)
    sentinel failover-timeout mymaster 5000
    sentinel config-epoch mymaster 0
    sentinel leader-epoch mymaster 2
    #docker无权限手动配置 报告自己的ip
    sentinel announce-ip 192.168.2.84
    sentinel announce-port 26379
    

    4.在同级目录下 /opt/redis/myredis

    vim docker-compose.yml

    输入:

    version: '3.1'
    services:
    sentinel1:
     image: redis
     container_name: redis-sentinel
     ports:
          - 26379:26379
        privileged: true
        command: redis-sentinel /usr/local/etc/redis/sentinel.conf
        volumes:
          - ./sentinel.conf:/usr/local/etc/redis/sentinel.conf
    

    privileged: true这个很重要,否则通过docker-composer logs -f就能看到权限不足无法启动容器了!

    如果没有docker-compose,最上方已经给了安装地址,几秒钟就安装完了

    1. 在当前 /opt/redis/myredis下执行
    • docker-compose up -d
    • 完成后通过docker ps查看容器是否已经启动
    • 通过docker-composer logs -f 查看实时日志(这个很重要,我们启动哨兵后,断开master就要在这里看看怎么变化,如果失败则会显示没启动成功的原因,如果成功则会显示监视的主节点是哪个,以及主节点下的从节点有哪些,看不到就完蛋了...)
    • docker exec -it redis-sentinel redis-cli -p 26379 后info查看

    85机器搭建

    和上方一直,只要不在redis配置文件修改自己是slave以及对应sentinel.conf声明为自己ip即可

    1.redis搭建

    vim /opt/redis/myredis/redis.conf

    其中bind注释掉或者0.0.0.0
    
    port 6379
    
    protected-mode no
    
    #这个是必须的,因为redis模式自己是主节点
    slaveof 192.168.2.84 6379
    
    masterauth 123456
    
    requirepass 123456
    
    其他的默认就可以
    
    docker run -p 6379:6379 --name myredis
    -v  /opt/redis/myredis/redis.conf:/etc/redis/redis.conf 
    -d redis 
    redis-server /etc/redis/redis.conf 
    

    -v 主宿机位置 容器内位置 因此这里需要确保/opt/redis/myredis/redis.conf存在,否则将以没有配置文件的方式启动

    使用docker ps检查下有没有启动成功,如果没成功检查下redis.conf内部是不是配置错了

    3.哨兵1搭建

    vim /opt/redis/myredis/sentinel.conf

    进去后 :%d 将内容清除,放入如下内容
    
    port 26379
    daemonize no
    dir "/data"
    #主节点
    sentinel monitor mymaster 192.168.2.84 6379 2
    sentinet auth-pass mymaster 123456
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 5000
    sentinel config-epoch mymaster 0
    sentinel leader-epoch mymaster 2
    #docker无权限手动配置 报告自己的ip
    sentinel announce-ip 192.168.2.85
    sentinel announce-port 26379
    

    4.在同级目录下 /opt/redis/myredis

    vim docker-compose.yml

    输入:

    version: '3.1'
    services:
    sentinel1:
     image: redis
     container_name: redis-sentinel
     ports:
          - 26379:26379
        privileged: true
        command: redis-sentinel /usr/local/etc/redis/sentinel.conf
        volumes:
          - ./sentinel.conf:/usr/local/etc/redis/sentinel.conf
    

    privileged: true这个很重要,否则通过docker-composer logs -f就能看到权限不足无法启动容器了!

    如果没有docker-compose,最上方已经给了安装地址,几秒钟就安装完了

    1. 在当前 /opt/redis/myredis下执行
    • docker-compose up -d

    • 完成后通过docker ps查看容器是否已经启动

    • 通过docker-composer logs -f 查看实时日志(这个很重要,我们启动哨兵后,断开master就要在这里看看怎么变化,如果失败则会显示没启动成功的原因,如果成功则会显示监视的主节点是哪个,以及主节点下的从节点有哪些,看不到就完蛋了...)

    86机器搭建

    和上方一直,只要不在redis配置文件修改自己是slave以及对应sentinel.conf声明为自己ip即可

    1.redis搭建

    vim /opt/redis/myredis/redis.conf

    其中bind注释掉或者0.0.0.0
    
    port 6379
    
    protected-mode no
    
    #这个是必须的,因为redis模式自己是主节点
    slaveof 192.168.2.84 6379
    
    masterauth 123456
    
    requirepass 123456
    
    其他的默认就可以
    
    docker run -p 6379:6379 --name myredis
    -v  /opt/redis/myredis/redis.conf:/etc/redis/redis.conf 
    -d redis 
    redis-server /etc/redis/redis.conf 
    

    -v 主宿机位置 容器内位置 因此这里需要确保/opt/redis/myredis/redis.conf存在,否则将以没有配置文件的方式启动

    使用docker ps检查下有没有启动成功,如果没成功检查下redis.conf内部是不是配置错了

    3.哨兵1搭建

    vim /opt/redis/myredis/sentinel.conf

    进去后 :%d 将内容清除,放入如下内容
    
    port 26379
    daemonize no
    dir "/data"
    #主节点
    sentinel monitor mymaster 192.168.2.84 6379 2
    sentinet auth-pass mymaster 123456
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 5000
    sentinel config-epoch mymaster 0
    sentinel leader-epoch mymaster 2
    #docker无权限手动配置 报告自己的ip
    sentinel announce-ip 192.168.2.86
    sentinel announce-port 26379
    

    4.在同级目录下 /opt/redis/myredis

    vim docker-compose.yml

    输入:

    version: '3.1'
    services:
    sentinel1:
     image: redis
     container_name: redis-sentinel
     ports:
          - 26379:26379
        privileged: true
        command: redis-sentinel /usr/local/etc/redis/sentinel.conf
        volumes:
          - ./sentinel.conf:/usr/local/etc/redis/sentinel.conf
    

    privileged: true这个很重要,否则通过docker-composer logs -f就能看到权限不足无法启动容器了!

    如果没有docker-compose,最上方已经给了安装地址,几秒钟就安装完了

    1. 在当前 /opt/redis/myredis下执行
    • docker-compose up -d

    • 完成后通过docker ps查看容器是否已经启动

    • 通过docker-composer logs -f 查看实时日志(这个很重要,我们启动哨兵后,断开master就要在这里看看怎么变化,如果失败则会显示没启动成功的原因,如果成功则会显示监视的主节点是哪个,以及主节点下的从节点有哪些,看不到就完蛋了...)

    【我们可以通过docker stop方式关闭redis容器,但是最好不要直接关机,因为直接关机的话,当前机器上的哨兵也没了,我这边就出现了一台从机变为主机,但是另一台从机仍然认为已经宕机的节点作为自己的主节点!】

    整个要先启动redis节点,节点全部启动完毕后再启动哨兵!

    如果要搭建不要密码的,那么把redis配置中masterauth 与 requirepass去掉,把sentinel配置中sentinet auth-pass去掉即可,当然还是建议要配置密码的,要不然很不安全!

  • 相关阅读:
    算法:归并排序
    算法:希尔排序
    算法:插入排序
    算法:冒泡排序
    算法:选择排序
    jQuery
    (二)多线程之开启线程的两种方式
    (一)多线程之线程理论
    (四)多进程之队列与生产者消费者模型
    (三)多进程之守护进程与互斥锁
  • 原文地址:https://www.cnblogs.com/ningxinjie/p/14586623.html
Copyright © 2011-2022 走看看