准备配置文件

bind 0.0.0.0
# redis端口
port ${PORT}
requirepass redispwd
# 关闭保护模式
protected-mode no
# 开启集群
cluster-enabled yes
# 集群节点配置
cluster-config-file nodes.conf
# 超时
cluster-node-timeout 5000
# 集群节点IP host模式为宿主机IP
cluster-announce-ip 这里放宿主机ip
# 集群节点端口 7001 - 7006
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
# 开启 appendonly 备份模式
appendonly yes
# 每秒钟备份
appendfsync everysec
# 对aof文件进行压缩时,是否执行同步操作
no-appendfsync-on-rewrite no
# 当目前aof文件大小超过上一次重写时的aof文件大小的100%时会再次进行重写
auto-aof-rewrite-percentage 100
# 重写前AOF文件的大小最小值 默认 64mb
auto-aof-rewrite-min-size 64mb

集群节点文件生成

for port in `seq 7001 7006`; do \
mkdir -p ./redis-cluster/${port}/conf \
&& PORT=${port} envsubst < ./redis.conf > ./redis-cluster/${port}/conf/redis.conf \
&& mkdir -p ./redis-cluster/${port}/data; \
done

准备 compose 文件

version: "3.1"
services: redis1:
image: redis:5.0.3
container_name: redis1
restart: always
networks:
- test_net
ports:
- 7001:7001
- 17001:17001
volumes:
- ./redis-cluster/7001/conf/redis.conf:/etc/redis/redis.conf
- ./redis-cluster/7001/data:/data
command:
["redis-server", "/etc/redis/redis.conf"] redis2:
image: redis:5.0.3
container_name: redis2
restart: always
networks:
- test_net
ports:
- 7002:7002
- 17002:17002
volumes:
- ./redis-cluster/7002/conf/redis.conf:/etc/redis/redis.conf
- ./redis-cluster/7002/data:/data
command:
["redis-server", "/etc/redis/redis.conf"] redis3:
image: redis:5.0.3
container_name: redis3
restart: always
networks:
- test_net
ports:
- 7003:7003
- 17003:17003
volumes:
- ./redis-cluster/7003/conf/redis.conf:/etc/redis/redis.conf
- ./redis-cluster/7003/data:/data
command:
["redis-server", "/etc/redis/redis.conf"] redis4:
image: redis:5.0.3
container_name: redis4
restart: always
networks:
- test_net
ports:
- 7004:7004
- 17004:17004
volumes:
- ./redis-cluster/7004/conf/redis.conf:/etc/redis/redis.conf
- ./redis-cluster/7004/data:/data
command:
["redis-server", "/etc/redis/redis.conf"] redis5:
image: redis:5.0.3
container_name: redis5
restart: always
networks:
- test_net
ports:
- 7005:7005
- 17005:17005
volumes:
- ./redis-cluster/7005/conf/redis.conf:/etc/redis/redis.conf
- ./redis-cluster/7005/data:/data
command:
["redis-server", "/etc/redis/redis.conf"] redis6:
image: redis:5.0.3
container_name: redis6
restart: always
networks:
- test_net
ports:
- 7006:7006
- 17006:17006
volumes:
- ./redis-cluster/7006/conf/redis.conf:/etc/redis/redis.conf
- ./redis-cluster/7006/data:/data
command:
["redis-server", "/etc/redis/redis.conf"] networks:
test_net:
external: true 配置相对比较简单,需要注意下docker网络,提前创建好(docker network ls 可以查看具体有哪些网络)

redis 集群正式搭建

docker-compose -f '填写上述的compose文件名' up -d

进入启动的端口为7001的容器
docker exec -it container_id bash 集群搭建指令(提前关闭防火墙 iptables -F,也有别的指令,自行百度即可):
redis-cli -p 7001 -a redispwd --cluster create 宿主机ip:7001 宿主机ip:7002 宿主机ip:7003 宿主机ip:7004 宿主机ip:7005 宿主机ip:7006 --cluster-replicas 1 等待集群自行搭建完成即可。

