docker创建Redis集群
开始工作:
yum install wegt ##安装下载工具
yum install net-tools ##安装网络工具
yum install tree ##安装tree命令(方便查看集群配置文件结构)
yum -y update ##跟新系统
安装ruby镜像
docker pull ruby
安装Redis镜像
首先查询Redis镜像 : docker search Redis
下载最新的Redis : docker pull redis:laster
创建虚拟网卡
首先查询虚拟网卡:docker search network

最后下载虚拟网卡: docker create networkboot/dhcpd redis-net
下载成功进行查询 docker network ls
查看redis-net的虚拟网卡网关IP
docker network inspect redis-net | grep "Gateway" | grep --color=auto -P '(\d{1,3}.){3}\d{1,3}' -o

创建配置文件模板
- mkdir /home/redis-cluster ##在home 目录下创建 集群配置文件加
- cd /home/redis-cluster ##在创建目录
- vim redis-cluster.tmpl ##编辑模版文件
备注:编辑如下 esc+:wq退出
port ${PORT} ##节点端口
cluster-enabled yes ##cluster集群模式
cluster-config-file nodes.conf ##集群配置名
cluster-node-timeout 5000 ##超时时间
cluster-announce-ip 172.18.0.1 ##实际为各节点网卡分配ip 先用上网关ip代替
cluster-announce-port ${PORT} ##节点映射端口
cluster-announce-bus-port 1${PORT} ##节点总线端
appendonly yes ##持久化模式
备注:此模版文件为集群节点通用文件 其中${PORT} 将读取命令行变量 ip则根据网卡分配ip进行替换 以保证节点配置文件除端口以及ip 全部一致。
创建节点配置文件
for port in `seq 7010 7015`; do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
备注:命令译为 循环7010 - 7015 在当前目录下创建 701*/conf 目录结构 (mkdir -p 递归创建目录)
设置701*为PORT变量 将当前目录下 模版文件 复制到 701*/conf/redis.conf 文件中
在当前目录下创建 701*/data 目录结构
使用tree查看是否生成
修改里面的IP, 172.18.0.2 - 172.18.0.7
使用
cat 701*/conf/redis.conf 查看文件
关键一步来了,启动Redis节点容器。
for port in `seq 7010 7015`; do \
docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
--privileged=true -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
--privileged=true -v /home/redis-cluster/${port}/data:/data \
--restart always --name redis-${port} --net redis-net \
--sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \
done
备注:命令译为 循环7010 - 7015 运行redis 容器
docker run 运行
-d 守护进程模式
--restart always 保持容器启动
--name redis-710* 容器起名
--net redis-net 容器使用虚拟网卡
-p 指定宿主机器与容器端口映射 701*:701*
-P 指定宿主机与容器redis总线端口映射 1701*:1701*
--privileged=true -v /home/redis-cluster/701*/conf/redis.conf:/usr/local/etc/redis/redis.conf
付权将宿主701*节点文件挂载到容器/usr/local/etc/redis/redis.conf 文件中
--privileged=true -v /home/redis-cluster/${port}/data:/data \
付权将宿主701*/data目录挂载到容器/data目录中
--sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;
容器根据挂载的配置文件启动 redis服务端
查看容器:

查看容器IP分配:docker network inspect redis-net
启动集群:
echo yes | docker run -i --rm --net redis-net ruby sh -c '\
gem install redis \
&& wget http://download.redis.io/redis-stable/src/redis-trib.rb \
&& ruby redis-trib.rb create --replicas 1 \
'"$(for port in `seq 7010 7015`; do \
echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ; \
done)"
docker创建Redis集群的更多相关文章
- Docker Swarm redis 集群搭建
Docker Swarm redis 集群搭建 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docke ...
- 基于Docker的redis集群搭建
Redis集群官方介绍:http://www.redis.cn/topics/cluster-tutorial.html 基于Docker搭建Redis集群 环境:6个节点,三主三从 制作Redis镜 ...
- docker 实现redis集群搭建
摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群. 首先,我们需要理论知识:Redis Cluster是Re ...
- 四十.创建Redis集群 管理集群
环境准备 准备 6台(51-56) redis服务器 以默认配置运行redis服务即可 一.创建Redis集群 1.启用集群功能( 51-56 都要配置) ]# netstat -antupl ...
- 重新创建redis集群的注意事项
一.重新创建redis集群的注意事项 1.将每个节点下aof.rdb.nodes.conf本地备份文件删除: 2.127.0.0.1:7001> flushdb #清空当前数据库(这一步可以省略 ...
- AWS 创建redis 集群模式遇到的问题
问题描述 前几天在aws 平台创建了Redis 集群模式,但是链接集群的时候发现无法连接,返回信息超时. 通过参数组创建redis的时候提示报错:Replication group with spec ...
- 使用Docker构建redis集群--最靠谱的版本
1集群结构说明 集群中有三个主节点,三个从节点,一共六个结点.因此要构建六个redis的docker容器.在宿主机中将这六个独立的redis结点关联成一个redis集群.需要用到官方提供的ruby脚本 ...
- Docker:Docker搭建Redis集群(6)
国外的公有云实在是太慢了,经常time out 这里搜集几个国内出名的: hub.c.163.com (网易:https://c.163.com/hub#/m/home/) dev.aliyun.co ...
- 利用docker部署redis集群
目录 一.首先配置redis.conf文件,... 1 1.获取配置文件... 1 2.修改各配置文件的参数... 2 二.下载redis镜像.启动容器... 2 1.创建网络... 2 2.拉取镜像 ...
随机推荐
- leetcode 169. Majority Element 、229. Majority Element II
169. Majority Element 求超过数组个数一半的数 可以使用hash解决,时间复杂度为O(n),但空间复杂度也为O(n) class Solution { public: int ma ...
- 前端——jQuery
初识jQuery 什么是jQuery? jQuery就是JavaScript和Query,是辅助JavaScript开发的库,应用广泛,形成了行业标准.它对DOM操作做了很好的封装,我们可以用jQue ...
- go笔记-限速器(limiter)
参考: https://blog.csdn.net/wdy_yx/article/details/73849713https://www.jianshu.com/p/1ecb513f7632 http ...
- 实现简单的printf函数
首先,要介绍一下printf实现的原理 printf函数原型如下: int printf(const char* format,...); 返回值是int,返回输出的字符个数. 例如: int mai ...
- Spring Boot JPA Entity Jackson序列化触发懒加载的解决方案
Spring Jpa这项技术在Spring 开发中经常用到. 今天在做项目用到了Entity的关联懒加载,但是在返回Json的时候,不管关联数据有没有被加载,都会触发数据序列化,而如果关联关系没有被加 ...
- Ubuntu安装mysql之后,编译找不到头文件
解决Ubuntu安装mysql之后找不到mysql.h问题 安装: sudo apt-get install libmysqlclient-dev 编译: gcc test.c -o test ...
- 控制结构(7): 程序计数器(PC)
// 上一篇:最近最少使用(LRU) // 下一篇:线性化(linearization) 程序的每一行都是一个状态,对应的行指令.同步的情况下同一个pc一直自增,异步的时候,分裂出一个新的子pc,独立 ...
- JS实现刷新页面后回到记录时滚动条的位置
window.onbeforeunload = function () { var scrollPos; if (typeof window.pageYOffset != 'undefined') { ...
- "unexpected console statement” in Node.js
.eslintrc.js module.exports = { rules: { 'no-console': 'off', }, };
- Vue学习笔记5
列表渲染 用 v-for 把一个数组对应为一组元素 <div id="app"> <li v-for = "item in array"> ...