RedisCluster的安装、部署、扩容和 Java客户端调用

Redis下载

  • 官网地址:http://redis.io/

  • 中文官网地址:http://www.redis.cn/

  • 下载地址:http://download.redis.io/releases/

安装

# (三台)安装 C 语言需要的 GCC 环境
yum install -y gcc-c++ 
yum install -y wget
# 下载并解压缩 Redis 源码压缩包
wget http://download.redis.io/releases/redis-5.0.5.tar.gz 
tar -zxf redis-5.0.5.tar.gz -C ../servers/
# 编译 Redis 源码,进入 redis-5.0.5 目录,执行编译命令
cd redis-5.0.5/src 
make
# 安装 Redis ,需要通过 PREFIX 指定安装路径
mkdir /opt/bigdata/servers/redis-cluster/master1 -p 
make install PREFIX=/opt/bigdata/servers/redis-cluster/master1

error

# make 时 出现:
# zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory
make MALLOC=libc
# You need tcl 8.5 or newer in order to run the Redis test
yum install tcl -y

需求

在这里插入图片描述

(1)搭建Redis5.0集群,要求三主三从,记录下安装步骤

(2)能够添加一主一从(Master4和Slaver4),记录下安装步骤

(3)能够通过JedisCluster向RedisCluster添加数据和取出数据

解答

集群规划

虚拟机ip持有角色端口
linux01:192.168.80.121master1
slaver1
6379
6380
linux02:192.168.80.122master2
slaver2
6379
6380
linux03:192.168.80.123master3
slaver3
6379
6380
linux01:192.168.80.121(准备添加主从)master4
slaver4
7000
7001

编辑配置文件

# 1.拷贝conf文件到bin下
[root@linux02 redis-5.0.5]# cp redis.conf ../redis/bin/
# 2.编辑conf文件69 # bind 127.0.0.1		# 注掉bind 允许外界访问
88 protected-mode no	# 将yes改成no,允许外界访问
92 port 6379			# 端口号
136 daemonize yes		# 将no改成yes,允许后台启动
832 cluster-enabled yes	# 开启cluster

分配启动目录

# 拷贝出从机
[root@linux01 redis-cluster]$ cp -r master1/ slaver1
# 修改 端口号
[root@linux01 ~]$ sed -i '92c port 6380' /opt/bigdata/servers/redis-cluster/slaver1/bin/redis.conf
# 查看 修改结果
[root@linux01 ~]$ sed -n '92p' /opt/bigdata/servers/redis-cluster/slaver1/bin/redis.conf
# 发送给 其他两台
[root@linux01 servers]$ rsync -rvl /opt/bigdata/servers/redis-cluster root@linux02:/opt/bigdata/servers/
[root@linux01 servers]$ rsync -rvl /opt/bigdata/servers/redis-cluster root@linux03:/opt/bigdata/servers/
# 修改名称
[root@linux01 servers]$ ssh root@linux02 mv /opt/bigdata/servers/redis-cluster/master1/ /opt/bigdata/servers/redis-cluster/master2/
[root@linux01 servers]$ ssh root@linux02 mv /opt/bigdata/servers/redis-cluster/slaver1/ /opt/bigdata/servers/redis-cluster/slaver2
[root@linux01 servers]$ ssh root@linux03 mv /opt/bigdata/servers/redis-cluster/master1/ /opt/bigdata/servers/redis-cluster/master3/
[root@linux01 servers]$ ssh root@linux03 mv /opt/bigdata/servers/redis-cluster/slaver1/ /opt/bigdata/servers/redis-cluster/slaver3/
# 准备 master4 slaver4
[root@linux01 servers]$ cd /opt/bigdata/servers/redis-cluster/
[root@linux01 redis-cluster]$ cp -r master1/ master4
[root@linux01 redis-cluster]$ cp -r master1/ slaver4
[root@linux01 redis-cluster]$ sed -i '92c port 7000' /opt/bigdata/servers/redis-cluster/master4/bin/redis.conf
[root@linux01 redis-cluster]$ sed -i '92c port 7001' /opt/bigdata/servers/redis-cluster/slaver4/bin/redis.conf

编辑起服务脚本

start-rediscluster.sh

#!/bin/bash
pdir='/opt/bigdata/servers/redis-cluster'
user=`whoami`echo $pdir
for((i=1; i<4; i++)); doecho ---------------- linux0$i starting -------------------ssh $user@linux0$i 'cd '$pdir'/master'$i'/bin; ./redis-server ./redis.conf'ssh $user@linux0$i 'cd '$pdir'/slaver'$i'/bin; ./redis-server ./redis.conf'echo ---------------- linux0$i end -------------------
done

