Docker搭建Redis Cluster高可用集群

前言

  • 本文介绍如何使用docker-compose部署Redis Cluster高可用集群。

一、指定安装目录

cd /home/app/redis-cluster

二、创建模板,redis-cluster.tmpl

作者主机ip为192.168.1.20

vim redis-cluster.tmpl
port ${PORT} 
protected-mode no 
cluster-enabled yes 
cluster-config-file nodes.conf 
cluster-node-timeout 5000
cluster-announce-ip 192.168.1.20
cluster-announce-port ${PORT} 
cluster-announce-bus-port 1${PORT} 
appendonly yes

三、创建容器卷标目录, vim redis-cluster-init.sh

  • 创建执行脚本
vim redis-cluster-init.sh
#!/bin/bash
for  port  in  {7100..7105};  do
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
  • 赋权(读写执行)并执行
chmod 777  redis-cluster-init.sh
./redis-cluster-init.sh
  • 查看执行结果
[root@localhost redis-cluster]# ls 71*
7100:
conf  data

7101:
conf  data

7102:
conf  data

7103:
conf  data

7104:
conf  data

7105:
conf  data

四、创建docker-compose文件

vim redis-cluster.yml
version: '3.4'
services:
  redis-7100:
    image: redis:5.0.6
    container_name: redis-7100
    restart: always
    sysctls:
      - net.core.somaxconn=1024
    ports:
      - 7100:7100
      - 17100:17100
    volumes:
      - /home/app/redis-cluster/7100/data:/data
      - /home/app/redis-cluster/7100/conf/redis.conf:/usr/local/etc/redis/redis.conf
    command:
      redis-server /usr/local/etc/redis/redis.conf
    networks:
      - redisNet
       
  redis-7101:
    image: redis:5.0.6 
    container_name: redis-7101
    restart: always
    sysctls:
      - net.core.somaxconn=1024
    ports:
      - 7101:7101
      - 17101:17101
    volumes:
      - /home/app/redis-cluster/7101/data:/data
      - /home/app/redis-cluster/7101/conf/redis.conf:/usr/local/etc/redis/redis.conf
    command:
      redis-server /usr/local/etc/redis/redis.conf
    networks:
      - redisNet
       
       
  redis-7102:
    image: redis:5.0.6 
    container_name: redis-7102
    restart: always
    sysctls:
      - net.core.somaxconn=1024
    ports:
      - 7102:7102
      - 17102:17102
    volumes:
      - /home/app/redis-cluster/7102/data:/data
      - /home/app/redis-cluster/7102/conf/redis.conf:/usr/local/etc/redis/redis.conf
    command:
      redis-server /usr/local/etc/redis/redis.conf
    networks:
      - redisNet
       
  redis-7103:
    image: redis:5.0.6 
    container_name: redis-7103
    restart: always
    sysctls:
      - net.core.somaxconn=1024
    ports:
      - 7103:7103
      - 17103:17103
    volumes:
      - /home/app/redis-cluster/7103/data:/data
      - /home/app/redis-cluster/7103/conf/redis.conf:/usr/local/etc/redis/redis.conf
    command:
      redis-server /usr/local/etc/redis/redis.conf
    networks:
      - redisNet
       
  redis-7104:
    image: redis:5.0.6 
    container_name: redis-7104
    restart: always
    sysctls:
      - net.core.somaxconn=1024
    ports:
      - 7104:7104
      - 17104:17104
    volumes:
      - /home/app/redis-cluster/7104/data:/data
      - /home/app/redis-cluster/7104/conf/redis.conf:/usr/local/etc/redis/redis.conf
    command:
      redis-server /usr/local/etc/redis/redis.conf
    networks:
      - redisNet

  redis-7105:
    image: redis:5.0.6 
    container_name: redis-7105
    restart: always
    sysctls:
      - net.core.somaxconn=1024
    ports:
      - 7105:7105
      - 17105:17105
    volumes:
      - /home/app/redis-cluster/7105/data:/data
      - /home/app/redis-cluster/7105/conf/redis.conf:/usr/local/etc/redis/redis.conf
    command:
      redis-server /usr/local/etc/redis/redis.conf
    networks:
      - redisNet
      
networks:
  redisNet:

五、创建集群(基于docker-compose)

创建并启动Redis容器

 docker-compose -f redis-cluster.yml up -d

输出结果:
Creating redis-7100 … done
Creating redis-7103 … done
Creating redis-7102 … done
Creating redis-7101 … done
Creating redis-7105 … done
Creating redis-7104 … done

创建Redis集群

进入redis容器

docker exec -it redis-7100 bash

