前言

如果你也因为centos的gcc版本落后导致redis编译安装不通过而烦恼,大可以试一试用docker去搭建redis集群。本文以单节点搭建redis-cluster三主三从为例。

  • ip:192.168.0.10
  • redis信息:
    • 客户端连接端口:7001 -7006
    • 集群间通信端口:17001 - 17006
    • 密码:123456
  • 版本:
    • docker:18.06
    • docker-compose:1.24
    • redis:6.2.4
    • centos: 7.4

准备

  1. 下载redis镜像
docker pull redis:6.2.4
  1. 准备redis的配置文件:redis.conf。主要修改端口和ip
port 7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
appendonly yes
protected-mode no
requirepass 123456
masterauth 123456
cluster-announce-ip 192.168.0.10
cluster-announce-port 7001
cluster-announce-bus-port 17001
  1. 准备持久化目录
mkdir -p /home/web/redis
cd /home/web/redis
for i in $(seq 7001 7006); do mkdir -p /home/web/redis/node_${i}/{conf,data};done
# 或者: for i in $(seq 7001 7006); do mkdir -p ./node_${i}/{conf,data};done # 假设redis.conf在 /home/web/redis,且当前目录为/home/web/redis
for i in $(seq 7001 7006); do sed "s/7001/${i}/g" /home/web/redis/redis.conf > /home/web/redis/node_${i}/conf/redis.conf;done
# 或者: for i in $(seq 7001 7006); do sed "s/7001/${i}/g" ./redis.conf > ./node_${i}/conf/redis.conf;done

配置docker-compose.yaml

  1. 编写docker-compose.yaml(注意路径、密码、IP和端口号)
version: "3"

# 定义服务,可以多个
services:
redis-7001: # 服务名称
image: redis:6.2.4 # 创建容器时所需的镜像
container_name: redis-7001 # 容器名称
restart: always # 容器总是重新启动
volumes: # 数据卷,目录挂载
- /home/web/redis/node_7001/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /home/web/redis/node_7001/data:/data
ports:
- 7001:7001
- 17001:17001
command:
redis-server /usr/local/etc/redis/redis.conf redis-7002: # 服务名称
image: redis:6.2.4 # 创建容器时所需的镜像
container_name: redis-7002 # 容器名称
restart: always # 容器总是重新启动
volumes: # 数据卷,目录挂载
- /home/web/redis/node_7002/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /home/web/redis/node_7002/data:/data
ports:
- 7002:7002
- 17002:17002
command:
redis-server /usr/local/etc/redis/redis.conf redis-7003: # 服务名称
image: redis:6.2.4 # 创建容器时所需的镜像
container_name: redis-7003 # 容器名称
restart: always # 容器总是重新启动
volumes: # 数据卷,目录挂载
- /home/web/redis/node_7003/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /home/web/redis/node_7003/data:/data
ports:
- 7003:7003
- 17003:17003
command:
redis-server /usr/local/etc/redis/redis.conf redis-7004: # 服务名称
image: redis:6.2.4 # 创建容器时所需的镜像
container_name: redis-7004 # 容器名称
restart: always # 容器总是重新启动
volumes: # 数据卷,目录挂载
- /home/web/redis/node_7004/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /home/web/redis/node_7004/data:/data
ports:
- 7004:7004
- 17004:17004
command:
redis-server /usr/local/etc/redis/redis.conf redis-7005: # 服务名称
image: redis:6.2.4 # 创建容器时所需的镜像
container_name: redis-7005 # 容器名称
restart: always # 容器总是重新启动
volumes: # 数据卷,目录挂载
- /home/web/redis/node_7005/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /home/web/redis/node_7005/data:/data
ports:
- 7005:7005
- 17005:17005
command:
redis-server /usr/local/etc/redis/redis.conf redis-7006: # 服务名称
image: redis:6.2.4 # 创建容器时所需的镜像
container_name: redis-7006 # 容器名称
restart: always # 容器总是重新启动
volumes: # 数据卷,目录挂载
- /home/web/redis/node_7006/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /home/web/redis/node_7006/data:/data
ports:
- 7006:7006
- 17006:17006
command:
redis-server /usr/local/etc/redis/redis.conf
  1. 启动
docker-compose -f ./docker-compose.yaml up -d
# 如果docker-compose.yaml文件在当前路径:
# docker-compose up -d

搭建集群

  1. 进入任意一个redis容器
docker exec -it redis-7001 bash
  1. 创建集群
# 注意IP、端口号和密码
echo -e 'yes' | redis-cli -a 123456 --cluster create 192.168.0.10:7001 192.168.0.10:7002 192.168.0.10:7003 192.168.0.10:7004 192.168.0.10:7005 192.168.0.10:7006 --cluster-replicas 1
  1. 检查集群状态