启动集群

# 启动集群chmod 777 start-rediscluster.sh
./ start-rediscluster.sh[root@linux01 redis-cluster]# ./start-rediscluster.sh 
/opt/bigdata/servers/redis-cluster
---------------- linux01 starting -------------------
8067:C 22 Dec 2020 13:12:34.458 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
8067:C 22 Dec 2020 13:12:34.458 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=8067, just started
8067:C 22 Dec 2020 13:12:34.458 # Configuration loaded
8080:C 22 Dec 2020 13:12:34.648 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
8080:C 22 Dec 2020 13:12:34.648 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=8080, just started
8080:C 22 Dec 2020 13:12:34.648 # Configuration loaded
---------------- linux01 end -------------------
---------------- linux02 starting -------------------
7909:C 22 Dec 2020 13:12:34.837 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
7909:C 22 Dec 2020 13:12:34.837 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=7909, just started
7909:C 22 Dec 2020 13:12:34.837 # Configuration loaded
7921:C 22 Dec 2020 13:12:35.030 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
7921:C 22 Dec 2020 13:12:35.030 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=7921, just started
7921:C 22 Dec 2020 13:12:35.030 # Configuration loaded
---------------- linux02 end -------------------
---------------- linux03 starting -------------------
7902:C 22 Dec 2020 13:12:35.238 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
7902:C 22 Dec 2020 13:12:35.238 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=7902, just started
7902:C 22 Dec 2020 13:12:35.238 # Configuration loaded
7914:C 22 Dec 2020 13:12:35.415 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
7914:C 22 Dec 2020 13:12:35.415 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=7914, just started
7914:C 22 Dec 2020 13:12:35.415 # Configuration loaded
---------------- linux03 end -------------------

# 添加 主从关系
[root@linux01 redis-cluster]# ./master1/bin/redis-cli --cluster create 192.168.80.128:6379 192.168.80.129:6379 192.168.80.130:6379 192.168.80.128:6380 192.168.80.129:6380 192.168.80.130:6380 --cluster-replicas 1

在这里插入图片描述

# 命令客户端连接集群
[root@linux01 redis-cluster]# ./master1/bin/redis-cli -p 6379 -c# 查看节点状态
127.0.0.1:6379> cluster nodes
b5a44319b12c3eaef610a28ca87033bb3445de94 192.168.80.129:6379@16379 master - 0 1608615527906 2 connected 5461-10922
5b5ac4ecd698bf1c02d8e931d267ec4bf9480564 192.168.80.128:6380@16380 slave cb05fcf924e135627ef2ea065911e3429cdbba0a 0 1608615528000 4 connected
923406a5110e9effe574e225785c973bab37df13 192.168.80.128:6379@16379 myself,master - 0 1608615527000 1 connected 0-5460
6e1d97680c0e8b6cc25b70c838a5a31c5d30f61a 192.168.80.130:6380@16380 slave b5a44319b12c3eaef610a28ca87033bb3445de94 0 1608615526895 6 connected
76dda73e1889613a17250aefaa10c2d60c3689f5 192.168.80.129:6380@16380 slave 923406a5110e9effe574e225785c973bab37df13 0 1608615528917 5 connected
cb05fcf924e135627ef2ea065911e3429cdbba0a 192.168.80.130:6379@16379 master - 0 1608615525000 3 connected 10923-16383

注error: 不能用ip 代理名
在这里插入图片描述

扩容

# 启动 master4 slaver4
[root@linux01 master4]# ./bin/redis-server ./bin/redis.conf 
8174:C 22 Dec 2020 13:44:30.996 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
8174:C 22 Dec 2020 13:44:30.996 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=8174, just started
8174:C 22 Dec 2020 13:44:30.996 # Configuration loaded[root@linux01 slaver4]# ./bin/redis-server ./bin/redis.conf 
8179:C 22 Dec 2020 13:44:54.980 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
8179:C 22 Dec 2020 13:44:54.980 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=8179, just started
8179:C 22 Dec 2020 13:44:54.980 # Configuration loaded# 连接集群
## 添加 master4
[root@linux01 redis-cluster]# ./master4/bin/redis-cli --cluster add-node 192.168.80.128:7000 192.168.80.128:6379

在这里插入图片描述

## 添加 slaver4
[root@linux01 slaver4]# ./bin/redis-cli --cluster add-node --cluster-slave --cluster-master-id 951955fc1a9df7d4b30cdaec5ba2624ed7d2786e 192.168.80.128:7001 192.168.80.128:7000

