docker之构建redis-cluster集群
下载和编译redis安装包
参考:https://www.cnblogs.com/cwp-bg/p/8094914.html
# 从官方网站下载安装包,注意,当前在哪个目录下执行命令,下载的包将在哪个目录下
$ wget http://download.redis.io/releases/redis-4.0.6.tar.gz
# 将下载包解压
$ tar -zxvf redis-4.0.6.tar.gz
# 进入解压后的文件夹
$ cd redis-4.0.6
# 对文件进行编译,得到可执行的文件和配置文件
$ sudo make
修改redis.conf
# 创建一个目录
mkdir /data
# 复制一份redis.conf到data目录
cp redis.conf /data/6380.conf
vi /data/6380.conf
bind 0.0.0.0 # 绑定ip
port 6380 # 修改端口
daemonize no # 前台运行,暴露给docker管理,否则启动容器会失败
dbfilename dump.rdb # 设置持久化文件
# 设置集群参数
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
docker安装redis
# 查询
docker search redis
#拉取镜像,可指定redis的版本,不指定默认最新
docker pull redis:4.0.6
# 查看
docker images
启动容器
docker run -p 6380:6380 # 指定端口映射
--net host # 使用host网络模式(一定要这个参数)
-v /data/6380.conf:/etc/redis/redis.conf # 挂载配置文件
--name myredis1
-d redis:4.0.6 redis-server /etc/redis/redis.conf # 使用配置文件启动
- 同理启动六个
docker run --net host -v /data/6380.conf:/etc/redis/redis.conf --name myredis1 -d redis:4.0.6 redis-server /etc/redis/redis.conf
docker run --net host -v /data/6381.conf:/etc/redis/redis.conf --name myredis2 -d redis:4.0.6 redis-server /etc/redis/redis.conf
docker run --net host -v /data/6382.conf:/etc/redis/redis.conf --name myredis3 -d redis:4.0.6 redis-server /etc/redis/redis.conf
docker run --net host -v /data/6383.conf:/etc/redis/redis.conf --name myredis4 -d redis:4.0.6 redis-server /etc/redis/redis.conf
docker run --net host -v /data/6384.conf:/etc/redis/redis.conf --name myredis5 -d redis:4.0.6 redis-server /etc/redis/redis.conf
docker run --net host -v /data/6385.conf:/etc/redis/redis.conf --name myredis6 -d redis:4.0.6 redis-server /etc/redis/redis.conf
- 查看
docker exec -i -t myredis1 bash
redis-cli -p 6380
# 外部访问
redis-cli -p 6380
- 注意:启动集群模式后,所有的数据只能使用db0,其他的数据库是不可用的。
创建集群
- 制作一个集群管理工具镜像
# vi Dockerfile
FROM ubuntu:16.04
MAINTAINER cwp "13926902570"
ADD sources.list /etc/apt/sources.list # 更换apt源
RUN apt-get update
RUN apt -y install ruby # 安装ruby
RUN gem install redis
ADD ./redis-4.0.6.tar.gz /usr/local/ # 将本地下载编译的redis文件添加到容器中,会自动解压缩
RUN cd /usr/local/
- 创建镜像
docker build -t redis_trib:v1 /usr/local/
注意:保证需要添加的文件和Dockerfile在同一个目录下。
创建一个交互模式的容器
docker run -it redis_trib:v1 --name myredis_trib /bin/bash
- 获取目前所有的redis容器的ip和端口,由于是host模式启动,主机ip和容器ip一样
docker inspect myredis1 myredis2 myredis3 myredis4 myredis5 myredis6 | grep IPAdress
- 进入容器创建集群
cd redis-4.0.6/src/
redis-trib.rb create ip:port ... ipN:portN
# 查看所有的集群节点
./redis-trib.rb info ip:port
或登录任意节点
cluster info
cluster nodes # 最前面就是节点的ID
- 自此我们创建的是3个主节点的集群
redis-cluster主从模型
注意:在redis-cluster集群环境中,启用了cluster配置的情况下slaveof是不可用的。
为当前的主节点添加从节点
方法一:
redis-trib.rb add-node --slave --master-id 主节点id 新节点ip和port 旧的任意主节点
方法二:
redis-cli -p 6383
redis-trib add-node 新节点ip和port 旧的任意主节点
cluster replicate 主节点ID # 指定当前节点为哪个主节点的从节点
- 自此3主3从的redis集群在docker上创建完毕。
docker之构建redis-cluster集群的更多相关文章
- Docker Compose 搭建 Redis Cluster 集群环境
在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...
- docker下创建redis cluster集群
概述 在Redis中,集群的解决方案有三种 主从复制 哨兵机制 Cluster Redis Cluster是Redis的分布式解决方案,在 3.0 版本正式推出. 准备工作 1.确定本机IP地址 2. ...
- Docker构建redis cluster集群
准备工作 安装gcc ruby 解压编译redis Redis 是 c 语言开发的.安装 redis 需要 c 语言的编译环境.如果没有 gcc 需要在线安装. yum install gcc-c++ ...
- centos6下redis cluster集群部署过程
一般来说,redis主从和mysql主从目的差不多,但redis主从配置很简单,主要在从节点配置文件指定主节点ip和端口,比如:slaveof 192.168.10.10 6379,然后启动主从,主从 ...
- Docker 搭建 Redis Cluster 集群环境
使用 Docker 搭建 Redis Cluster,最重要的环节就是容器通信的问题,这一块我们在之前的文章中已经给大家解决了<Docker 网络模式详解及容器间网络通信>,本篇文章主要练 ...
- 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 ...
- 搭建分布式 Redis Cluster 集群与 Redis 入门
目录 Redis 集群搭建 Redis 是啥 集群(Cluster) Redis Cluster 说明 Redis Cluster 节点 Redis Cluster 集群模式 不能保证一致性 创建和使 ...
随机推荐
- 【uoj#310】[UNR #2]黎明前的巧克力 FWT
题目描述 给出 $n$ 个数,从中选出两个互不相交的集合,使得第一个集合与第二个集合内的数的异或和相等.求总方案数. 输入 第一行一个正整数 $n$ ,表示巧克力的个数.第二行 $n$ 个整数 $a_ ...
- scoket常用函数简单介绍
scoket: 是一种抽象层,应用程序通过它来发送和接收数据,使用socket可以将应用程序添加到网络中,与处于同一网络中的其他应用程序进行通信. 简单来说,scoket提供了程序内部与外界通道的 ...
- C++解析(26):函数模板与类模板
0.目录 1.函数模板 1.1 函数模板与泛型编程 1.2 多参数函数模板 1.3 函数重载遇上函数模板 2.类模板 2.1 类模板 2.2 多参数类模板与特化 2.3 特化的深度分析 3.小结 1. ...
- Python下json中文乱码解决办法
json.dumps在默认情况下,对于非ascii字符生成的是相对应的字符编码,而非原始字符,只需要 #coding=utf8 import json js = json.loads('{" ...
- 【刷题】BZOJ 1468 Tree
Description 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K Input N(n<=40000) 接下来n-1行边描述管道,按照题目中写的输入 接下来是 ...
- 【bzoj1878】[SDOI2009]HH的项链
考虑非莫队的离线算法.. 若[l,r]中有重复数值很麻烦,考虑取一个数为代表(最左或最右) 1.最左:用BIT,先把所有第一个出现的数扔进去,将询问左端点升序,每次都可能产生历史的无用点,并出现新的“ ...
- UVA - 1262 数学
UVA - 1262 题意: 有两个6*5 的大写字母组成的矩阵,需要找出满足条件的字典序第k小的密码:密码中每个字母在两个矩阵的对应的同一列中都出现过 代码: // 先处理出来每一列可以取的字母,例 ...
- Rabbitmq -- rpc
一.前言 MQ本身是基于异步的消息处理,前面的示例中所有的生产者(P)将消息发送到RabbitMQ后不会知道消费者(C)处理成功或者失败(甚至连有没有消费者来处理这条消息都不知道).但实际的应用场景中 ...
- 个人最常用的vim操作
本文只记录个人工作中最常用到的vim快捷键,不是很全,但是已经覆盖了绝大多数功能. 参考:<鸟哥Linux私房菜>以及https://www.cnblogs.com/momofan/p/5 ...
- 前端PHP入门-029-文件操作-掌握级别
人生只有三天,活在昨天的人迷惑:活在明天的人等待:活在今天的人最踏实.你永远无法预测意外和明天哪个来得更早,所以,我们能做的,就是尽最大的努力过好今天.请记住:今天永远是昨天死去的人所期待的明天. f ...