前言

如果你也因为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. 开发 Diffusers 库的道德行为指南

    我们正在努力让我们每次发布的库更加负责! 我们很荣幸宣布我们发布了 道德守则,并将作为一部分其放入  Diffusers 库的说明文档. 由于扩散模型在现实世界上的实际应用例子会对社会造成潜在的负面影 ...

  2. JavaScript 如何判断一个对象中是否有某个属性?

    今天讲讲,JavaScript 如何判断一个对象中是否有某个属性? 我总结了5个方法: 方法1: if(Obj[a]) {} 缺点:对于参数值为 undefined 和 0 的无效. 方法2: if( ...

  3. 2023-02-16:两种颜色的球,蓝色和红色,都按1~n编号,共计2n个, 为方便放在一个数组中,红球编号取负,篮球不变,并打乱顺序, 要求同一种颜色的球按编号升序排列,可以进行如下操作: 交换相邻

    2023-02-16:两种颜色的球,蓝色和红色,都按1-n编号,共计2n个, 为方便放在一个数组中,红球编号取负,篮球不变,并打乱顺序, 要求同一种颜色的球按编号升序排列,可以进行如下操作: 交换相邻 ...

  4. 2020-11-04:java里,总体说一下集合框架。

    福哥答案2020-11-04: 福哥口诀法:收马李色坤(Collection.Map.List.Set.Queue).李矢数链写(List:Vector矢量.ArrayList数组.LinkedLis ...

  5. 2022-05-28:某公司计划推出一批投资项目。 product[i] = price 表示第 i 个理财项目的投资金额 price 。 客户在按需投资时,需要遵循以下规则: 客户在首次对项目 pr

    2022-05-28:某公司计划推出一批投资项目. product[i] = price 表示第 i 个理财项目的投资金额 price . 客户在按需投资时,需要遵循以下规则: 客户在首次对项目 pr ...

  6. 2021-08-12:约瑟夫环问题。给定一个链表头节点head,和一个正数m,从头开始,每次数到m就杀死当前节点 ,然后被杀节点的下一个节点从1开始重新数, 周而复始直到只剩一个节点,返回最后的节点。

    2021-08-12:约瑟夫环问题.给定一个链表头节点head,和一个正数m,从头开始,每次数到m就杀死当前节点 ,然后被杀节点的下一个节点从1开始重新数, 周而复始直到只剩一个节点,返回最后的节点. ...

  7. Django接入SwaggerAPI接口文档-完整操作(包含错误处理)

    Swagger的简介: Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务,在做后端开发的同时自动生成一个API文档供前端查看,当接口有变动时,对应的接口 ...

  8. 【CF】873B Balanced Substring(前缀和+map)

    Balanced Substring 刚讲过差分与前缀和专题,一直以为这两个名词很高大上,其实也就那回事.哈哈. 题源:https://codeforces.com/contest/873/probl ...

  9. LeetCode刷题,代码随想录算法训练营Day3| 链表理论基础 203.移除链表元素 707.设计链表 206.反转链表

    链表理论基础 链表是通过指针串联在一起的线性结构,每个节点由一个数据域和一个指针域构成. 链表的类型 单链表 双链表 有两个指针域,一个指向下一个节点,一个指向上一个节点,既可以向前查询也可以向后查询 ...

  10. 新版idea快捷键总结学习----(用于java开发模式)

    选择代码区 ctrl w 如果放到以if开头的语句,可以选择if判断条件所在的代码片段 游标在单个单词下时 选择单词 在选中多个单词时,选择整个字符串 三次点击时,如果不在字符串单词下,用于选择{}内 ...