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 ...
随机推荐
- iis6手工创建网站后无法运行php脚本
给人搬了十几个网站,老站用西部数码建站助手创建的,现在过期了无法继续创建,只能在Internet 信息服务(IIS)管理器创建网站,创建下来都没问题,但是就是无法打开网站. 测试打开txt文档.静态页 ...
- Alpha阶段第1周Scrum立会报告+燃尽图 01
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 一.小组介绍 组长:刘莹莹 组员:朱珅莹 孙韦男 祝玮琦 王玉潘 ...
- Nginx下载和安装与启动
nginx是什么 nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件.它是一个俄罗斯人lgor sysoev开发的,作者将源代码开源出来供全球使用. nginx比它大哥apache性 ...
- 关于const 和指针
这个很久之前就很困扰的问题,现在再理一下: 1,指向const对象的指针 >C++强制要求指向const对象的指针也必须具有const特性!!!也就是不能把一个const对象的地址赋给一个非co ...
- 【thrift】thrift入门初探--thrift安装及java入门实例
转载:https://www.cnblogs.com/fingerboy/p/6424248.html 公司的一些平台服务框架底层封装了thrift提供服务,最近项目不是很紧,于是研究了一下,刚刚入门 ...
- python 中datetime 和 string 转换
dt = datetime.datetime.strptime(string_date, fmt) fmt 的格式说明如下: https://docs.python.org/2/library/dat ...
- vue+webpack多个项目共用组件动态打包单个项目
原文复制:https://www.jianshu.com/p/fa19a07b1496 修改了一些东西,因为sh脚本不能再window电脑执行,所以改成了node脚本.这是基于vue-cli2.0配置 ...
- emacs之配置speedbar
安装sr-speedbar,这样的话,speedbar就内嵌到emacs里面了 emacsConfig/speedbar-setting.el (require 'sr-speedbar) (setq ...
- 黄聪:WordPress实现HTML5预加载
WordPress实现HTML5预加载方法很简单,把下面代码: <?php if (is_archive() && ($paged > 1) && ($pa ...
- HDU 2516 取石子游戏(斐波那契)
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...