需要说明一下:此处搭建的为伪集群,即同一宿主机,不同端口。

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

  1. 从零开始学习docker之在docker中搭建redis(集群)

    docker搭建redis集群 docker-compose是以多容器的方式启动,非常适合用来启动集群 一.环境准备 云环境:CentOS 7.6 64位 二.安装docker-compose #需要 ...

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

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

  3. docker搭建redis集群和Sentinel,实现故障转移

    0.引言 公司开发需要用到redis,虽然有运维自动搭建,还是记录下如何搭建redis集群和Sentinel. 采用的是vagrant虚拟机+docker的方式进行搭建. 搭建思路: 首先是借鉴下其他 ...

  4. 这次一定要教会你搭建Redis集群和MySQL主从同步(非Docker)

    前言 一直都想自己动手搭建一个Redis集群和MySQL的主从同步,当然不是依靠Docker的一键部署(虽然现在企业开发用的最多的是这种方式),所以本文就算是一个教程类文章吧,但在动手搭建之前,会先聊 ...

  5. docker搭建redis集群

    一.简介 docker作为一个容器技术,在搭建资源隔离性服务上具有很大的优势,在一台服务器上可以启动多个docker容器,感觉每个在容器里面部署的服务就像是部署在不同的服务器上.此次基于docker以 ...

  6. 用Docker构建分布式Redis集群

    [编者的话]本文介绍了如何使用Docker搭建Redis集群,很多读者都在问Docker能带来哪些实质性的好处,我想本文就是一个很好的例子.不使用Docker你也可以搭建Redis集群,那使用Dock ...

  7. Docker快速构建Redis集群(cluster)

    Docker快速构建Redis集群(cluster) 以所有redis实例运行在同一台宿主机上为例子 搭建步骤 redis集群目录清单 . ├── Dockerfile ├── make_master ...

  8. Mac 搭建 Redis 集群

    date: 2020-09-24 16:24:00 updated: 2020-09-24 17:30:00 Mac 搭建 Redis 集群 参考文档 摘要 安装docker brew cask in ...

  9. 基于 twemproxy 搭建 redis 集群

    概述 由于单台redis服务器的内存管理能力有限,使用过大内存redis服务器的性能急剧下降,且服务器发生故障将直接影响大面积业务.为了获取更好的缓存性能及扩展型,我们将需要搭建redis集群来满足需 ...

  10. Windows下搭建Redis集群

    Redis集群: 如果部署到多台电脑,就跟普通的集群一样:因为Redis是单线程处理的,多核CPU也只能使用一个核, 所以部署在同一台电脑上,通过运行多个Redis实例组成集群,然后能提高CPU的利用 ...

随机推荐

  1. Qt中的多窗体编程(续二)

    四.实现子窗体的按钮功能. 1.在显示时间的子窗体中,有两个默认的按钮,都还没有定义其功能,下面就来定义,无论单击哪个按钮,都将线束时钟显示的线程并关闭窗体. 2.在子窗体的可视化设计界面中,在窗体的 ...

  2. Java学习笔记(三)java方法

    学习笔记3 Java方法 一.什么是方法 System.out.println() 是什么 System是一个类,out是一个对象,println()就是一个方法 意思是调用System中的out对象 ...

  3. 【树莓派】在vscode中连接树莓派并编写代码

    在树莓派里编写代码的话会比较麻烦因此可以在vscode中通过ssh连接树莓派并且编辑代码 参考: vscode通过ssh连接树莓派实现远程开发 VSCODE 远程开发树莓派 使用vscode打造pyt ...

  4. 【C学习笔记】day3-3 编写程序数一下 1到 100 的所有整数中出现多少个数字9

    #include <stdio.h> int main() { int cou=0; for (int i = 1; i <= 100; i++) { if (i % 10 == 9 ...

  5. 启动项目报错org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token found character ‘@‘

    报错信息:org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token found character ...

  6. linux系统过滤文件,并且通过时间对过滤的文件排序

    命令如下所示: find /home/deep/tf/20220601/study -name '*.h5' |xargs ls -lta

  7. Nginx日志切割工具logrorate

    1.logrotate系统工具 linux自带logrotate工具 主流的linux系统版本,都默认安装logrotate包,作为分割日志的系统工具,可以方便将日志按周期(日,周,月)和大小进行分割 ...

  8. 链接mysql数据库报错:2003-cant connect to Mysql server on ‘localhost’(10038)

    今天用navicat连mysql时候突然报错了 我百度了一下,知道了是mysql服务没开,但是我打开了服务,发现服务里面没有mysql,于是就去cmd以管理员身份打开命令提示符,切换到安装mysql的 ...

  9. Java基础-运算符、包机制、JavaDoc生成文档

    运算符 Java语言支持如下运算符:优先级() 算术运算符:+,-,*,/,%,++,- 赋值运算符:= 关系运算符:>,<,>=,<=,==,!=,instanceof 逻辑 ...

  10. mysql(insert + str_to_date)

    str_to_date(date_str, '%Y-%m-%d %H:%i:%s') 替换为 substring_index(date_str, '.', 1); str_to_date(date_s ...