准备工作

安装gcc ruby

解压编译redis
Redis 是 c 语言开发的。安装 redis 需要 c 语言的编译环境。如果没有 gcc 需要在线安装。
yum install gcc-c++ 使用yum命令安装 ruby (我们需要使用ruby脚本来实现集群搭建)
yum install ruby
yum install rubygems

下载安装包

[root@docker01 ~]# mkdir zy_redis_cluster
[root@docker01 ~]# cd zy_redis_cluster/
[root@docker01 zy_redis_cluster]# mkdir docker_redis_cluster
[root@docker01 zy_redis_cluster]# cd docker_redis_cluster/
[root@docker01 docker_redis_cluster]# wget http://download.redis.io/releases/redis-3.0.3.tar.gz

解压编译

[root@docker01 docker_redis_cluster]# tar -zxvf redis-3.0.3.tar.gz
[root@docker01 docker_redis_cluster]# cd redis-3.0.3/
[root@docker01 redis-3.0.3]# make

修改配置文件

[root@docker01 redis-3.0.3]# vi redis.conf 

#守护进程设置为no
daemonize no #修改绑定ip
#bind 127.0.0.1
bind 0.0.0.0 #设置日志路径
logfile "/var/log/redis/redis-server.log" #开启集群功能
cluster-enabled yes #其他配置修改
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000

镜像制作

创建镜像dockerfile文件

[root@docker01 ~]# cd /root/zy_redis_cluster/docker_redis_cluster
[root@docker01 docker_redis_cluster]# vi Dockerfile # Redis
# Version 3.0.3
# 操作系统镜像,最好提前pull到本地,这样制作镜像的时候就不会再去网上pull了
FROM centos:latest
MAINTAINER zy "279790279@qq.com" #定义变量
ENV REDIS_HOME /usr/local # 创建安装目录 更新yum源 安装编译需要的工具
RUN mkdir -p $REDIS_HOME/redis \
&& yum -y update \
&& yum install -y gcc make # 本地的redis源码包复制到镜像的根路径下,ADD命令会在复制过后自动解包。被复制的对象必须处于Dockerfile同一路径,且ADD后面必须使用相对路径
ADD redis-3.0.3.tar.gz /
# 将一开始编译产生并修改后的配置复制到安装目录
ADD redis-3.0.3/redis.conf $REDIS_HOME/redis/ #把目录转到文件夹内
WORKDIR /redis-3.0.3 #编译 编译后,容器中只需要可执行文件redis-server
RUN make \
&& mv /redis-3.0.3/src/redis-server $REDIS_HOME/redis/ #设置工作访问时候的WORKDIR路径,登陆落脚点
WORKDIR / # 删除解压文件 安装编译完成之后 删除多余的gcc跟make
RUN rm -rf /redis-3.0.3 \
&& yum remove -y gcc make # 添加数据卷
VOLUME ["/var/log/redis"] # 暴露端口
EXPOSE 6379 #入口点
ENTRYPOINT ["/usr/local/redis/redis-server", "/usr/local/redis/redis.conf"]

构建镜像

[root@docker01 docker_redis_cluster]# docker build -t rising_zy/cluster-redis-node:3.0.3 .
......
Complete!
Removing intermediate container 7c9cc1bed2be
---> 528db1f8fea9
Step 11/13 : VOLUME ["/var/log/redis"]
---> Running in 729b7e4dc9f4
Removing intermediate container 729b7e4dc9f4
---> 9061b4240f52
Step 12/13 : EXPOSE 6379
---> Running in ebf95090f698
Removing intermediate container ebf95090f698
---> 506964ec2e5c
Step 13/13 : ENTRYPOINT ["/usr/local/redis/redis-server", "/usr/local/redis/redis.conf"]
---> Running in 428a90bf22a7
Removing intermediate container 428a90bf22a7
---> d70e8f3db0ad
Successfully built d70e8f3db0ad
Successfully tagged rising_zy/cluster-redis-node:3.0.3

查看

[root@docker01 docker_redis_cluster]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rising_zy/cluster-redis-node 3.0.3 d70e8f3db0ad 26 seconds ago 451MB
registry latest 116995fd6624 3 days ago 25.8MB
centos latest 1e1148e4cc2c 6 weeks ago 202MB

