Docker单机部署redis集群

环境:CentOs7

安装docker、docker-compose (docker安装方法compose安装方法

配置信息

ip:192.168.204.10

集群端口:6381、6382、6383、6384、6385、6386

1.创建redis文件夹

mkidr -p /usr/docker/redis-cluster/ #方便管理
mkdir redis-6381
mkdir redis-6382
mkdir redis-6383
mkdir redis-6384
mkdir redis-6385
mkdir redis-6386

 2.将redis.conf拷贝到6381-6386相应的文件夹中,修改redis.conf配置

vi redis-6381/redis.conf 

cluster-enabled yes ##开启集群模式
cluster-config-file nodes.conf ##集群配置文件
cluster-node-timeout 5000  #集群节点多少时间未响应视为该节点丢失
appendonly yes ##开启AOF模式
port 6381 ##redis监听端口
protected-mode no ##默认yes 允许本地访问

————————————————————————————————————————————————————————————————————————

vi redis-6382/redis.conf 

cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
port 6382
protected-mode no

————————————————————————————————————————————————————————————————————————

vi redis-6383/redis.conf 

cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
port 6383
protected-mode no

————————————————————————————————————————————————————————————————————————

vi redis-6384/redis.conf 

cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
port 6384
protected-mode no

————————————————————————————————————————————————————————————————————————

vi redis-6385/redis.conf 

cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
port 6385
protected-mode no

————————————————————————————————————————————————————————————————————————

vi redis-6386/redis.conf 

cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
port 6386
protected-mode no

  3.编写docker-compose.yml文件

[root@broker1 redis-cluster]# vim docker-compose.yml 

version: '3'
services:
  redis-1:
    container_name: redis-1
    image: redis
    ports:
      - 6381:6381
      - 16381:16381
    volumes: 
      - /usr/docker/redis-cluster/redis-6381/data:/data
      - /usr/docker/redis-cluster/redis-6381/redis.conf:/etc/redis/redis.conf
    entrypoint: 
      - redis-server 
      - /etc/redis/redis.conf
       
  redis-2:
    container_name: redis-2
    image: redis
    ports:
      - 6382:6382
      - 16382:16382
    volumes: 
      - /usr/docker/redis-cluster/redis-6382/data:/redis/data
      - /usr/docker/redis-cluster/redis-6382/redis.conf:/etc/redis/redis.conf
    entrypoint: 
      - redis-server 
      - /etc/redis/redis.conf
  redis-3:
    container_name: redis-3
    image: redis
    ports:
      - 6383:6383
      - 16383:16383
    volumes: 
      - /usr/docker/redis-cluster/redis-6383/data:/data
      - /usr/docker/redis-cluster/redis-6383/redis.conf:/etc/redis/redis.conf
    entrypoint: 
      - redis-server 
      - /etc/redis/redis.conf
  redis-4:
    container_name: redis-4
    image: redis
    ports:
      - 6384:6384
      - 16384:16384
    volumes: 
      - /usr/docker/redis-cluster/redis-6384/data:/redis/data
      - /usr/docker/redis-cluster/redis-6384/redis.conf:/etc/redis/redis.conf
    entrypoint: 
      - redis-server 
      - /etc/redis/redis.conf
  redis-5:
    container_name: redis-5
    image: redis
    ports:
      - 6385:6385
      - 16385:16385
    volumes: 
      - /usr/docker/redis-cluster/redis-6385/data:/redis/data
      - /usr/docker/redis-cluster/redis-6385/redis.conf:/etc/redis/redis.conf
    entrypoint: 
      - redis-server 
      - /etc/redis/redis.conf
  redis-6:
    container_name: redis-6
    image: redis
    ports:
      - 6386:6386
      - 16386:16386
    volumes: 
      - /usr/docker/redis-cluster/redis-6386/data:/redis/data
      - /usr/docker/redis-cluster/redis-6386/redis.conf:/etc/redis/redis.conf
    entrypoint: 
      - redis-server 
      - /etc/redis/redis.conf

 注释:

 # 节点1
  redis-1:
    #容器服务名
    container_name: redis-1
    #基础镜像
    image: redis
    #端口映射
    #第一个端口是客户端通信端口 第二个端口为集群总线端口 用于失败检测以及故障转移、选举等 偏移量总是10000
    ports:
      - 6381:6381
      - 16381:16381
    #映射宿主机的数据卷 配置数据目录和配置文件目录 HOST:CONTAINER
    volumes: 
      - /usr/docker/redis-cluster/redis-6381/data:/data
      - /usr/docker/redis-cluster/redis-6381/redis.conf:/etc/redis/redis.conf
    # 设置服务默认的启动程序
    entrypoint: 
      - redis-server 
      - /etc/redis/redis.conf

4.执行compose

[root@broker1 redis-cluster]# docker-compose up -d

执行结果如下

 5.查看容器状态

 6.进入任意容器开启集群模式

[root@broker1 redis-6381]# docker exec -it redis-1 bash
root@3226cce0bd0f:/data# cd /usr/local/bin/
root@3226cce0bd0f:/usr/local/bin# redis-cli --cluster create 192.168.204.10:6381 \
>   192.168.204.10:6382 \
>  192.168.204.10:6383 \
>  192.168.204.10:6384 \
>  192.168.204.10:6385 \
>  192.168.204.10:6386 \
>  --cluster-replicas 1

 注:输入小写yes

出现如下结果开启成功

[OK] All nodes agree about slots configuration.>>>check for open slots. .-
>>>check slots coverage...

[OK] All 16384 slots covered.

7.进入任意节点测试

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你可以通过 Docker Swarm 部署 Redis 集群来实现高可用和负载均衡。下面是一些步骤: 1. 准备 Docker Swarm:首先,需要设置一个 Docker Swarm 环境。在一台机器上运行以下命令以初始化 Swarm: ``` $ docker swarm init ``` 2. 创建网络:创建一个 overlay 网络,以便在 Swarm 中的各个节点之间进行通信。 ``` $ docker network create --driver overlay redis-network ``` 3. 创建 Redis 服务:使用以下命令在 Swarm 中创建 Redis 服务: ``` $ docker service create \ --name redis-cluster \ --network redis-network \ --replicas 6 \ --publish 6379:6379 \ redis:latest \ redis-server --cluster-enabled yes --cluster-require-full-coverage no --cluster-replicas 1 ``` 此命令将创建一个名为 "redis-cluster" 的服务,并在 Swarm 中的6个副本中运行 Redis 容器。每个容器都将监听主机的6379端口,并启用 Redis 集群模式。 4. 创建 Redis 集群:使用以下命令启动 Redis 集群: ``` $ docker exec -it $(docker ps -qf "name=redis-cluster.1.") redis-cli --cluster create <ip1>:6379 <ip2>:6379 <ip3>:6379 <ip4>:6379 <ip5>:6379 <ip6>:6379 --cluster-replicas 1 ``` 其中,<ip1>、<ip2>等是 Redis 容器的 IP 地址。你可以使用 `docker service ls` 和 `docker service ps <service-name>` 命令来获取这些 IP 地址。 5. 验证 Redis 集群:使用以下命令验证 Redis 集群是否正常工作: ``` $ docker exec -it $(docker ps -qf "name=redis-cluster.1.") redis-cli cluster info ``` 你应该能够看到集群的相关信息。 通过这些步骤,你可以在 Docker Swarm 中成功部署 Redis 集群。请确保根据你的需求进行适当的调整,如副本数量和端口映射等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moon-01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值