基于Docker的redis集群搭建

时间:2021-09-30 20:26:15

Redis集群官方介绍:http://www.redis.cn/topics/cluster-tutorial.html

基于Docker搭建Redis集群

环境:6个节点,三主三从

制作Redis镜像:docker build -f dockerfile -t jiang/redis-cluster:4.0.1 .

dockerfile文件:

FROM redis:4.0.1
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir /usr/local/etc/redis && chown redis:redis /usr/local/etc/redis
ENV REDIS_C=/usr/local/etc/redis
RUN echo "port 6379" > $REDIS_C/redis.conf
RUN echo "cluster-enabled yes" >> $REDIS_C/redis.conf
RUN echo "cluster-config-file nodes.conf" >> $REDIS_C/redis.conf
RUN echo "cluster-node-timeout 5000" >> $REDIS_C/redis.conf
RUN echo "appendonly yes" >> $REDIS_C/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]

制作Ruby镜像:docker build -f dockerfile2 -t jiang/my_ruby:2.4 .

dockerfile2文件:

FROM ruby:2.4
RUN gem install redis
ADD ./redis-4.0.1.tgz /usr/local
RUN cd /usr/local && ln -sf redis-4.0.1 redis

分别启动6个节点实例:

docker run --name redis7000 -p 7000:6379 -d jiang/redis-cluster:4.0.1
docker run --name redis7001 -p 7001:6379 -d jiang/redis-cluster:4.0.1
docker run --name redis7002 -p 7002:6379 -d jiang/redis-cluster:4.0.1
docker run --name redis7003 -p 7003:6379 -d jiang/redis-cluster:4.0.1
docker run --name redis7004 -p 7004:6379 -d jiang/redis-cluster:4.0.1
docker run --name redis7005 -p 7005:6379 -d jiang/redis-cluster:4.0.1

基于Docker的redis集群搭建

查看6个节点的容器IP

docker inspect --format='{{.NetworkSettings.IPAddress}}' redis7000
docker inspect --format='{{.NetworkSettings.IPAddress}}' redis7001
docker inspect --format='{{.NetworkSettings.IPAddress}}' redis7002
docker inspect --format='{{.NetworkSettings.IPAddress}}' redis7003
docker inspect --format='{{.NetworkSettings.IPAddress}}' redis7004
docker inspect --format='{{.NetworkSettings.IPAddress}}' redis7005

基于Docker的redis集群搭建

启动Ruby容器,进入/bin/bash,创建redis集群

docker run -it jiang/my_ruby:2.4 /bin/bash
# /usr/local/redis/src/redis-trib.rb create --replicas 1 172.17.0.2:6379 172.17.0.3:6379 172.17.0.4:6379 172.17.0.5:6379 172.17.0.6:6379 172.17.0.7:6379
出现下面显示说明集群创建成功:
[OK] All nodes agree about slots configuration.
[OK] All 16384 slots covered.

宿主机上利用redis客户端简单测试:

./redis-cli -c -p 7000

基于Docker的redis集群搭建

cluster info查看集群信息:

基于Docker的redis集群搭建

cluster nodes查看集群中各节点信息

基于Docker的redis集群搭建

基于Docker的redis集群搭建的更多相关文章

  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. 基于Twemproxy的Redis集群搭建以及想法

    基于Twemproxy的Redis集群方案(转) redis3.0 已经发布了几个月了,但是我这等菜鸟到网上还是没有找到很好的关于搭建redis3.0集群的文章,而且好像很多公司的redis版本还保持 ...

  3. docker 实现redis集群搭建

    摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群. 首先,我们需要理论知识:Redis Cluster是Re ...

  4. docker实验--redis集群搭建

    背景介绍: 我经常在做一些小项目的时候,采用了Redis来做缓存,但是都是基于单节点的,一旦redis挂了,整个项目就挂了.于是乎,想到了多节点集群的方式来使用,就开始折腾着怎么去搭建这个集群.在网上 ...

  5. 轻松构建 基于docker的 redis 集群

    下面跟着我来 一步一步构建redis 集群吧. 集群的目录结构见GitHub源码(文章末尾) 1,安装docker环境,根据自身的操作系统,google下即可. 2,我们在服务器上,搭建所需目录结构. ...

  6. quay.io/coreos/etcd 基于Docker镜像的集群搭建

    etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现.etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理 ...

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

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

  8. 25&period;redis集群搭建笔记

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

  9. Redis 集群搭建详细指南

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

随机推荐

  1. windows使用git时出现:warning&colon; LF will be replaced by CRLF

    windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示: 执行以下代码 $ rm -rf .git // 删除.git $ git config -- ...

  2. unity之初识shader

    自己做个总结先.当然文中很多内容都是从各位大神的文档当中看的.我只是站在巨人的肩膀上.       首先什么是shader?其实就是一个在显示屏当中的显示程序,俗称着色器.它可以定义物体在硬件显示屏当 ...

  3. Git 操作 学习资源 网址

    用git 有一段时间了,有点自己的小心得.个人觉得相对SVN来讲他更灵活,更合理. 陆陆续续的收集了一些学习资源: 1.理解Xcode 中的Git 版本控制 http://www.open-open. ...

  4. Java——Socket编程(一)

    1. 网络基础知识 两台机器之间需要进行通信,需要满足的条件: 每个机器有一个唯一的标识符(IP地址): 他们之间进行通信需要用同一种语言(协议): 每台主机上面有多个应用程序,如QQ,微博,迅雷等, ...

  5. 【Robot Framework】robot framework 学习以及selenium、appnium、requests实践(三)

    看了上一章的内容,想必较为简单的case也都会编写了吧,但是是不是觉得,如果能够实现用例参数化,是不是会节省很多劳动力,这节就来学下RF中的user keywords,会让你发现写用例原来可以这么简单 ...

  6. Codeforces 374A - Inna and Pink Pony

    原题地址:http://codeforces.com/contest/374/problem/A 好久没写题目总结了,最近状态十分不好,无论是写程序还是写作业还是精神面貌……NOIP挂了之后总觉得缺乏 ...

  7. Xamarin for android&colon;为button设置click事件的几种方法

    原文:Xamarin for android:为button设置click事件的几种方法 在Xamarin中一个最基础的事情,就是为一个button指定click事件处理方法,可是即使是这么一件事也有 ...

  8. crawler&lowbar;编码转换&lowbar;unicode&lpar;&amp&semi;&num;24180&semi;&rpar;

    import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @declare: unicode 帮助类<br&gt ...

  9. MYSQL常用函数(时间和日期函数)

    CURDATE()或CURRENT_DATE() 返回当前的日期 CURTIME()或CURRENT_TIME() 返回当前的时间 DATE_ADD(date,INTERVAL int keyword ...

  10. &num;C&plus;&plus;初学记录&lpar;ACM试题1)

    A - Diverse Strings A string is called diverse if it contains consecutive (adjacent) letters of the ...