创建redis集群

运行6个docker节点

[root@docker01 ~]# docker run -di --name redis-6379 -p 6379:6379 rising_zy/cluster-redis-node:3.0.3
[root@docker01 ~]# docker run -di --name redis-6380 -p 6380:6379 rising_zy/cluster-redis-node:3.0.3
[root@docker01 ~]# docker run -di --name redis-6381 -p 6381:6379 rising_zy/cluster-redis-node:3.0.3
[root@docker01 ~]# docker run -di --name redis-6382 -p 6382:6379 rising_zy/cluster-redis-node:3.0.3
[root@docker01 ~]# docker run -di --name redis-6383 -p 6383:6379 rising_zy/cluster-redis-node:3.0.3
[root@docker01 ~]# docker run -di --name redis-6384 -p 6384:6379 rising_zy/cluster-redis-node:3.0.3

分别查看节点ip

[root@docker01 ~]# docker inspect redis-63xx

安装ruby用户搭建redis集群的脚本

上传redis-3.0.0.gem到机器上  这个文件可在网上下载
安装
[root@docker01 ~]# gem install redis-3.0.0.gem

使用ruby脚本搭建redis集群(每个reids保证启动状态)

[root@docker01 ~]# cd zy_redis_cluster/docker_redis_cluster/redis-3.0.3/src/
[root@docker01 src]# ./redis-trib.rb create --replicas 1 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 172.17.0.8:6379
>>> Creating cluster
Connecting to node 172.17.0.3:6379: OK ...... M: b9745b519f74485ee582607de31afee93ad86650 172.17.0.3:6379
slots:0-5460 (5461 slots) master
M: 5a2a5e862290d615b6a7576524a5b5de8367344e 172.17.0.4:6379
slots:5461-10922 (5462 slots) master
M: 5e94e07f136b1d83e35ac7f2c682c52fed7c620c 172.17.0.5:6379
slots:10923-16383 (5461 slots) master
M: 8838aef56ca0045aea231e8c211a2eb99a06fab5 172.17.0.6:6379
slots: (0 slots) master
replicates b9745b519f74485ee582607de31afee93ad86650
M: 0b61287211cb3c6118924bcadfad169b988096b0 172.17.0.7:6379
slots: (0 slots) master
replicates 5a2a5e862290d615b6a7576524a5b5de8367344e
M: 4d4dad7c0c787e4de99729d3f7a911d1bbd21a7f 172.17.0.8:6379
slots: (0 slots) master
replicates 5e94e07f136b1d83e35ac7f2c682c52fed7c620c
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

查看集群

[root@docker01 src]# ./redis-cli -h 172.17.0.3 -p 6379 -c
127.0.0.1:6379> cluster nodes
4d4dad7c0c787e4de99729d3f7a911d1bbd21a7f 172.17.0.8:6379 slave 5e94e07f136b1d83e35ac7f2c682c52fed7c620c 0 1548175276225 6 connected
5a2a5e862290d615b6a7576524a5b5de8367344e 172.17.0.4:6379 master - 0 1548175275208 2 connected 5461-10922
b9745b519f74485ee582607de31afee93ad86650 172.17.0.3:6379 myself,master - 0 0 1 connected 0-5460
8838aef56ca0045aea231e8c211a2eb99a06fab5 172.17.0.6:6379 slave b9745b519f74485ee582607de31afee93ad86650 0 1548175271127 4 connected
5e94e07f136b1d83e35ac7f2c682c52fed7c620c 172.17.0.5:6379 master - 0 1548175274181 3 connected 10923-16383
0b61287211cb3c6118924bcadfad169b988096b0 172.17.0.7:6379 slave 5a2a5e862290d615b6a7576524a5b5de8367344e 0 1548175272150 5 connected
127.0.0.1:6379>