# 查看集群状态
redis-cli -a 123456 -h 192.168.0.10 -p 7001 cluster info
# 查看集群节点
redis-cli -a 123456 -h 192.168.0.10 -p 7001 cluster nodes

使用docker-compose搭建redis-cluster集群的更多相关文章

  1. Docker Compose 搭建 Redis Cluster 集群环境

    在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...

  2. Docker 搭建 Redis Cluster 集群环境

    使用 Docker 搭建 Redis Cluster,最重要的环节就是容器通信的问题,这一块我们在之前的文章中已经给大家解决了<Docker 网络模式详解及容器间网络通信>,本篇文章主要练 ...

  3. 【精】搭建redis cluster集群,JedisCluster带密码访问【解决当中各种坑】!

    转: [精]搭建redis cluster集群,JedisCluster带密码访问[解决当中各种坑]! 2017年05月09日 00:13:18 冉椿林博客 阅读数:18208  版权声明:本文为博主 ...

  4. docker下创建redis cluster集群

    概述 在Redis中,集群的解决方案有三种 主从复制 哨兵机制 Cluster Redis Cluster是Redis的分布式解决方案,在 3.0 版本正式推出. 准备工作 1.确定本机IP地址 2. ...

  5. 搭建redis cluster集群服务

    redis 5.0以下为ruby编写,运行命令时需要安装ruby,而5.0以上则为c编写,可直接安装后运行.因此本文使用redis5.0.5 1.编写配置文件 在 /home 下新建 redis-cl ...

  6. centos6下redis cluster集群部署过程

    一般来说,redis主从和mysql主从目的差不多,但redis主从配置很简单,主要在从节点配置文件指定主节点ip和端口,比如:slaveof 192.168.10.10 6379,然后启动主从,主从 ...

  7. 搭建分布式 Redis Cluster 集群与 Redis 入门

    目录 Redis 集群搭建 Redis 是啥 集群(Cluster) Redis Cluster 说明 Redis Cluster 节点 Redis Cluster 集群模式 不能保证一致性 创建和使 ...

  8. Redis Cluster集群搭建与配置

    Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...

  9. Redis Cluster集群搭建与应用

    1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...

  10. Redis cluster集群:原理及搭建

    Redis cluster集群:原理及搭建 2018年03月19日 16:00:55 阅读数:6120 1.为什么使用redis? redis是一种典型的no-sql 即非关系数据库 像python的 ...

随机推荐

  1. 收藏!最全Linux思维导图

    收藏!最全Linux思维导图 目录 收藏!最全Linux思维导图 1. 认识 Linux 2. Linux 命令 3. Linux学习路径 4. Linux 桌面介绍 5. FHS:文件系统目录标准 ...

  2. SSL 证书安装使用中遇到的常见问题

    为了实现网站HTTPS加密保护及身份的可信认证,防止传输数据的泄露或篡改,SSL证书已被各政企网站广泛应用.然而在部署和使用SSL证书的过程中,我们经常会遇到一些措手不及的问题,一旦处理不当,就会让网 ...

  3. 2021-11-13:至少有 K 个重复字符的最长子串。给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。提示:1

    2021-11-13:至少有 K 个重复字符的最长子串.给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k .返回这一子串的长度.提示:1 ...

  4. Typo in static class property declarationeslint

    eslint 检测提示 Typo in static class property declarationeslint 找了半天原来是propTypes 写成了PropTypes (就是一个首字母大写 ...

  5. 探索JS中this的最终指向

    js 中的this 指向 一直是前端开发人员的一个痛点难点,项目中有很多bug往往是因为this指向不明确(this指向在函数定义时无法确定,只有在函数被调用时,才确定该this的指向为最终调用它的对 ...

  6. 代码随想录算法训练营Day52 动态规划

    代码随想录算法训练营 代码随想录算法训练营Day52 动态规划| 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组 300.最长递增子序列 题目链接:300.最长递增子序列 ...

  7. 免费获取最新WebStorm激活码,永久激活WebStorm

    在互联网上,目前还没有查询到一篇写得比较详细的WebStorm安装和激活教程.今天我将使用WebStorm最新2023年版本,从下载到安装以及创建项目带大家完整的走一遍. 分享的 WebStorm 2 ...

  8. windows内核学习一

    变量类型 kernel user ULONG unsigned long PULONG unsigned long* UCHAR unsigned char PUCHAR unsigned char* ...

  9. .Net Aspose.Words 生成Word文档

    .Net Aspose.Words 生成Word文档 在开发WinForm项目中,有一需求要生成Word文档,百度学习,记录一下实现方法 NuGet包,找到 Aspose.Words 安装 21.8. ...

  10. python3使用pjsua进行呼叫测试

    环境:CentOS 7.6_x64    Python版本 :3.9.12 pjsip版本:2.13   之前写过一篇CentOS7环境编译python3.9版本pjsua的文章: https://w ...