Redis集群离线安装

news2024/11/29 20:55:57

近日,由于客户的系统运行环境在一个封闭的网络内,不能与互联网联通,也不能提供yum库,所以运行环境只能采用离线安装的方式,我总结了一下本次的安装经过,希望对需要的人有所帮助。

一、安装gcc

查看gcc版本要求版本在5以上

命令: gcc -v

解压gcc压缩包

命令:tar -zxvf gcc.tar.gz

切换到gcc解压目录,并安装gcc所有rpm包

命令:cd gcc

命令:rpm -ivh * --nodeps --force

切换gcc版本

暂时切换,没有采用这个方式

命令:scl enable devtoolset-9 bash

永久切换

##下面的命令最好手敲,复制粘贴有可能不能成功执行

命令: echo "source /opt/rh/devtoolset-9/enable">>/etc/bashrc

查看配置:cat /etc/bashrc

命令: source /etc/bashrc

切换后可以用 gcc -v命令来查看版本

二、安装Redis

3主3从结构,3台服务器,每个服务器配置两个服务节点。

1、下载

http://download.redis.io/releases/redis-6.2.1.tar.gz

将 redis-6.2.1.tar.gz 移动到 /opt

2、解压

cd /opt

tar -xzvf redis-6.2.1.tar.gz

3、编译

cd /opt/redis-6.2.1

make MALLOC=libc

4、安装

make PREFIX=/opt/redis/ install

生成bin

5、每台机器创建两个节点

cd /opt/redis/

mkdir redis-cluster

cd redis-cluster

mkdir redis01

mkdir redis02

6、复制redis.conf到节点上

cp /opt/redis/redis-6.2.1/redis.conf /opt/redis/redis-cluster/redis01/

cp /opt/redis/redis-6.2.1/redis.conf /opt/redis/redis-cluster/redis02/

修改文件

# 指定只能以20.137.1.30这个IP访问,注释掉bind,否则其他机器不能访问

#bind 20.137.1.30

# 指定端口

port 7001

# 启动后台运行

daemonize yes

# 存放进程Id

pidfile /opt/redis/redis-cluster/redis01/7001.pid

# 日志文件

logfile "/dev/null"

# 3600秒内有一个key变化就执行快照持久化

save 3600 1

# 快照存放文件

dbfilename 7001.rdb

# 是否启动保存操作日志

appendonly yes

# 操作日志存放文件

appendfilename "7001.aof"

# 是否开启集群

cluster-enabled yes

# 集群配置文件(启动后自动生成)

cluster-config-file nodes-7001.conf

# 集群节点ping、pong超时时间

cluster-node-timeout 5000

##实际操作时可以用开发环境的redis.conf文件直接放到 redis01、redis02、redis03、redis04、redis05、redis06。注意,每个配置文件中的实际参数不同,用对应序号的redis节点的配置文件。

7、复制bin到节点上

cd /opt/redis