Docker构建redis cluster集群的更多相关文章

  1. Docker 搭建 Redis Cluster 集群环境

    使用 Docker 搭建 Redis Cluster,最重要的环节就是容器通信的问题,这一块我们在之前的文章中已经给大家解决了<Docker 网络模式详解及容器间网络通信>,本篇文章主要练 ...

  2. docker 安装redis cluster集群

    安装Redis镜像 docker pull yyyyttttwwww/redis 创建redis容器 docker run -it -d --name r1 -p 5001:6379 --net=ne ...

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

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

  4. centos6下redis cluster集群部署过程

    一般来说,redis主从和mysql主从目的差不多,但redis主从配置很简单,主要在从节点配置文件指定主节点ip和端口,比如:slaveof 192.168.10.10 6379,然后启动主从,主从 ...

  5. docker下创建redis cluster集群

    概述 在Redis中,集群的解决方案有三种 主从复制 哨兵机制 Cluster Redis Cluster是Redis的分布式解决方案,在 3.0 版本正式推出. 准备工作 1.确定本机IP地址 2. ...

  6. K8S部署Redis Cluster集群

    kubernetes部署单节点redis: https://www.cnblogs.com/zisefeizhu/p/14282299.html Redis 介绍 • Redis代表REmote DI ...

  7. K8S部署Redis Cluster集群(三主三从模式) - 部署笔记

    一.Redis 介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理.它可以存储和操作高级数据类型,例如列表,地图,集合和排序 ...

  8. Redis Cluster 集群使用(3)

    简介 Redis3.0版本之前,可以通过Redis Sentinel(哨兵)来实现高可用(HA),从3.0版本之后,官方推出了Redis Cluster,它的主要用途是实现数据分片(Data Shar ...

  9. redis cluster 集群拓展

    redis cluster 集群拓展 准备工作 举例:添加2个节点(1主7006节点,1从7007节点) 在/home/redis-cluster下生成conf和data目标,并生成配置信息 `; d ...

随机推荐

  1. 『转』G Data InternetSecurity 2014 – 免费3个月

    G Data来自德国的顶级杀毒软件,采用BitDefender+CloseGap双引擎,屡获AV-TEST防護率100%.不多介绍,目前2014中文版没有上市.活动地址:点此进入官方网站:点此进入申请 ...

  2. 20155234 2016-2017-2 《Java程序设计》第8周学习总结

    20155234 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 java.util.loggging包提供了日志功能相关类与接口. 使用日志的起点是Logg ...

  3. UOJ22. 【UR #1】外星人【DP】【思维】

    LINK 题目大意 给你一个序列和一个值x 问你用某种方式对序列安排顺序之后一次对x取mod膜的最大值和方案数 首先发现一个性质 一个数之后所有比它大的数都没有贡献 考虑怎么利用这个性质? 就可以从小 ...

  4. 文本框模糊匹配(纯html+jquery简单实现)

    一.项目中需要用到此功能,使用过EasyUI中的Combobox,网上也搜过相应的解决办法,对于我的项目来说都不太合适,因为我还是喜欢比较纯粹的东西,就自己动手写了一个,比较简单,但还算能用,我的项目 ...

  5. C#访问加密的SQLite数据库

    前提:一个项目需要存储各种密码数据,使用的嵌入式的SQLite数据库.默认的SQLite数据库是没有加密的,这样相当不安全.找呀找呀找方法... 方法: 1.使用SQLite管理器加密. 部分SQLi ...

  6. Struts2自定义标签3模仿原有的s:if s:elseif s:else自定义自己的if elsif else

    第一步:webroot/web-inf下简历str.tld文件 <?xml version="1.0" encoding="UTF-8"?> < ...

  7. 使用docker 部署graylog集群

    graylog 相比elk 有比较简单的方面,使用简单,配置简单,可视化工具是一体化的,比较方便 搭建使用docker,多主机部分,结合docker-compose 进行管理 具体docker 配置文 ...

  8. C# List的深复制

    1.关于深拷贝和浅拷贝 C#支持两种类型:值类型和引用类型 值类型(Value Type):如 char, int, float,枚举类型和结构类型 引用类型(Reference Type):如Cla ...

  9. SQL优化之索引分析

    索引的重要性 数据库性能优化中索引绝对是一个重量级的因素,可以说,索引使用不当,其它优化措施将毫无意义. 聚簇索引(Clustered Index)和非聚簇索引 (Non- Clustered Ind ...

  10. xhprof使用

    一.下载安装 wget http://pecl.php.net/get/xhprof-0.9.3.tgz tar zxvf xhprof-0.9.3.tgz cd xhprof-0.9.3/exten ...