• Docker搭建redis集群


    Docker搭建redis

    1. 前言

    之前介绍了用docker来搭建redis主从环境,但这只是对数据添加了从库备份(主从复制),当主库down掉的时候,从库是不会自动升级为主库的,也就是说,该redis主从集群并非是高可用的。

    目前来说,高可用(主从复制、主从切换)redis集群有两种方案,一种是redis-sentinel,只有一个master,各实例数据保持一致;一种是redis-cluster,也叫分布式redis集群,可以有多个master,数据分片分布在这些master上。

    本文介绍基于docker和redis-sentinel的高可用redis集群搭建,大多数情况下,redis-sentinel也需要做高可用,这里先对redis搭建一主二从环境,另外需要3个redis-sentinel监控redis master。

    1. 系统环境

    Linux centOS 7

    1. 相关了解

    首先,我们需要理论知识:Redis Cluster是Redis的分布式解决方案,它解决了redis单机中心化的问题,分布式数据库——首要解决把整个数据集按照分区规则映射到多个节点的问题。

    这边就需要知道分区规则——哈希分区规则。Redis Cluster 采用哈希分区规则中的虚拟槽分区。所有的键根据哈希函数映射到0 ~ 16383,计算公式:slot = CRC16(key)&16383。每一个节点负责维护一部分槽以及槽所映射的键值数据。

    1. 搭建开始
      1. 镜像中心

    使用网易蜂巢的镜像中心地址:https://c.163.com/hub#/m/home/

      1. Redis集群搭建

    安装命令 : docker pull hub.c.163.com/library/redis:latest

    方式1 不指定redis.conf

    1. 主库

    # 运行服务

    docker run -it --name (容器名称) -d -p 6300:6379 (镜像名) redis-server --requirepass 新密码

    测试连接

    docker exec -it (容器名) redis-cli -a

    1. 从库

    # 运行服务

    docker run -it --name redis-slave -d -p 6301:6379 redis redis-server --requirepass slavepassword # 设定从库密码,可选

    # 测试连接redis

    docker exec -it (容器名) redis-cli

    3)主从配置

    输入命令 docker ps找到redis 的容器id

    输入命令 docker inspect (容器id 可以多个 空格隔开) | grep IPAd 查看各个容器的服务ip

    由上图可以看出172.18.0.5 与 172.18.0.7 为从库ip,172.18.0.4为主库ip

    进入从库容器 docker exec -it (容器名) redis-cli -a 密码

    若出现上图中的报错,说明需要输入密码auth

    绑定主从关系slaveof 。

    为主库服务ip,表示主库所在端口,默认6379

    设置认证密码config set masterauth 。

    即为主库访问密码

    测试 info replication

    从库

    进入主库查看

    方式2 指定redis.conf

    下载redis.conf 到指定位置

    wget http://download.redis.io/redis-stable/redis.conf /opt/docker-volume/redis

    复制改名

    编辑 vim 文件名

    1. 修改主库redis-master.conf

    – 注释bind 127.0.0.1

    # bind 127.0.0.1,表示任意ip可连 或者 改为 bind 0.0.0.0

    – 让redis服务后台运行

    daemonize yes

    – 设定密码

    requirepass ido85_123

    1. 修改从库redis-slave.conf

    – 注释bind 127.0.0.1

    # bind 127.0.0.1 或者 改为 bind 0.0.0.0

    – 让redis服务后台运行

    daemonize yes

    – 从库密码,可选配置

    requirepass slavepassword

    – 配置配置主从关系

    slaveof

    表示主库所在的ip,而则表示主库启动的端口,默认是6379

    – 当主库有密码时必需要配置

    masterauth

    代表主库的访问密码

    1. 运行配置

    master(主库)

    # 运行服务

    docker run -it --name redis-master -v /opt/docker-volume/redis/redis-master.conf:/usr/local/etc/redis/redis.conf -d -p 6379:6379 redis /bin/bash

    # 进入容器

    docker exec -it redis-master bash

    # 加载配置

    redis-server /usr/local/etc/redis/redis.conf

    # 测试连接

    redis-cli -a

    slave(从库)

    # 运行服务

    docker run -it --name redis-slave -v /opt/docker-volume/redis/redis-slave.conf:/usr/local/etc/redis/redis.conf -d -p 6380:6379 redis /bin/bash

    # 进入容器

    docker exec -it redis-slave bash

    # 加载配置

    redis-server /usr/local/etc/redis/redis.conf

    # 测试连接

    redis-cli

    # 密码认证

    auth

    1. 参考网站

    https://blog.csdn.net/qq_28804275/article/details/80907796

    https://blog.csdn.net/javasun608/article/details/79512966

    https://www.imooc.com/article/48697 (没有试过,需要些脚本 )

  • 相关阅读:
    从零开始搭建属于自己的物联网平台(一)需求分析以及架构设计
    SpringBoot自动配置原理
    如何在Excel中使用SQL语言?
    入门力扣自学笔记164 C++ (题目编号:面试题 01.08)
    Slf4j(门面)
    Java生成SSL证书
    【历史上的今天】8 月 31 日:人工智能起源;GPU 诞生;Windows 98 中文版来了
    轻松快速搭建一个本地的语音合成服务
    [21天学习挑战赛——内核笔记](六)——在debugfs中添加一个调试目录
    超详细配置Marktext的Picgo-Core图片上传到七牛云图床
  • 原文地址:https://blog.csdn.net/emgexgb_sef/article/details/126327579