Redis集群搭建-Docker
使用docker搭建本地集群Redis服务(参考:https://www.cnblogs.com/slowbirdoflsh/p/11633113.html)
环境配置
# 拉取redis镜像
docker pull redis

# 查看镜像详情
docker inspect redis


创建redis集群网络
docker network create redis-cluster-net


集群挂在目录配置
1. 开启6个节点, 3对主从节点搭建集群
2. 开放7000-7005端口, 根据端口创建6个目录, 每个目录下创建data目录和配置文件redis-{port}.conf
3. 配置模板文件redis-cluster.tmpl
# 基本配置
## 开放端口
port ${port}
## 不作为守护进程
daemonize no
## 启用aof持久化模式
appendonly yes
# 集群配置
## 开启集群配置
cluster-enabled yes
## 存放集群节点的配置文件 系统自动建立
cluster-config-file nodes-${port}.conf
## 节点连接超时时间
cluster-node-timeout 50000
## 实际为各节点网卡分配ip
cluster-announce-ip ${ip}
## 节点映射端口
cluster-announce-port ${port}
## 节点总线端口
cluster-announce-bus-port 1${port}
cluster-slave-validity-factor 10
cluster-migration-barrier 1
初始化redis集群目录脚本(init.sh):
#!/bin/bash
dir_redis_cluster='/home/lanlang/redis/redis-cluster'
gateway='172.18.0.1'
idx=1
for port in `seq 7000 7005`; do
mkdir -p ${dir_redis_cluster}/${port}/data;
idx=$(($idx+1));
port=${port} ip=`echo ${gateway} | sed "s/1$/$idx/g"` \
envsubst < ${dir_redis_cluster}/redis-cluster.tmpl \
> ${dir_redis_cluster}/${port}/redis-${port}.conf
done
执行init.sh之后创建目录

查看生成的redis配置文件:

集群搭建
启动脚本(start.sh):
#!/bin/bash
dir_redis_cluster='/home/lanlang/redis/redis-cluster'
for port in `seq 7000 7005`; do
docker run --name redis-${port} --net redis-cluster-net -d \
-p ${port}:${port} -p 1${port}:1${port} \
-v ${dir_redis_cluster}/${port}/data:/data \
-v ${dir_redis_cluster}/${port}/redis-${port}.conf:/usr/local/etc/redis/redis.conf redis \
redis-server /usr/local/etc/redis/redis.conf
done
执行完成:

查看启动的服务:
docker ps

查看集群功能是否开启:
docker exec -it redis-7000 redis-cli -p 7000 info cluster

节点连接:
docker exec -it redis-7000 redis-cli -p 7000 cluster meet 172.18.0.3 7001 docker exec -it redis-7000 redis-cli -p 7000 cluster meet 172.18.0.4 7002 docker exec -it redis-7000 redis-cli -p 7000 cluster meet 172.18.0.5 7003 docker exec -it redis-7000 redis-cli -p 7000 cluster meet 172.18.0.6 7004 docker exec -it redis-7000 redis-cli -p 7000 cluster meet 172.18.0.7 7005

查看节点并进行主从配置:
docker exec -it redis-7000 redis-cli -p 7000 cluster nodes

配置7001节点为7000节点的从节点 docker exec -it redis-7001 redis-cli -p 7001 cluster replicate bbf710160c18a6267428714e887b33a04e557235 配置7003节点为7002节点的从节点 docker exec -it redis-7003 redis-cli -p 7003 cluster replicate 0c29ac82d4dbb68d48909906a902719cf05ca191 配置7005节点为7004节点的从节点 redis-cluster]# docker exec -it redis-7005 redis-cli -p 7005 cluster replicate c813df11ff91f18c49dd0931b4d5dcca3c43df9f

查看节点:
docker exec -it redis-7000 redis-cli -p 7000 cluster nodes

slots分配:
将16384个槽分配到3个主节点中每个节点平均分5461个槽
docker exec -it redis-7000 redis-cli -p 7000 cluster addslots {0..5460} # 7002 5461~10920
docker exec -it redis-7002 redis-cli -p 7002 cluster addslots {5461..10920} # 7004 10920~16383
docker exec -it redis-7004 redis-cli -p 7004 cluster addslots {10921..16383}

查看集群情况:
docker exec -it redis-7000 redis-cli -p 7000 cluster info

查看槽点情况:
docker exec -it redis-7000 redis-cli -p 7000 cluster slots

测试:
docker exec -it redis-7000 redis-cli -c -p 7000

