• (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)


    参考并感谢

    下载redis镜像(不带tag标签则表示下载latest版本)

    docker pull redis
    

    从github 下载最新的redis.conf,注意重要参数

    # 端口
    port 6379
    # 密码
    requirepass Mypwd@123456
    # 支持数据持久化
    appendonly yes
    # 关闭守护进程
    daemonize no
    # 默认多少个数据库
    databases 16
    
    # 从库时需要增加主库配置
    # 主库密码(一个集群密码需要保持一致)
    masterauth Mypwd@123456
    # 主库地址和端口
    slaveof 172.17.0.1 6379
    
    

    启动 redis6379 主库

    docker run -d 
    -p 6379:6379 
    --name redis6379 
    --mount type=bind,source=/var/docker/configs/redis/6379/redis.conf,target=/usr/local/etc/redis/redis.conf 
    --mount type=bind,source=/var/docker/datas/redis/6379,target=/data 
    --restart always 
    redis:latest 
    redis-server /usr/local/etc/redis/redis.conf
    

    启动 redis6380 从库(需要修改redis.conf的port和从服务器相关配置)

    docker run -d 
    -p 6380:6380 
    --name redis6380 
    --mount type=bind,source=/var/docker/configs/redis/6380/redis.conf,target=/usr/local/etc/redis/redis.conf 
    --mount type=bind,source=/var/docker/datas/redis/6380,target=/data 
    --restart always 
    redis:latest 
    redis-server /usr/local/etc/redis/redis.conf
    

    启动 redis6381 从库(需要修改redis.conf的port和从服务器相关配置)

    docker run -d 
    -p 6381:6381 
    --name redis6381 
    --mount type=bind,source=/var/docker/configs/redis/6381/redis.conf,target=/usr/local/etc/redis/redis.conf 
    --mount type=bind,source=/var/docker/datas/redis/6381,target=/data 
    --restart always 
    redis:latest 
    redis-server /usr/local/etc/redis/redis.conf
    

    从github 下载最新的sentinel.conf,注意重要参数

    # 端口
    port 26379
    # 关闭守护进程
    daemonize no
    # 设定监听的redis集群的名称(mymaster)+IP+主库端口+最少从库数量
    sentinel monitor mymaster 172.17.0.1 6379 2
    # 设定监听的redis集群的密码(集群中主库和从库密码需要保持一致)
    sentinel auth-pass mymaster Mypwd@123456
    

    开放redis和sentinel端口并立即生效

    firewall-cmd --zone=public --add-port=6379/tcp --permanent
    firewall-cmd --zone=public --add-port=6380/tcp --permanent
    firewall-cmd --zone=public --add-port=6381/tcp --permanent
    firewall-cmd --zone=public --add-port=26379/tcp --permanent
    firewall-cmd --zone=public --add-port=26380/tcp --permanent
    firewall-cmd --zone=public --add-port=26381/tcp --permanent
    firewall-cmd --reload
    

    不修改redis.conf,通过命令方式使从库加入集群

    docker exec -it redis6380 bash
    redis-cli -a Mypwd@123456 -p 6380
    slaveof 172.17.0.1 6379
    config set masterauth Mypwd@123456
    
    docker exec -it redis6381 bash
    redis-cli -a Mypwd@123456 -p 6381
    slaveof 172.17.0.1 6379
    config set masterauth Mypwd@123456
    

    主容器查询集群状态

    docker exec -it redis6379 bash
    redis-cli -a Mypwd@123456 -p 6379
    info Replication
    

    查看哨兵监控情况(不同的哨兵登录不同的容器使用客户端26379 26380 26381)

    redis-cli -p 26379
    # 查看集群主库情况
    sentinel master mymaster
    # 查看集群从库情况
    sentinel slaves mymaster
    

    从库退出集群并保持原先数据(通过bash登录从库容器后,使用redis-cli客户端)

    slaveof no one
    

    验证哨兵模式+集群是否高可用(通过bash登录从库容器后,使用redis-cli客户端)

    redis-cli -a Mypwd@123456 -p 6379 DEBUG sleep 60
    

    PS:
    启动容器之前,需要创建好对应的宿主机的文件目录,宿主机缺少文件会导致容器启动失败

    《(六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)》CSDN地址:https://blog.csdn.net/madmarszff/article/details/100902662

    《(六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)》博客园地址:https://www.cnblogs.com/godzff/p/11530290.html

    《(六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)》简书地址:

  • 相关阅读:
    黑马程序员JAVA高级视频_IO输入与输出18天2(FileWriter)
    黑马程序员JavaAPI17天5(集合转成数组)
    黑马程序员JAVA高级视频_IO输入与输出19天4(MyBufferedReader)
    android 取消webview的背景色
    DLNA
    Android JNI的若干问题总结
    gcc 一些应用
    如何基于nand flash启动Linux内核(分享一段实用、简单、类似bootloader功能的代码)
    Android JNI开发高级篇有关Android JNI开发中比较强大和有用的功能就是从JNI层创建、构造Java的类或执行Java层的方法获取属性等操作。 一、类的相关操作 1. jclass FindClass(JNIEnv *env, const char *name);
    ubuntu 配置ndk
  • 原文地址:https://www.cnblogs.com/godzff/p/11530290.html
Copyright © 2020-2023  润新知