Docker构建redis cluster集群
准备工作
安装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集群的更多相关文章
- Docker 搭建 Redis Cluster 集群环境
使用 Docker 搭建 Redis Cluster,最重要的环节就是容器通信的问题,这一块我们在之前的文章中已经给大家解决了<Docker 网络模式详解及容器间网络通信>,本篇文章主要练 ...
- docker 安装redis cluster集群
安装Redis镜像 docker pull yyyyttttwwww/redis 创建redis容器 docker run -it -d --name r1 -p 5001:6379 --net=ne ...
- Docker Compose 搭建 Redis Cluster 集群环境
在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...
- centos6下redis cluster集群部署过程
一般来说,redis主从和mysql主从目的差不多,但redis主从配置很简单,主要在从节点配置文件指定主节点ip和端口,比如:slaveof 192.168.10.10 6379,然后启动主从,主从 ...
- docker下创建redis cluster集群
概述 在Redis中,集群的解决方案有三种 主从复制 哨兵机制 Cluster Redis Cluster是Redis的分布式解决方案,在 3.0 版本正式推出. 准备工作 1.确定本机IP地址 2. ...
- K8S部署Redis Cluster集群
kubernetes部署单节点redis: https://www.cnblogs.com/zisefeizhu/p/14282299.html Redis 介绍 • Redis代表REmote DI ...
- K8S部署Redis Cluster集群(三主三从模式) - 部署笔记
一.Redis 介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理.它可以存储和操作高级数据类型,例如列表,地图,集合和排序 ...
- Redis Cluster 集群使用(3)
简介 Redis3.0版本之前,可以通过Redis Sentinel(哨兵)来实现高可用(HA),从3.0版本之后,官方推出了Redis Cluster,它的主要用途是实现数据分片(Data Shar ...
- redis cluster 集群拓展
redis cluster 集群拓展 准备工作 举例:添加2个节点(1主7006节点,1从7007节点) 在/home/redis-cluster下生成conf和data目标,并生成配置信息 `; d ...
随机推荐
- 201621123006 《Java程序设计》第8周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码如下: 由源代码可 ...
- 找到链表的倒数第k个节点 python
题目:给定一个链表的头节点,输出链表倒数第k个节点的值 分析:最简单的思路就按顺序访问链表节点,得到链表的长度x之后,再次从头节点出发,访问到第x-k+1个节点时,就是链表倒数第k个节点,但是这样的方 ...
- I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard.sh hacking
#!/bin/sh # 参考文章: # . MFGTool Emmc mksdcard.sh MFGTool Emmc mksdcard.sh comment # http://jordonwu.gi ...
- Git 将代码恢复到一个历史的版本
Git 将代码恢复到一个历史的版本 要把代码回到某个历史版本 比如 test有两种方法 暴力的方式 如果你的仓库是自己在用(不影响别人),那么你可以使用 git reset --hard <ta ...
- 1028:Ignatius and the Princess III
本题应该有两种方法: 1.母函数法 2.递推法 母函数不了解,待充分了解之后,再进行补充! 这里为递推实现的方法: 思路: 定义:n为要拆分的整数: k为拆分的项数: f[n][k]代表 n的整数拆分 ...
- (精华)将json数组和对象转换成List和Map(小龙哥和牛徳鹤的对话)
将java标准的数据结构ArrayList和HashMap转换成json对象和数组很简单 只需要JSONArray.fromObject(obj);或者JSONObject.fromObject(ob ...
- kudu 虚拟机环境使用
安装 curl -s https://raw.githubusercontent.com/cloudera/kudu-examples/master/demo-vm-setup/bootstrap ...
- oracle之 安装 11G RAC 报 NTP failed
问题描述: 使用 NTP 同步集群节点时间,安装 11G RAC 报 NTP 过不去. 解决过程:-- 查看 /etc/sysconfig/ntpd 文件配置root@hbdw1:/root$cat ...
- brave-zipkin的日志源码分析
其实在zipkin的日志里面作为发送端日志两个,sr,ss,这个日志是servlet产生的:接收端日志是四个,分别是cr,sr,ss,cs:cr和cs分别是上游的日志的信息:ss和sr是接收端输出的日 ...
- .NET可变性解析(协变和逆变)
[一]何为可变性 可变性是.NET4.0中的一个新特性,可变性可分为 : 协变性.逆变性.不可变性. 那么在.NET4.0之前是否有可变性? 答案是肯定的,我们可以通过下面的几个实例来简单的了解一下. ...