使用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的更多相关文章

  1. Docker Swarm redis 集群搭建

    Docker Swarm redis 集群搭建 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docke ...

  2. 基于Dokcer搭建Redis集群搭建(主从集群)

    最近陆陆续续有不少园友加我好友咨询 redis 集群搭建的问题,我觉得之前写的这篇 <基于Docker的Redis集群搭建> 文章一定是有问题了,所以我花了几分钟浏览之前的文章总结了下面几 ...

  3. 25.redis集群搭建笔记

    ###Redis集群### 0.准备 软件: redis-3.0.0.gem redis-3.0.0.tar.gz#源码   1.安装ruby环境 redis基于ruby槽位计算,hash算法技术,k ...

  4. Redis 集群搭建详细指南

    先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司! 为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛 ...

  5. 二、redis集群搭建

    redis集群搭建 redis3.0后支持集群.集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器.搭建伪分布式,需要6个redis实例.搭建集群的步骤: 一.安装单机版redis 第一步 ...

  6. redis集群搭建及注意事项

    上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出 ...

  7. Linux Redis集群搭建与集群客户端实现(Python)

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

  8. [转载] Redis集群搭建最佳实践

    转载自http://blog.csdn.net/sweetvvck/article/details/38315149?utm_source=tuicool 要搭建Redis集群,首先得考虑下面的几个问 ...

  9. Linux Redis集群搭建与集群客户端实现

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

  10. Redis集群搭建-韩国庆

    认真一步一步搭建下来,就可以成功.... Redis-cluster集群架构讲解 redis集群专业名词称之为Redis-cluster,redis集群是从3.0版本以后才有的概念,也就是说在3.0之 ...

随机推荐

  1. LeetCode题集-1- 两数之和

    这个题目是什么意思呢?简单来说就是在一个数组中找出两个元素,使其和为我们设定的值,并且每个元素只能用一次. 如下图具体示例: 到这里不知道你是否已经有解题思路了呢? 解法一:双层循环 我第一反应就是双 ...

  2. Angular 18+ 高级教程 – Component 组件 の Control Flow

    前言 Control Flow 是 Angular v17 版本后推出的新模板语法,用来取代 NgIf.NgForOf.NgSwitch 这 3 个 Structure Directive. Stru ...

  3. CSS & JS Effect – Image hover animation

    效果 效果来自: webflow 的一个模板 需求解释 有 3 给元素, 图片, overlay(黑影), link mouse enter 的时候, 图片要 zoom in. overlay 要 f ...

  4. 实用技巧:根据menuconfig定位一个驱动涉及到的源文件

    根据menuconfig定位一个驱动涉及到的源文件,这个是很常用的,因为有时候你需要参考别人的驱动代码.新手不知道如何定位驱动相关源码,这篇文章将告之. 假设我手头有一块开发板,现在我想要获取板载ov ...

  5. el-table 宽度自适应bug

    和 flex 一起使用的时候会有这个问题.只能自动变宽不能自动变窄. 在  flex-grow:1;  的那一层设置  overflow: auto;

  6. iOS中RunLoop和线程的关系

    RunLoop又叫运行循环,主要用来管理线程.一个线程对应一个RunLoop,一个RunLoop又有五种模式.只有主线程的RunLoop是默认开启的,所以程序在开启后,会一直运行,不会退出.其他线程的 ...

  7. style 标签写在body 前后的区别?

    知识储备:了解浏览器渲染页面的流程 a)首先 , 解析(parse)html 标签 , 获取DOM 树 b)解析html 的同时 , 解析css  , 获得样式规则 (style rules) CSS ...

  8. C#内存缓存

    把缓存数据放到应用程序的内存,内存缓存中保存的是一些列键值对 :生命周期就是关闭程序的时候,内存数据就会被销毁 : IMemerCache  接口 Get 获取缓存 Set 设置缓存

  9. KubeSphere 社区双周报|2024.09.27-10.10

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  10. 云原生周刊:Docker大涨价|2024.10.8

    开源项目推荐 Kubeshark 如果把 K8s 比作操作系统,那它就是 K8s 上的 tcpdump,使用起来就像 Chrome 开发者工具一样简单直接,能够让 K8s 上微服务之间的网络通信一览无 ...