cp -r /opt/redis/bin/* redis-cluster/redis01

8、创建启动redis节点的脚本文件

(1)跳转至:cd /opt/redis/redis-cluster

(2)编制start-all.sh脚本内容:

echo '打开目录/opt/redis/redis-cluster/redis01'

cd /opt/redis/redis-cluster/redis01

echo '开始启动redis01'

./redis-server redis.conf

echo '打开目录/opt/redis/redis-cluster/redis02'

cd /opt/redis/redis-cluster/redis02

echo '开始启动redis02'

./redis-server redis.conf

(3)添加权限 chmod 755 start-all.sh

注意:shell 文件导致格式异常不能正常执行

解决方法:1、 vim 文件 2、 输入 : set ff=unix 然后回车 3、 保存

(4)启动 ./start-all.sh

9、在另外两台服务器进行相同操作 redis03 redis04 redis05 redis06

10、集群

#分别为三台机器开放防火墙端口,7001,7002,7003,7004,7005,7006

firewall-cmd --zone=public --add-port=7001/tcp --permanent

firewall-cmd --reload

firewall-cmd --list-port

#创建集群

cd /opt/redis/redis-cluster/redis01

无密码: ./redis-cli --cluster create xx.yyy.1.30:7001 xx.yyy.1.30:7002 xx.yyy.1.31:7003 xx.yyy.1.31:7004 xx.yyy.1.32:7005 xx.yyy.1.32:7006 --cluster-replicas 1

有密码: ./redis-cli -a 自定义一个访问密码 --cluster create xx.yyy.1.30:7001 xx.yyy.1.32:7006 xx.yyy.1.31:7003 xx.yyy.1.30:7002 xx.yyy.1.32:7005 xx.yyy.1.31:7004 --cluster-replicas 1



输入 yes 确认。





11、客户端登录

./redis-cli -h xx.yyy.1.30 -c -p 7001 -a 访问密码

加上--raw后,获取到的value是原始输出,而不是16进制输出。

./redis-cli --raw -h xx.yyy.1.30 -c -p 7001 -a 访问密码

12、命令

停止命令:./redis-cli -h xx.yyy.1.30 -c -p 7001 -a 访问密码 shutdown

./redis-cli -h xx.yyy.1.30 -c -p 7002 -a 访问密码 shutdown

./redis-cli -h xx.yyy.1.31 -c -p 7003 -a 访问密码 shutdown

./redis-cli -h xx.yyy.1.31 -c -p 7004 -a 访问密码 shutdown

./redis-cli -h xx.yyy.1.32-c -p 7005 -a 访问密码shutdown

./redis-cli -h xx.yyy.1.32 -c -p 7006 -a 访问密码 shutdown

启动命令: cd /opt/redis/redis-cluster

./start-all.sh

三、集群启动异常

在第10步创建集群时,报 Waiting for the cluster to join.......并一直卡在这里

遇到这种情况大部分是因为集群总线的端口没有开放!

集群总线
每个Redis集群中的节点都需要打开两个TCP连接。一个连接用于正常的给Client提供服务,
比如7001,还有一个额外的端口(通过在这个端口号上加10000)作为数据端口,
例如:redis的端口为7001,那么另外一个需要开通的端口是:7001+10000,
即需要开启17001。17001端口用于集群总线,这是一个用二进制协议的点对点通信信道。
这个集群总线(Clusterbus)用于节点的失败侦测、配置更新、故障转移授权,等等。

此时可以采用关闭本机防火墙的办法,基于安全性考虑,建议用在本机防火墙中开放相应端口。

#开放防火墙端口

firewall-cmd --zone=public --add-port=7001/tcp --permanent

firewall-cmd --zone=public --add-port=17001/tcp --permanent

firewall-cmd --reload

#其他服务节点端口依次执行。

#关闭redis集群中的所有实例,直接kill -9 就行

#于此同时删除掉每个节点文件下的 .aof,.rdb,nodes.conf文件,如果是首次创建集群.rdb文件应该没有,如图中标示





#执行集群创建命令

./redis-cli -a 访问密码 --cluster create xx.yyy.1.30:7001 xx.yyy.1.32:7006 xx.yyy.1.31:7003 xx.yyy.1.30:7002 xx.yyy.1.32:7005 xx.yyy.1.31:7004 --cluster-replicas 1

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

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

相关文章

牛客网Python篇数据分析习题(五)

1.现有牛客网12月每天练习题目的数据集nowcoder.csv。包含如下字段(字段之间用逗号分隔): user_id:用户id question_id:问题编号 result:运行结果 date:练习日期 请你统计答对和答错的总数分别是多少。 imp…

态路小课堂丨下一代数据中心100G接口第二篇——SFP-DD封装

100G光模块根据封装模式可分为QSFP28、CXP、CFP、CFP2、FCP4、DSFP和SFP-DD等。态路小课堂之前已经大量介绍了相关内容(。 态路小课堂丨下一代数据中心100G接口——DSFP态路小课堂丨100G解决方案-425G NRZ光模块态路小课堂丨什么是100G QSFP28单波光模块&#xff1f…

为什么要用springboot进行开发呢?

文章目录前言1、那么Springboot是怎么实现自动配置的1.1 启动类1.2 SpringBootApplication1.3 Configuration1.4 ComponentScan1.5 EnableAutoConfiguration1.6 两个重要注解1.7 AutoConfigurationPackage注解1.8 Import(AutoConfigurationImportSelector.class)注解1.9自动配置…

素数相关(结合回文数,合数)线性筛素数(欧拉筛法)Euler【算法模板笔记】

一、朴素筛法(埃拉托斯特尼筛法)Eratosthenes 筛法(埃拉托斯特尼筛法,简称埃氏筛法)时间复杂度是O(nloglogn)不常用,被欧拉筛代替,略二、线性筛素数(欧拉筛法)简介线性筛…

C++007-C++循环结构

文章目录C007-C循环结构for循环for循环举例for循环格式题目描述 输出十次手机号题目描述 打印区间内的整数题目描述 打印字符之间的所有字符题目描述 打印区间内符合条件的整数数数量作业在线练习:总结C007-C循环结构 在线练习: http://noi.openjudge.cn…

HappyAI 算法任务调度平台 - 开篇

HappyAI 算法任务调度平台 - 开篇 HappyAI 算法任务调度平台 - 接入 HappyAI 算法任务调度平台 - 开发 1. 支持不同算法侧接入即算法集群(如:paddle算法平台;mmdetection算法平台) 2. 支持不同相机取流(如&#xff…

启动您的 MySQL 查询:ChatGPT 如何帮助您检索 MySQL 数据

本文涉及到的相关软件,dbForge Studio for MySQL和ChatGPT,在您尝操作前,请务必先确保两个程序都正常运作哦,废话不多说,开始上干货! Devart 提供包括Oracle、SQL Server、MySQL、PostgreSQL、InterBase以及Firebird在…

msvcr120.dll下载官网,如何处理msvcr120.dll丢失

msvcr120.dll下载官网?目前msvcr120.dll是没有官网的!MSVCR120.dll是Microsoft Visual C Redistributable安装程序的一部分,通常在运行依赖于Visual C库的应用程序时需要该文件。所以不要相信网上那些写着所谓的官网,下面给大家分…

Sentinel源码阅读

基础介绍 Sentinel 的使用可以分为两个部分: 核心库(Java 客户端):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持(见 主流框架适配&…

电子纸墨水屏的现实应用场景

电子纸挺好个东西,大家都把注意力集中在商超场景 其实还有更多有趣的场景方案可用,价值也不小,比如: 一、仓库场景 通过亮灯拣选,提高仓库作业效率 二、仓库循环使用标签 做NFC类发卡式应用,替代传统纸…

Python中ArcPy将多张栅格图像分割为多个网格小块的方法

本文介绍基于Python中的ArcPy模块,依据渔网的矢量数据文件或通过手动划分小方格的方法,批量将大量栅格图像分割为多个矩形小栅格的方法。 首先明确一下我们的需求。现有同一区域内的多张栅格遥感影像,我们希望对于每一景栅格遥感影像而言&…

QML- 信号和事件系统

QML- 信号和事件系统一、概述二、信号事件处理系统使用1. 用信号处理器接收信号2. 信号处理程序3. 使用Connections 类型4. 附加信号处理程序三、向自定义QML类型添加信号四、将信号连接到方法和信号1. 信号与信号的连接一、概述 应用程序和用户界面组件需要相互通信。例如&am…

数据迁移——技术选型

日常我们在开发中,随着业务需求的变更,重构系统是很常见的事情。重构系统常见的一个场景是变更底层数据模型与存储结构。这种情况下就要对数据进行迁移,从而使业务能正常支行。 背景如下:老系统中使用了mongo数据库,由…

webpack 的热更新是如何做到的?原理是什么?

Hot Module Replacement,简称 HMR,在不需要刷新整个页面的同时更新模块,能够提升开发的效率和体验。热更新时只会局部刷新页面上发生了变化的模块,同时可以保留当前页面的状态,比如复选框的选中状态等。 在 webpack 中…

Maxwell工作流程详解

要介绍maxwell的工作原理,首先需要讲一下mysql主从复制的原理 mysql主从复制原理: 如上图,左边是master主节点,右边是slave从节点 工作流程: 1.往主节点mysql的数据库中写入数据,产生数据变化&#xff0c…

让ChatGPT介绍一下ChatGPT

申请新必应内测通过了,我在New Bing中使用下ChatGPT,让ChatGPT介绍一下ChatGPT 问题1:帮我生成一篇介绍chatGPT的文章,不少于2000字 回答: chatGPT是什么?它有什么特点和用途? chatGPT是一种…

IO流概述

🏡个人主页 : 守夜人st 🚀系列专栏:Java …持续更新中敬请关注… 🙉博主简介:软件工程专业,在校学生,写博客是为了总结回顾一些所学知识点 目录IO流概述IO 流的分类总结流的四大类字…

TCP传输文件

传输文件和传输信息的区别: 传输信息,只是一条数据,传输文件是多条数据传输信息传输过去一般都会显示,传输文件一般不会显示,一般只是存放在文件中传输文件需要传输,文件大小和文件名称(不然不知…

C语言(字符串函数)

这章的内容记得引用<string.h>头文件 目录 1.strlen&#xff08;&#xff09; 2.strcat() 3.strncat() 4.strcmp() 5.strncmp() 6.strcpy() 7.strncpy() 8.sprintf() 8.strchr() 9.strpbrk() 10.strrchr() 11.strstr() 1.strlen&#xff08;&#xff09; 用于统计字符串的…

CentOS Stream 9尝鲜安装教程

作者&#xff1a;IT圈黎俊杰 一、下载CentOS Stream 9安装介质 在CentOS官网可以下载到CentOS Stream 9的安装介质&#xff0c;正面列出ISO介质的下载链接地址&#xff1a; https://download.cf.centos.org/9-stream/BaseOS/x86_64/iso/CentOS-Stream-9-20221019.0-x86_64-dv…