前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >docker redis4.0集群搭建

docker redis4.0集群搭建

作者头像
py3study
发布于 2020-03-09 02:33:43
发布于 2020-03-09 02:33:43
1K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

一、前言

redis集群对于很多人来说非常熟悉,在前些日子,我也有一位大兄弟也发布过一篇关于在阿里云(centOS7)上搭建redis 集群的文章,虽然集群搭建的文章在网上很多,我比较喜欢这篇文章的地方是他在搭建过程中,指出一些我们会遇到而别人没有指出的问题。

在这里,我同样带给大家一遍关于阿里云(centOS7)redis集群搭建的文章,但是这次搭建有所不同的是,它是在docker上搭建的redis集群。

环境说明

采用单机部署

操作系统

ip

docker版本

redis版本

centos 7.6

192.168.31.150

19.03.5

4.0.10

二、准备镜像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker pull redis:4.0.10docker pull ruby

说明:ruby用是来做加入集群的用的,仅一次使用。

三、搭建

创建redis配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir -p /data/redis-cluster
vi /data/redis-cluster/redis-cluster.tmpl

内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
port ${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.31.150
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly no

注意:ip地址修改为本机ip

配置文件解释

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
port ${PORT}                        ##节点端口
protected-mode no                   #关闭protected-mode模式,外部网络可以直接访问
cluster-enabled yes                 ##cluster集群模式
cluster-config-file nodes.conf      ##集群配置名
cluster-node-timeout 5000           ##超时时间
cluster-announce-ip 192.168.31.150  ##实际为各节点网卡分配ip  先用上网关ip代替
cluster-announce-port ${PORT}       ##节点映射端口
cluster-announce-bus-port 1${PORT}  ##节点总线端
appendonly no                      ##持久化模式

 备注:此模版文件为集群节点通用文件 其中${PORT} 将读取命令行变量

创建自定义network

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker network create redis-net

生成配置文件

生成conf和data目录,并生成配置信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for port in `seq 7000 7005`; do \
  mkdir -p ./${port}/conf \
  && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
  && mkdir -p ./${port}/data; \
done

共生成6个文件夹,从7000到7005,每个文件夹下包含data和conf文件夹,同时conf里面有redis.conf配置文件

创建容器

创建6个redis容器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for port in `seq 7000 7005`; do \
  docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
  -v /data/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  -v /data/redis-cluster/${port}/data:/data \
  --restart always --name redis-${port} --net redis-net \
  --sysctl net.core.somaxconn=1024 redis:4.0.10 redis-server /usr/local/etc/redis/redis.conf; \
done

至此,通过命令docker ps可查看刚刚生成的6个容器信息

四、创建集群

通过启动ruby来实现集群

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo yes | docker run -i --rm --net redis-net ruby sh -c '\
  gem install redis \
  && wget http://download.redis.io/releases/redis-4.0.10.tar.gz \
  && tar xvf redis-4.0.10.tar.gz && cd redis-4.0.10/src \
  && ruby redis-trib.rb create --replicas 1 \
  '"$(for port in `seq 7000 7005`; do \
    echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ; \
  done)"

它其实就是调用了命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ruby redis-trib.rb create --replicas 1 172.18.0.2:7000  172.18.0.3:7001  172.18.0.4:7002  172.18.0.5:7003  172.18.0.6:7004  172.18.0.7:7005

输出如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join..
>>> Performing Cluster Check (using node 172.18.0.2:7000)
M: a779c88a19a2582620d0a1ad3f90431f92f91af5 172.18.0.2:7000
   slots:0-5460 (5461 slots) master
additional replica(s)
M: 880a2b0671d0ff15192e758ff7204ccf15f52cd0 192.168.31.150:7002
   slots:10923-16383 (5461 slots) master
additional replica(s)
S: 3b04d5b6bcd86efaaceb2002087729bcb9bb1c07 192.168.31.150:7005
   slots: (0 slots) slave
   replicates 5e33b75081c76bfc677e1941fdc2577709280f77
M: 5e33b75081c76bfc677e1941fdc2577709280f77 192.168.31.150:7001
   slots:5461-10922 (5462 slots) master
additional replica(s)
S: dad167c467186794e5095b58a0f43e443ff692fb 192.168.31.150:7003
   slots: (0 slots) slave
   replicates 880a2b0671d0ff15192e758ff7204ccf15f52cd0
S: fa3775cbcdd0512de4fe2c208de1046b5369e0b3 192.168.31.150:7004
   slots: (0 slots) slave
   replicates a779c88a19a2582620d0a1ad3f90431f92f91af5
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

能看到3主3从,说明集群成功了。

查看集群信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# docker exec -it redis-7000 /bin/bash -c "redis-cli -p 7000 cluster nodes"
880a2b0671d0ff15192e758ff7204ccf15f52cd0 192.168.31.150:7002@17002 master - 0 1573806315290 3 connected 10923-16383
3b04d5b6bcd86efaaceb2002087729bcb9bb1c07 192.168.31.150:7005@17005 slave 5e33b75081c76bfc677e1941fdc2577709280f77 0 1573806316296 6 connected
5e33b75081c76bfc677e1941fdc2577709280f77 192.168.31.150:7001@17001 master - 0 1573806315000 2 connected 5461-10922
dad167c467186794e5095b58a0f43e443ff692fb 192.168.31.150:7003@17003 slave 880a2b0671d0ff15192e758ff7204ccf15f52cd0 0 1573806316800 4 connected
fa3775cbcdd0512de4fe2c208de1046b5369e0b3 192.168.31.150:7004@17004 slave a779c88a19a2582620d0a1ad3f90431f92f91af5 0 1573806316000 5 connected
a779c88a19a2582620d0a1ad3f90431f92f91af5 192.168.31.150:7000@17000 myself,master - 0 1573806315000 1 connected 0-5460

测试写入和读取

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# docker exec -it redis-7000 /bin/bash
127.0.0.1:7000> set a 123
-> Redirected to slot [15495] located at 192.168.31.150:7002
OK
192.168.31.150:7002> get a
“123192.168.31.150:7002>

本文参考链接: https://www.cnblogs.com/lianggp/articles/8136222.html https://blog.csdn.net/qq_22211217/article/details/80436996

注意:参考链接中的redis-trib.rb,不能使用了。已经更新了!

所以,必须得用redis源码中的redis-trib.rb

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Windows 10系统电脑一键锁屏的三种方法
在Windows 10系统中,电脑开机后默认第一个稳定画面即锁屏界面(有登录密码),如果我们离开电脑且不想让别人看到屏幕上的内容,可以锁定电脑屏幕。
用户7492989
2020/06/23
54.2K0
Windows 10系统电脑一键锁屏的三种方法
Windows关机、锁屏、休眠和快捷命令
新建关机.txt文件,填写下面内容 -> 保存 ,重命名关机.bat ,60秒后关机
咻一咻
2020/06/19
7K0
抓取内存口令一个小技巧
学过徐老师《内网安全攻防:渗透测试实战指南》第五章的⼩伙伴都知道,巨硬为了防⽌密码在内存中以明⽂形式泄露,发布了KB2871997补丁,⽤来关闭Win7和08的Wdigest功能,同时Server2012版以上默认关闭该功能,但是仍然可以通过修改注册表的⽅法来⼿动开启。
Ms08067安全实验室
2021/07/16
8060
win10锁定计算机命令,锁定Windows 10 PC的10种方法
离开时,锁定Windows 10 PC是保护计算机安全的最佳方法。这不会退出或中断任何正在运行的应用程序,您必须输入PIN或密码才能通过锁定屏幕。您可以通过以下10种方式锁定计算机。
全栈程序员站长
2022/09/16
6.5K0
win10锁定计算机命令,锁定Windows 10 PC的10种方法
玩机技巧 | Windows 离座锁屏功能更新,再也不用担心忘记锁屏了!
针对有上述问题的朋友,这里 UP简单、快速的介绍一下 Windows 10 、11 系统有多种方式锁屏。
全栈工程师修炼指南
2024/05/11
9850
玩机技巧 | Windows 离座锁屏功能更新,再也不用担心忘记锁屏了!
win10键锁定计算机,win10系统创建一键锁定计算机的快捷方式的操作方法
很多win10用户在使用电脑的时候,会发现win10系统创建一键锁定计算机的快捷方式的的现象,根据小编的调查并不是所有的朋友都知道win10系统创建一键锁定计算机的快捷方式的的问题怎么解决,不会的朋友也不用担心,下面我就给大家讲解一下win10系统创建一键锁定计算机的快捷方式的的少许解决办法,其实步骤很简单,只需要1、首先在桌面上的空白处鼠标右击选择“新建–快捷方式”,然后在弹出来的创建快捷方式界面中,在“请键入对象的位置”框中输入:rundll32.exe user32.dll,Lockworkstation,并点击“下一步”; 2、然后输入快捷方式名称,名称可以自己写,比如”锁定目标“,创建完成之后点击完成,这时桌面就会出现一个“锁定目标”的快捷方式;这样的方式进行电脑操作,的步骤就可以搞定了,还有不知道win10系统创建一键锁定计算机的快捷方式怎么解决的朋友赶快来学习一下吧!
全栈程序员站长
2022/09/13
8540
win10键锁定计算机,win10系统创建一键锁定计算机的快捷方式的操作方法
winxp一键锁定计算机,如何快速锁定计算机 XP系统锁定计算机操作方法【详解】…「建议收藏」
电脑锁屏有两种常用的方法:一种是系统锁屏,一种是借助软件锁屏。系统锁屏快捷键:windows+L或直接在win7系统“开始—>关机按钮后面的三角按钮—>锁定”(不同的系统不同的计算机不同。
全栈程序员站长
2022/09/13
6900
Python自动锁屏–window系统「建议收藏」
天天面对着电脑敲代码,你是否忘记了保护视力了,眼睛的度数在上涨,镜片变厚,这是我们期望的么?今天有点空闲时间,写了个Python自动锁屏脚本,使用的是Python 2.7,代码如下
全栈程序员站长
2022/09/13
1.4K0
获取Windows高版本明文密码
声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
潇湘信安
2021/03/10
1.9K0
获取Windows高版本明文密码
编程打开控制面板及各项
大家好,又见面了,我是你们的朋友全栈君。 程序打组件服务C:\WINDOWS\system32\Com\comexp.msc 注销程序路径 C:\WINDOWS\system32\logoff.exe 智能ABC的用户词库位置 C:\Documents and Settings\用户名\ApplicationData\Microsoft\IME\winabc 造字程序的路径C:\WINDOWS\system32\eudcedit.exe 语言栏显示程序路径C:\WINDOWS\system32\ctfmon
全栈程序员站长
2022/09/13
1.3K0
经典vbs代码收集「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144726.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/30
1.8K0
用xp系统的rundll32进行锁屏!!!!!劲爆!!!!!
http://hi.baidu.com/joleincn/blog/item/d1dfb7d939c69fe177c638b0.html
全栈程序员站长
2022/09/13
8250
用xp系统的rundll32进行锁屏!!!!!劲爆!!!!!
记一次对PUBG吃鸡外挂病毒的反制过程
这事还要从一只蝙蝠开始说起~...........疫情的原因在家闲的翻箱倒柜,翻出了这么个玩意,没错这就是“压枪神器”想当初我把把落地成盒又在某宝铺天盖地的推送下,忍痛割爱花了百来块钱买了这神器。
HACK学习
2020/04/27
1.6K0
记一次对PUBG吃鸡外挂病毒的反制过程
记一次未完成内网渗透实战记录
这篇文章来自@sin好友投稿,最近闲来无事做,找口子提升内网渗透水平,通过fofa语法找到了一个Jenkins入口。
潇湘信安
2022/09/22
7000
记一次未完成内网渗透实战记录
一键锁定计算机快捷方式,还原win8系统创建一键锁定计算机的快捷方式的技巧…
今天和大家分享一下关于对win8系统创建一键锁定计算机的快捷方式设置的方法,在使用win8系统的过程中经常不知道如何去对win8系统创建一键锁定计算机的快捷方式进行设置,有什么好的办法去设置win8系统创建一键锁定计算机的快捷方式呢?在这里小编教你只需要1、首先在桌面上的空白处鼠标右击选择“新建–快捷方式”,然后在弹出来的创建快捷方式界面中,在“请键入对象的位置”框中输入:rundll32.exe user32.dll,Lockworkstation,并点击“下一步”; 2、然后输入快捷方式名称,名称可以自己写,比如”锁定目标“,创建完成之后点击完成,这时桌面就会出现一个“锁定目标”的快捷方式;就搞定了。下面小编就给小伙伴们分享一下对win8系统创建一键锁定计算机的快捷方式进行设置的详细步骤:
全栈程序员站长
2022/09/13
4670
一键锁定计算机快捷方式,还原win8系统创建一键锁定计算机的快捷方式的技巧…
USB钓鱼几种方式总结。
当目标点开美图(恶意LNK快捷方式文件:confidential.jpg.lnk),使目标认为他正在打开图像(confidential.jpg),HTA dropper 隐藏在快捷方式文件中。LNK将执行HTA,HTA将依次执行并删除的DLL payload,并且用诱饵图片替换快捷方式(confidential.jpg)。过程如下:
重生信息安全
2020/03/06
1.4K0
【手记】为windows2008建个睡眠快捷方式
----------------201607041343更新----------------
AhDung
2018/09/13
1.1K0
APT29分析报告
APT29是威胁组织,已被归于俄罗斯政府情报组织,APT29至少从2008年开始运作,具有YTTRIUM、The Dukes、Cozy Duke、Cozy Bear、Office Monkeys等别名。主要攻击目标为美国和东欧的一些国家。攻击目的是为了获取国家机密和相关政治利益,包括但不限于政党内机密文件,操控选举等。与APT28,同属于俄罗斯政府的APT28相互独立,但在某种程度上会联合行动。APT29是东欧地区最为活跃的APT组织之一。该APT的许多组件均通过伪造的Intel和AMD数字证书进行签名。
FB客服
2020/02/12
2K0
APT29分析报告
Linux+Windows命令行终端下载指令大全
0x01 Linux 2.1 Wget 这款工具功能很丰富,可以充当某种功能完备的GUI下载管理器,它拥有一款理想的下载管理器所需要的所有功能,比如它可以恢复下载,可以下载多个文件,出现某个连接问题后,可以重新尝试下载,你甚至可以管理最大的下载带宽。 直接下载: wget http://www.sample-videos.com/video/mp4/big.mp4 后台下载: wget -b http://www.sample-videos.com/video/mp4/big.mp4 如果互联网连接出现
入门笔记
2022/06/02
2.6K0
Linux+Windows命令行终端下载指令大全
计算机桌面锁写快捷,锁定计算机快捷键_锁定计算机的快捷键
当有事需暂时离开,又不想他人动用电脑时,可采取锁定桌面的办法。1 、首先要在电脑中设置好一个用户帐户密码(开机密码)。在锁定桌面时,只需按Win十L键(即按住那个有微软视窗图标的键…
全栈程序员站长
2022/09/13
9680
计算机桌面锁写快捷,锁定计算机快捷键_锁定计算机的快捷键
推荐阅读
相关推荐
Windows 10系统电脑一键锁屏的三种方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档