常见问题:
1. 在启动redis服务的时候,WARNING: IPv4 forwarding is disabled. Networking will not work
vim /etc/sysctl.conf 新增
net.ipv4.ip_forward=1 重启network
systemctl restart network 查看
sysctl net.ipv4.ip_forward
Redis集群搭建-Docker的更多相关文章
- Docker Swarm redis 集群搭建
Docker Swarm redis 集群搭建 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docke ...
- 基于Dokcer搭建Redis集群搭建(主从集群)
最近陆陆续续有不少园友加我好友咨询 redis 集群搭建的问题,我觉得之前写的这篇 <基于Docker的Redis集群搭建> 文章一定是有问题了,所以我花了几分钟浏览之前的文章总结了下面几 ...
- 25.redis集群搭建笔记
###Redis集群### 0.准备 软件: redis-3.0.0.gem redis-3.0.0.tar.gz#源码 1.安装ruby环境 redis基于ruby槽位计算,hash算法技术,k ...
- Redis 集群搭建详细指南
先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司! 为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛 ...
- 二、redis集群搭建
redis集群搭建 redis3.0后支持集群.集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器.搭建伪分布式,需要6个redis实例.搭建集群的步骤: 一.安装单机版redis 第一步 ...
- redis集群搭建及注意事项
上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出 ...
- Linux Redis集群搭建与集群客户端实现(Python)
硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...
- [转载] Redis集群搭建最佳实践
转载自http://blog.csdn.net/sweetvvck/article/details/38315149?utm_source=tuicool 要搭建Redis集群,首先得考虑下面的几个问 ...
- Linux Redis集群搭建与集群客户端实现
硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...
- Redis集群搭建-韩国庆
认真一步一步搭建下来,就可以成功.... Redis-cluster集群架构讲解 redis集群专业名词称之为Redis-cluster,redis集群是从3.0版本以后才有的概念,也就是说在3.0之 ...
随机推荐
- 几步轻松定制私人AI助手
这两年大模型的发展持续火热,以至于许多资本和学者认为AI出现了泡沫,根本原因还是因为大模型目前还没有出现能够结合行业切实落地的应用. 我才不关注泡沫不泡沫呢,我只关注大模型能给我带来哪些帮助即可.大模 ...
- C# 泛型对象和DataTable之间的相互转换
应用场景 实际开发场景下会经常出现DataTable和List对象需要相互转换的时候,通过方法提取避免重复造轮子 List转换成DataTable 基本思路: 向DataTable里面添加新的数据内容 ...
- 爬虫案例2-爬取视频的三种方式之一:selenium篇(2)
@ 目录 前言 selenium简介 实战案例 共勉 博客 前言 继使用requests库爬取好看视频的文章后,本文分享使用python第三方库selenium库接着来爬取视频网站,后续也会接着分享使 ...
- Vert.x HttpClient调用后端服务时使用Idle Timeout和KeepAlive Timeout的行为分析
其实网上有大量讨论HTTP长连接的文章,而且Idle Timeout和KeepAlive Timeout都是HTTP协议上的事情,跟Vert.x本身没有太大关系,只不过最近在项目上遇到了一些问题,用到 ...
- Angular 18+ 高级教程 – Angular Configuration (angular.json)
前言 记入一些基本的配置. Setup IP Address.SSL.Self-signed Certificate 如果你对 IP Address.SSL.Self-signed Certifica ...
- Google Ads – UTM
介绍 UTM (Urchin tracking module) 的作用是帮助我们收集访客的来源渠道. 比如说, 用户是从 Google 广告来的, Youtube, 还是 Facebook 等等. 它 ...
- SQL Server – 冷知识 (新手)
前言 没有系统化学一本语言或技术, 那便会被一些冷知识坑. 这里做些记入. 变量作用域 SQL 是远古语法, 声明变量在最顶部就是一条上古法则. 如果我看见有了用这个法则写 C# 或 JS 我就会杀了 ...
- Unity中的三种渲染路径
Unity中的渲染路径 Unity的渲染路径 在Unity里,渲染路径(Rendering Path)决定了光照是如何应用到Unity Shader中的.因此,我们只有为Shader正确地选择和设置了 ...
- JavaScript习题之算法设计题
// 1.九九乘法表 for (var i = 1; i < 10; i++) { document.write("<span>"); for (var j = ...
- [Tkey] CodeForces 1267G Game Relics
太神了这题,膜拜出题人 orz. 思考一 首先是大家都提到的一点,先抽卡再买.这里来做个数学分析. 假设我们还剩 \(k\) 种没有买,其实我们是有式子来算出它的花费期望的.WIKI 上提到,假设一个 ...