在这里插入图片描述

# 查看节点
127.0.0.1:6379> cluster nodes
951955fc1a9df7d4b30cdaec5ba2624ed7d2786e 192.168.80.128:7000@17000 master - 0 1608616973959 7 connected
5b5ac4ecd698bf1c02d8e931d267ec4bf9480564 192.168.80.128:6380@16380 slave cb05fcf924e135627ef2ea065911e3429cdbba0a 0 1608616972949 4 connected
cb05fcf924e135627ef2ea065911e3429cdbba0a 192.168.80.130:6379@16379 master - 0 1608616969930 3 connected 10923-16383
d055900e46fa866bf3b69c14d4d96f40ccb74ab8 192.168.80.128:7001@17001 slave 951955fc1a9df7d4b30cdaec5ba2624ed7d2786e 0 1608616971940 7 connected
b5a44319b12c3eaef610a28ca87033bb3445de94 192.168.80.129:6379@16379 myself,master - 0 1608616967000 2 connected 5461-10922
923406a5110e9effe574e225785c973bab37df13 192.168.80.128:6379@16379 master - 0 1608616970000 1 connected 0-5460
6e1d97680c0e8b6cc25b70c838a5a31c5d30f61a 192.168.80.130:6380@16380 slave b5a44319b12c3eaef610a28ca87033bb3445de94 0 1608616971000 6 connected
76dda73e1889613a17250aefaa10c2d60c3689f5 192.168.80.129:6380@16380 slave 923406a5110e9effe574e225785c973bab37df13 0 1608616972000 5 connected


---------------------
作者:Wang·Br
来源:CSDN
原文:https://blog.csdn.net/weixin_44847293/article/details/111537001
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CloudCompare教程】001:CloudCompare中文版下载与安装图文教程

CloudCompare是一款功能强大的点云后处理软件,本文讲解CloudCompare中文版下载与安装方法。 文章目录 一、CloudCompare下载地址二、CloudCompare安装教程三、CloudCompare中文设置一、CloudCompare下载地址 官方下载地址:http://www.danielgm.net/cc/release/ 二、CloudComp…

ML.NET相关资源整理

在人工智能领域&#xff0c;无论是机器学习&#xff0c;还是深度学习等&#xff0c;Python编程语言都是绝对的主流&#xff0c;尽管底层都是C实现的&#xff0c;似乎人工智能和C#/F#编程语言没什么关系。在人工智能的工程实现&#xff0c;通常都是将Python训练好的人工智能模型…

带参数的宏替换

带参数的宏替换因各种需求叠加&#xff0c;替换规则很怪异&#xff1a; 1、首先将实参替换形参&#xff0c;并展开宏 2、如果1步展开后&#xff0c;有#或者##&#xff0c;那么停止替换。 3、如果1步展开后&#xff0c;没有#或者##&#xff0c;且参数也是宏&#xff0c;那么继续…

JAVA学习日志(7-1-继承)

为什么80%的码农都做不了架构师&#xff1f;>>> 继承 1.提高代码复用性 2.让类与类之间产生关系&#xff0c;有了这个关系才有了多态的特性 **不要为了获取其他类的功能&#xff0c;简化代码而继承&#xff0c; 必须是类与类之间有所属关系才可以继承&#xff0c;所…

BZOJ 1370: [Baltic2003]Gang团伙 [并查集 拆点 | 种类并查集WA]

题意&#xff1a; 朋友的朋友是朋友&#xff0c;敌人的敌人是朋友&#xff1b;朋友形成团伙&#xff0c;求最多有多少团伙 种类并查集WA了一节课&#xff0c;原因是&#xff0c;只有那两种关系才成立&#xff0c;诸如朋友的敌人是朋友之类的都不成立&#xff01; 所以拆点做吧 …

常见Lidar点云数据处理及可视化软件汇总

常见的点云处理及可视化软件有&#xff1a; CloudCompare、Globalmapper、Pix4d、ArcGIS&#xff08;Pro&#xff09;、Lidar 360、PCL等等。 文章目录1. CloudCompare2. Globalmapper3. Pix4d4. ArcGIS&#xff08;Pro&#xff09;5. Lidar 3606. PCL1. CloudCompare CloudCo…

Spring 自带工具类汇总

