前言

如果你也因为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. 使用 MRKL 系统跨越神经符号鸿沟

    本文展示了自然语言处理的下一步发展--模块化推理.知识和语言( the Modular Reasoning, Knowledge and Language,简称为MRKL)系统以及LangChain和 ...

  2. Django 14天从小白到进阶- Day1 Django 初识

    来自作者:金角大王 本节内容 Http原理介绍 自行开发一个Web框架 WSGI介绍 Django介绍 MVC/MTV Django安装 创建项目与APP 开发第一个页面 为什么学Django? Go ...

  3. uni-app 运行项目

    运行-运行到浏览器-选择浏览器 运行新项目:真机测试需要打开真机的开发者选项usb安装调试功能

  4. getattr函数

    函数说明 getattr(object, name, default=None) object:类实例 name:str 属性名 default:str 如果没有查找到,用该值替代 用法实现反射,主要 ...

  5. 程序员的 Windows 工具箱「GitHub 热点速览」

    如何精简 Windows 并快速配置开发环境呢?本周特推的 winutil 是一个程序员的 Windows 工具箱,它提供了开发工具的一键安装以及减少系统垃圾的功能,一切为了简洁.高效.同样高效的还有 ...

  6. springboot 项目国际化+登录拦截器

    项目页面国际化 1.语言配置文件 需要下载插件Resource Bundle Editor 新建国际目录i18n 在properties配置文件中自定义 2.前端index页面要设置语言参数传递给后端 ...

  7. K2C V21.4.6.12刷breed教程

    K2C V21.4.6.12刷breed教程(刷机方法源自qiao99) 原贴地址:K2C V21.4.6.12刷breed记录 http://www.right.com.cn/forum/threa ...

  8. django中有关登陆验证的LoginRequiredMixin类

    通常情况判断一个用户是否登陆可以使用 request.user.is_is_authenticate(),就可以完成,返回结果TRUE或者FALSE class UserCenterInfoView( ...

  9. odoo开发教程九:Odoo10 API

    一:纪录集API model中的数据是以集合的形式使用的,因此可以使用集合运算来操作. 集合运算符 record in set返回record是否在set中,record须为单条记录,record n ...

  10. Spectre.Console-实现自己的CLI

    引言 最近发现自己喜欢用的 Todo 软件总是差点意思,毕竟每个人的习惯和工作流不太一样,我就想着自己写一个小的Todo 项目,核心的功能是自动记录 Todo 执行过程中消耗的时间(尤其面向程序员), ...