执行集群创建命令

redis-cli --cluster create  \
 192.168.1.20:7100 \
 192.168.1.20:7101 \
 192.168.1.20:7102 \
 192.168.1.20:7103 \
 192.168.1.20:7104 \
 192.168.1.20:7105 \
 --cluster-replicas 1 

输出结果
Nodes configuration updated
Assign a different config epoch to each node
Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join


[OK] All nodes agree about slots configuration.
Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.

六、使用图形化客户端连接并测试

示范使用:Redis Desktop Manager

  • 连接集群,选中集群重定向
    在这里插入图片描述
    在这里插入图片描述

  • 写入key(写入id:1,2,3,4 四条数据)
    在这里插入图片描述

  • key分配情况

    • 7100
    127.0.0.1:7100> KEYS *
    1) "id:3"
    2) "id:2"
    
    • 7101
    127.0.0.1:7101> KEYS *
    1) "id:1"
    
    • 7102
    127.0.0.1:7102> KEYS *
    1) "id:4"
    
  • 集群信息

127.0.0.1:7100> cluster nodes
29646a0fea0c240e99e0a1dd8bfbb628b50157a6 192.168.1.20:7100@17100 myself,master - 0 1611632308000 10 connected 0-5460
838f9840752e3181f1935c51f02776a939d719f3 192.168.1.20:7101@17101 master - 0 1611632309000 11 connected 5461-10922
f16f768033ad45b6f568a2d2eefb5bfcafb93cc8 192.168.1.20:7103@17103 slave 7dae7a823fab96eccae6419b9c7f1069c4224ad7 0 1611632308742 12 connected
3133864096a02251163689b8973200b2542e2a26 192.168.1.20:7105@17105 slave 838f9840752e3181f1935c51f02776a939d719f3 0 1611632309000 11 connected
9cd737a321d9b2c73d49c9d921c420cb7a7ad64b 192.168.1.20:7104@17104 slave 29646a0fea0c240e99e0a1dd8bfbb628b50157a6 0 1611632308000 10 connected
7dae7a823fab96eccae6419b9c7f1069c4224ad7 192.168.1.20:7102@17102 master - 0 1611632309744 12 connected 10923-16383
  • Stop master-7101节点, 7105被选举为新的master节点
127.0.0.1:7100> cluster nodes
29646a0fea0c240e99e0a1dd8bfbb628b50157a6 192.168.1.20:7100@17100 myself,master - 0 1611632480000 10 connected 0-5460
838f9840752e3181f1935c51f02776a939d719f3 192.168.1.20:7101@17101 master,fail - 1611632464852 1611632463246 11 disconnected
f16f768033ad45b6f568a2d2eefb5bfcafb93cc8 192.168.1.20:7103@17103 slave 7dae7a823fab96eccae6419b9c7f1069c4224ad7 0 1611632480334 12 connected
3133864096a02251163689b8973200b2542e2a26 192.168.1.20:7105@17105 master - 0 1611632479000 13 connected 5461-10922
9cd737a321d9b2c73d49c9d921c420cb7a7ad64b 192.168.1.20:7104@17104 slave 29646a0fea0c240e99e0a1dd8bfbb628b50157a6 0 1611632480837 10 connected
7dae7a823fab96eccae6419b9c7f1069c4224ad7 192.168.1.20:7102@17102 master - 0 1611632479329 12 connected 10923-16383
  • Start 7101节点, 7101成为slave节点
127.0.0.1:7100> cluster nodes
29646a0fea0c240e99e0a1dd8bfbb628b50157a6 192.168.1.20:7100@17100 myself,master - 0 1611632607000 10 connected 0-5460
838f9840752e3181f1935c51f02776a939d719f3 192.168.1.20:7101@17101 slave 3133864096a02251163689b8973200b2542e2a26 0 1611632608000 13 connected
f16f768033ad45b6f568a2d2eefb5bfcafb93cc8 192.168.1.20:7103@17103 slave 7dae7a823fab96eccae6419b9c7f1069c4224ad7 0 1611632607920 12 connected
3133864096a02251163689b8973200b2542e2a26 192.168.1.20:7105@17105 master - 0 1611632606918 13 connected 5461-10922
9cd737a321d9b2c73d49c9d921c420cb7a7ad64b 192.168.1.20:7104@17104 slave 29646a0fea0c240e99e0a1dd8bfbb628b50157a6 0 1611632607000 10 connected
7dae7a823fab96eccae6419b9c7f1069c4224ad7 192.168.1.20:7102@17102 master - 0 1611632607519 12 connected 10923-16383
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值