准备工作

安装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. php http build query

    http_build_query (PHP 5, PHP 7) http_build_query — 生成 URL-encode 之后的请求字符串 说明¶ string http_build_quer ...

  2. 配置java环境变量,实现一条命令自由切java7 或java8

    在多个java编译环境中,有时需要java 7,有时又需要java 8,怎么配置java 环境,可以快速自动切换呢?下面用mac演示在 /etc/bashrc 中配置的环境变量 # 设置 JDK ex ...

  3. 工作中比较重要的经验分享-2016-bypkm

    工作中总有一些经验能让人记忆深刻,能让人终生受用,相比技术而言,经验是宝贵的.无价的.在我的博客中,主要是技术类的博文,那些东西是相对死板的,价值也相对低廉.今天就记录一下我在工作中一次比较重要的经验 ...

  4. [leetcode] 204. Count Primes 统计小于非负整数n的素数的个数

    题目大意 https://leetcode.com/problems/count-primes/description/ 204. Count Primes Count the number of p ...

  5. Swapping eth0 and eth1 on OK335xS board

    /******************************************************************************* * Swapping eth0 and ...

  6. python虚拟环境--virtualenv和virtualenvwrapper

    python虚拟环境--virtualenv和virtualenvwrapper http://www.cnblogs.com/technologylife/p/6635631.html https: ...

  7. 使用rollup 开发专业js library

    rollup 是一个不错的javascript 模块打包器,一般我们用来构建library 安装 npm install -g rollup 参考集成jquey && shortid ...

  8. vs2005 sp1 补丁的安装问题

    最近做windows mobile 6.0的手机软件开发,听说用vs2005 开发的话最少得装vs2005 sp1,于是去官网上下了VS80sp1-KB926604-X86-CHS.exe 补丁 .运 ...

  9. 使用jquery触发a标签跳转

    错误示例 <a href="http://www.baidu.com" target="_blank">baidu</a> // 直接是 ...

  10. Eclipse转Android Studio工程实践

    Eclipse转Android Studio工程有两种方式, 一种是兼容Eclipse,两者都可以使用,一种是全新的Android Gradle Project. 这里使用的Android Studi ...