断言 断言是一个逻辑判断&#xff0c;用于检查不应该发生的情况 Assert 关键字在 JDK1.4 中引入&#xff0c;可通过 JVM 参数-enableassertions开启 SpringBoot 中提供了 Assert 断言工具类&#xff0c;通常用于数据合法性检查 // 要求参数 object 必须为非空&#xff08;Not…

解决new Thread().Start导致高并发CPU 100%的问题

背景之前接手一个项目的时候&#xff0c;发现到处是new Thread(()>{ //do something }).Start();这么做的目的&#xff0c;无非是为了减少页面等待时间提高用户体验&#xff0c;把一些浪费时间的操作放到新线程中在后台运行。问题但是这样带来的问题是大量的创建线程&#x…

基于 HTML5 Canvas 绘制的电信网络拓扑图

电信网结构&#xff08;telecommunication network structure&#xff09;是指电信网各种网路单元按技术要求和经济原则进行组合配置的组合逻辑和配置形式。组合逻辑描述网路功能的体系结构&#xff0c;配置形式描述网路单元的邻接关系&#xff0c;即以交换中心&#xff08;或节…

网络相关配置,SSH服务,bash, 元字符

作业一&#xff1a;临时配置网络&#xff08;ip&#xff0c;网关&#xff0c;dns&#xff09;永久配置 设置IP和掩码ifconfig eth0 192.168.2.2 netmask 255.255.255.0设置网关route add default gw 192.168.2.10[rootbogon ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0…

【GlobalMapper精品教程】021:利用控制点校正栅格图像

本文讲解GlobalMapper中利用控制点校正栅格图像的方法,数据为配套实验数据包中的data021.rar。 文章目录 一、结果预览二、校正过程【推荐阅读】:ArcGIS实验教程——实验二:ArcGIS地理配准完整操作步骤 一、结果预览 二、校正过程 (1)打开图像。选择实验包中的待校正的栅…

[笔记]提升R的性能和突破内存限制的技巧

本文为雪晴数据网《R语言大规模数据分析实战》 http://www.xueqing.tv/course/56 的课程学习笔记。 该课程目前更新到“第2章 Microsoft R Server简介”的微软数据科学家介绍MRS&#xff0c;后续教学主要是关于MRS的内容&#xff0c;再另外学习&#xff0c;所以本文只学习“第1…

WTM:ASP.NET Core快速开发利器!

不少程序员朋友应该都有这个想法&#xff0c;接接私活&#xff0c;赚赚外快&#xff0c;但是从零开发一套系统并不容易&#xff0c;今天给大家推荐一款开箱即用的通用后台管理系统。一个能够让程序猿快速开发的炒鸡脚手架&#xff0c;采用.NET Core开源框架&#xff01;github地…

【CloudCompare教程】002:点云绘制模式详解

文章目录 1. 按高程着色2. 按索引着色3. 按渐变着色1. 按高程着色 在内容列表中选中点云图层,点击【编辑】→【标量领域】→【将坐标导出到SF】。 勾选Z,点击OK。 高程着色效果: 2. 按索引着色 点击【编辑】→【标量领域】→【添加点指数为SF】。 索引着色效果:

《首席产品官》成海清 著 图书目录 思维导图

原文档地址&#xff1a;《首席产品官》成海清

「每天一道面试题」如何理解方法的重载与覆盖?

方法重载在同一个Java 类中&#xff08;包含父类&#xff09;&#xff0c;如果出现了方法名称相同&#xff0c;而参数列表不同的情况就叫做重载。方法的重载的规则&#xff1a;&#xff08;1&#xff09;&#xff1a;方法名称必须相同&#xff08;2&#xff09;&#xff1a;参数…

day63-webservice 01.cxf介绍

CXF功能就比较强了。CXF支持soap1.2。CXF和Spring整合的非常密切。它的配置文件基本就是Spring的配置文件了。CXF是要部署在服务器才能用的。CXF得放到Web容器里面去发布。CXF就可以整合咱们的Web容器。 cxf-2.4.0解压出来之后 apache-cxf-2.4.2是核心包,apache-cxf-2.4.4-src是…

Java中的static关键字解析

static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字&#xff0c;也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法和平常容易误解的地方&#xff0c;最后列举了一些面试笔试中常见的关于static的考题。以下是…

微信公众号授权登录后报redirect_uri参数错误的问题

在进行微信公众号二次开发的时候&#xff0c;需要通过授权码模式来进行微信授权。比如&#xff0c;在进行登录的时候&#xff0c;用户点击了登录按钮&#xff0c;然后弹出一个授权框&#xff0c;用户点击同意后&#xff0c;就可以获取用户的OpenId等信息了。这篇文章主要分享下…