Centos Docker部署Redis集群三主三从

一、安装Docker

yum install docker-engine

二、编辑节点配置文件

  1. 创建文件夹

    shell 复制代码
    cd /home
    # 节点一:6370端口
    mkdir -p redis-cluster/redis-6370/conf
    mkdir -p redis-cluster/redis-6370/data
    # 节点二:6371端口
    mkdir -p redis-cluster/redis-6371/conf
    mkdir -p redis-cluster/redis-6371/data
    # 节点三:6372端口
    mkdir -p redis-cluster/redis-6372/conf
    mkdir -p redis-cluster/redis-6372/data
    # 节点四:6373端口
    mkdir -p redis-cluster/redis-6373/conf
    mkdir -p redis-cluster/redis-6373/data
    # 节点五:6374端口
    mkdir -p redis-cluster/redis-6374/conf
    mkdir -p redis-cluster/redis-6374/data
    # 节点六:6375端口
    mkdir -p redis-cluster/redis-6375/conf
    mkdir -p redis-cluster/redis-6375/data
  2. 编辑配置文件

vim redis-cluster/redis-6370/conf/redis.conf

配置文件内容(6个节点及目录内的配置文件,都可以下面配置为模板,更改端口号和集群通信端口号即可):

properties 复制代码
# 端口号
port 6370

# 设置客户端连接后进行任何其他指定前需要使用的密码
requirepass 123456
## 当master服务设置了密码保护时(用requirepass制定的密码)
# slav服务连接master的密码
masterauth 123456

# daemonize no 将daemonize yes注释起来或者 daemonize no设置,因为该配置和docker run中-d参数冲突,会导致容器一直启动失败
daemonize no

# 任何主机都可以连接到redis
bind 0.0.0.0

# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。
protected-mode no

# 开启AOF
appendonly yes

# 集群开关,如果配置yes则开启集群功能,此redis实例作为集群的一个节点,否则,它是一个普通的单一的redis实例。
cluster-enabled yes

# 集群配置文件的名称,此配置文件不能人工编辑,它是集群节点自动维护的文件,主要用于记录集群中有哪些节点、他们的状态以及一些持久化参数等,方便在重启时恢复这些状态。通常是在收到请求之后这个文件就会被更新。
cluster-config-file nodes.conf

# 节点互连超时的阀值。集群节点超时毫秒数
cluster-node-timeout 15000

# 以下三个配置参数静态设定节点的运行参数, 包括对外IP, 普通Redis命令端口和集群桥接端口

# Redis Cluster 不支持NATted环境和IP地址或TCP端口被重映射(remapped)的环境。
# Docker使用一种名叫port mapping的技术, 运行于Docker容器内的程序实际对外使用的端口和监听的端口可不相同. 为了让Docker 兼容Redis Cluster, 需要使用Docker的host network模式。
#为了使Redis集群在这样的环境中工作,静态每个节点都知道需要其公共地址的配置
cluster-announce-ip 192.168.3.111

# 客户端连接端口
cluster-announce-port 6370

# 总线端口为普通端口port+10000,所谓Cluster bus, 即使用一种二进制协议(binary protocol)进行集群内点对点(node-to-node)通讯, 包括节点失效检测, 配置更新, 故障转移(failover)认证等
cluster-announce-bus-port 6370

三、启动节点

  1. 启动节点一

    shell 复制代码
    docker run -d --name redis-6370 \
    --net host --privileged=true \
    -v /home/redis-cluster/redis-6370/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/redis-cluster/redis-6370/data:/data \
    redis redis-server /etc/redis/redis.conf
  2. 启动节点二

    shell 复制代码
    docker run -d --name redis-6371 \
    --net host --privileged=true \
    -v /home/redis-cluster/redis-6371/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/redis-cluster/redis-6371/data:/data \
    redis redis-server /etc/redis/redis.conf
  3. 启动节点三

    shell 复制代码
    docker run -d --name redis-6372 \
    --net host --privileged=true \
    -v /home/redis-cluster/redis-6372/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/redis-cluster/redis-6372/data:/data \
    redis redis-server /etc/redis/redis.conf
  4. 启动节点四

    shell 复制代码
    docker run -d --name redis-6373 \
    --net host --privileged=true \
    -v /home/redis-cluster/redis-6373/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/redis-cluster/redis-6373/data:/data \
    redis redis-server /etc/redis/redis.conf
  5. 启动节点五

    shell 复制代码
    docker run -d --name redis-6374 \
    --net host --privileged=true \
    -v /home/redis-cluster/redis-6374/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/redis-cluster/redis-6374/data:/data \
    redis redis-server /etc/redis/redis.conf
  6. 启动节点六

    shell 复制代码
    docker run -d --name redis-6375 \
    --net host --privileged=true \
    -v /home/redis-cluster/redis-6375/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/redis-cluster/redis-6375/data:/data \
    redis redis-server /etc/redis/redis.conf

四、配置集群

  1. 进入一个节点容器

    docker exec -it redis-6370 bash

  2. 配置集群节点

    shell 复制代码
    redis-cli -a 123456 --cluster create 192.168.3.111:6370 192.168.3.111:6371 192.168.3.111:6372 192.168.3.111:6373 192.168.3.111:6374 192.168.3.111:6375 --cluster-replicas 1

五、验证集群节点

复制代码
redis-cli -h 192.168.3.111 -p 6370 -a 123456
cluster nodes
相关推荐
xrkhy19 分钟前
Linux系统的CentOS7发行版安装MySQL80
linux·mysql·centos
ReadThroughLife2 小时前
【已解决】MACOS M4 芯片使用 Docker Desktop 工具安装 MICROSOFT SQL SERVER
microsoft·macos·docker·容器
KrityCat2 小时前
阿里云Alibaba Cloud安装Docker与Docker compose【图文教程】
阿里云·docker·容器
Villiam_AY2 小时前
redis主从复制
数据库·redis·缓存
{⌐■_■}2 小时前
【ubuntu】虚拟机安装配置,sh脚本自动化,包含 apt+时间同步+docker+mysql+redis+pgsql
ubuntu·docker·自动化
1.01^10006 小时前
[3-02-01].第13节:三方整合 - Jedis客户端操作Redis
redis
藥瓿亭10 小时前
K8S认证|CKS题库+答案| 9. 网络策略 NetworkPolicy
linux·运维·docker·云原生·容器·kubernetes·cks
LFloyue10 小时前
Linux离线(zip方式)安装docker
linux·docker
开航母的李大11 小时前
【中间件】Web服务、消息队列、缓存与微服务治理:Nginx、Kafka、Redis、Nacos 详解
前端·redis·nginx·缓存·微服务·kafka
yunken2812 小时前
docker容器保存为不依赖基础镜像的独立镜像方法
java·docker·容器