redis集群安装部署 redis三主三从集群

redis集群安装部署 redis三主三从集群

  • 1、下载redis
  • 2、安装redis集群 三主三从
  • 3、配置redis开机自启动
    • 3.1、建立启动脚本
    • 3.2、复制多份redis启动脚本给集群使用
    • 3.3、添加可执行权限
    • 3.4、配置开机自启动

1、下载redis

本次redis安装部署选择当前最新的稳定版本7.4.1
下载链接: https://github.com/redis/redis/archive/refs/tags/7.4.1.tar.gz

在这里插入图片描述
安装包名是redis-7.4.1.tar.gz

2、安装redis集群 三主三从

redis三主三从集群机器规划

机器IPredis端口redis安装目录每个redis节点配置文件每个redis节点的集群配置文件
192.168.2.1626379/usr/local/redis//usr/local/redis/conf/redis-cluster-6379.conf/data/redis7/cluster/6379/data/nodes-6379.conf
192.168.2.1626380/usr/local/redis//usr/local/redis/conf/redis-cluster-6380.conf/data/redis7/cluster/6380/data/nodes-6380.conf
192.168.2.1646379/usr/local/redis//usr/local/redis/conf/redis-cluster-6379.conf/data/redis7/cluster/6379/data/nodes-6379.conf
192.168.2.1646380/usr/local/redis//usr/local/redis/conf/redis-cluster-6380.conf/data/redis7/cluster/6380/data/nodes-6380.conf
192.168.2.1686379/usr/local/redis//usr/local/redis/conf/redis-cluster-6379.conf/data/redis7/cluster/6379/data/nodes-6379.conf
192.168.2.1686380/usr/local/redis//usr/local/redis/conf/redis-cluster-6380.conf/data/redis7/cluster/6380/data/nodes-6380.conf

上传redis-7.4.1.tar.gz到三台机器上
下面是安装redis 7.4.1命令,3台redis机器都执行

cd /path/to/redis-7.4.1.tar.gz
tar -xzvf redis-7.4.1.tar.gz
cd redis-7.4.1
make
make install PREFIX=/usr/local/redis

PREFIX=/usr/local/redis 这个是指定redis的安装目录,因此要保证这个目录为空。
安装完后 会自动创建/usr/local/redis目录 内容如下 内容就是redis的可执行程序redis-cli、redis-server
在这里插入图片描述

配置redis环境变量

vi /etc/profile

在/etc/profile末尾处中增加如下内容:

export REDIS_HOME=/usr/local/redis
export PATH=$PATH:$REDIS_HOME/bin

之后执行source加载环境变量:

source /etc/profile

在执行如下命令。如果能输出redis版本说明环境变量配置成功:

redis-server --version

在这里插入图片描述

然后创建redis集群的目录、配置文件等,3台redis机器都执行

mkdir -p /data/redis7/cluster/6379
mkdir -p /data/redis7/cluster/6380cd /data/redis7/cluster/6379
mkdir logs data
cd /data/redis7/cluster/6380
mkdir logs datamkdir /usr/local/redis/conf
mkdir /usr/local/redis/pidvi /usr/local/redis/redis.conf

redis.conf中填入以下内容:

#redis访问端口(需要修改)
port 6379#设置开启守护进程
daemonize yes#关闭保护模式
protected-mode no#开启远程访问
bind 0.0.0.0# 开启AOF
appendonly yes#日志存放位置(需要修改)
logfile "/data/redis7/cluster/6379/logs/redis-cluster-6379.log"#数据保存目录(需要修改)
dir /data/redis7/cluster/6379/data/# pid文件创建位置(需要修改)
pidfile  /usr/local/redis/pid/redis_6379.pid#aof 持久化文件位置(需要修改) 在dir目录下
appendfilename "6379-appendonly.aof"#修改rdb持久化文件位置(需要修改) 在dir目录下
dbfilename 6379-dump.rdb# 开启集群模式
cluster-enabled yes
# 每一个redis节点需要有一个配置文件,三主三从集群共6个节点,因此需要6份配置文件。每个节点处于集群中都需要告知其他所有节点,达到集群中节点信息交换的目的,这个文件用于存储集群模式下的集群状态等信息,这个文件是由redis自己维护,不用管。如果你要重新创建集群,那么把每个节点的这个文件删了就行
#(需要修改) 在dir目录下
cluster-config-file nodes-6379.conf
# 超时时间,超时则认为master宕机,随后主备切换单位毫秒
cluster-node-timeout 5000
#设置集群节点间访问密码
masterauth 123456
#设置连接密码
requirepass 123456

创建redis集群配置文件

cp  /usr/local/redis/redis.conf /usr/local/redis/conf/redis-cluster-6379.conf
cp  /usr/local/redis/redis.conf /usr/local/redis/conf/redis-cluster-6380.conf

编辑 /usr/local/redis/conf/redis-cluster-6380.conf 把其中的6379修改成6380

sed -i "s/6379/6380/g" /usr/local/redis/conf/redis-cluster-6380.conf

在每个redis机器上分别启动redis程序

nohup /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-cluster-6379.conf &
nohup /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-cluster-6380.conf &

创建redis集群,在任意一台redis机器上执行就行
–cluster-replicas 1 :表示每个主节点需要1个从节点。这里随机分配主从关系,如果需要定制,则可以不加该参数,使用add-node来定制,

redis-cli --cluster create 192.168.2.162:6379 192.168.2.162:6380 192.168.2.164:6379 192.168.2.164:6380 192.168.2.168:6379 192.168.2.168:6380 --cluster-replicas 1 -a 123456

会提示是否接受上面配置,输入yes就可以了,就开始初始化集群,等待完成即可,

在这里插入图片描述

在这里插入图片描述

至此redis三主三从集群部署完成。

查看redis集群状态

在redis集群中任一台机器上登录redis

redis-cli -p 6379

登入redis后 执行

auth 123456
cluster info
cluster nodes

其中cluster info 显示 cluster_state:ok 即表示集群创建成功。否则集群创建失败。
在这里插入图片描述

3、配置redis开机自启动

3.1、建立启动脚本

官方启动脚本 https://github.com/redis/redis/blob/unstable/utils/redis_init_script

这是官方启动脚本内容

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.### BEGIN INIT INFO
# Provides:     redis_6379
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Redis data structure server
# Description:          Redis data structure server. See https://redis.io
### END INIT INFOREDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cliPIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"case "$1" instart)if [ -f $PIDFILE ]thenecho "$PIDFILE exists, process is already running or crashed"elseecho "Starting Redis server..."$EXEC $CONFfi;;stop)if [ ! -f $PIDFILE ]thenecho "$PIDFILE does not exist, process is not running"elsePID=$(cat $PIDFILE)echo "Stopping ..."$CLIEXEC -p $REDISPORT shutdownwhile [ -x /proc/${PID} ]doecho "Waiting for Redis to shutdown ..."sleep 1doneecho "Redis stopped"fi;;*)echo "Please use start or stop as first argument";;
esac

vi /etc/init.d/redisd6379 填入以下改造后内容如下(对官方启动脚本加以改造适应我们自己安装的redis程序)

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.### BEGIN INIT INFO
# Provides:     redis_6379
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Redis data structure server
# Description:          Redis data structure server. See https://redis.io
### END INIT INFOREDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cliPIDFILE=/usr/local/redis/pid/redis_${REDISPORT}.pid
CONF="/usr/local/redis/conf/redis-cluster-${REDISPORT}.conf"case "$1" instart)if [ -f $PIDFILE ]thenecho "$PIDFILE exists, process is already running or crashed"elseecho "Starting Redis server..."$EXEC $CONFfi;;stop)if [ ! -f $PIDFILE ]thenecho "$PIDFILE does not exist, process is not running"elsePID=$(cat $PIDFILE)echo "Stopping ..."$CLIEXEC -p $REDISPORT -a '123456'  shutdownwhile [ -x /proc/${PID} ]doecho "Waiting for Redis to shutdown ..."sleep 1doneecho "Redis stopped"fi;;*)echo "Please use start or stop as first argument";;
esac

3.2、复制多份redis启动脚本给集群使用

cd /etc/init.d
cp redisd6379 redisd6380
sed -i "s/REDISPORT=6379/REDISPORT=6380/" /etc/init.d/redisd6380

3.3、添加可执行权限

chmod +x /etc/init.d/redisd6379
chmod +x /etc/init.d/redisd6380

3.4、配置开机自启动

添加开机自启动

chkconfig --add redisd6379
chkconfig --add redisd6380

查看开机自启动配置

chkconfig --list

默认开启runlevel=2345的启动

在这里插入图片描述

至此redis开机自启动配置完成

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

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

相关文章

链表的回文结构

链表的回文结构。OJ链接 import java.util.*;/* public class ListNode {int val;ListNode next null;ListNode(int val) {this.val val;} }*/ public class PalindromeList {public boolean chkPalindrome(ListNode head) {// write code hereListNode slowhead;ListNode …

electron 打包 webview 嵌入需要调用电脑摄像头拍摄失败问题

electron 打包 webview 嵌入需要调用电脑摄像头拍摄失败问题 这篇文章是接我cocos专栏的上一篇文章继续写的,我上一篇文章写的是 cocos 开发触摸屏项目,需要嵌入一个网页用来展示,最后通过 electron 打包成 exe 程序,而且网页里面…

计算机组成原理与系统结构——多核计算机

笔记内容及图片整理自XJTUSE “计算机组成原理与系统结构” 课程ppt,仅供学习交流使用,谢谢。 多核处理器也称为芯片多处理器,将两个及以上处理器单元组合在一个芯片上。通常,每个内核都由独立处理器的全部组件构成,例…

JAVA学习(三)

方法内部类 匿名内部类 如下使用匿名内部类去实现:(对内存的损耗,对系统性能的影响相对较小) 总结

IIS服务器部署C# WebApi程序,客户端PUT,DELETE请求无法执行

这两天在自己Windows10电脑上搭建IIS服务器,把自己写的WebApi代码部署上做个本地服务器,结果客户端的PUT和DELETE请求无法执行,GET、POST这些都正常,研究后发现要删除IIS中的“模块”中的"webdavmodule"才能解决。

微服务-01

1.认识微服务 1.1 单体架构 单体架构(monolithic structure):顾名思义,整个项目中所有功能模块都在一个工程中开发;项目部署时需要对所有模块一起编译、打包;项目的架构设计、开发模式都非常简单。 当项目…

Vue2 基础

Vue 2 是 Vue.js 的第二个主要版本,于 2016 年发布。它是一个渐进式的 JavaScript 框架,以其简单、灵活、易用性高而广受欢迎。Vue 2 主要专注于构建用户界面(UI),并且非常适合用于构建单页应用(SPA&#x…

LSTM详解

1. LSTM设计 LSTM(长短期记忆网络)详解 长短期记忆网络(LSTM, Long Short-Term Memory) 是一种特殊的循环神经网络(RNN),特别适合处理和预测序列数据中的长时间依赖关系。LSTM 通过引入“门机制”(如输入门、遗忘门、输出门)来解决标准 RNN 在长时间序列任务中梯度消…

【从零开始入门unity游戏开发之——C#篇05】转义字符、@处理多行文本或者不使用转义字符、随机数

文章目录 一、转义字符1、什么是转义字符?2、常见的转义字符3、总结 二、使用处理多行文本或者不使用转义字符1、多行字符串2、不使用转义字符 三、随机数1、Random.Next()生成随机整数示例:生成一个随机整数生成指定范围内的随机整数 2、Random.NextSin…

3D 生成重建034-NerfDiff借助扩散模型直接生成nerf

3D 生成重建034-NerfDiff借助扩散模型直接生成nerf 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 感觉这个论文可能能shapE差不多同时期工作,但是shapE是生成任意种类。 本文提出了一种新颖的单图像视图合成方法NerfDiff,该方法利用神经辐射场 …

3D一览通在线协同设计,助力汽车钣金件设计与制造数字化升级

汽车行业已迎来智能化的汹涌浪潮,在此背景下,零部件制造商唯有积极应对,以智能制造为核心驱动力,方能跟上行业发展步调,在激烈的市场竞争中抢占先机。作为整车制造不可或缺的核心组件之一,汽车钣金件亦需紧…

从资产流动分析WIF市场潜力X.game深究其他未知因素

近日,两则关于WIF最新消息引起了投资者们的注意。据报道,11月28日Vintermute在过去13小时内累计从Binance交易所提取了价值533万美元的WIF,此举不仅彰显了其强大的资金实力,更在某种程度上推动了WIF币价的反弹;另一方面…

如何使用IoT_CLOUD连接百度云平台?一篇实现高效的物联网开发

随着物联网技术的飞速发展,云平台在物联网项目中的重要性日益凸显。然而,市面上众多云平台各自为政,拥有不同的接入协议和开发文档,使得工程师们在开发过程中面临巨大的挑战。本文将以Air780ELuatOS作为示例,教你使用I…

CentOS7 Apache安装踩坑

Gnome桌面右键弹出终端。 [rootlocalhost ~]# yum repolist 已加载插件:fastestmirror, langpacks /var/run/yum.pid 已被锁定,PID 为 2611 的另一个程序正在运行。 Another app is currently holding the yum lock; waiting for it to exit... [root…

31.攻防世界php_rce

进入场景 不是,这是个啥啊 index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]whoami index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1]…

C 进阶 — 指针的使用

C 进阶 — 指针的使用 主要内容 1、字符指针 2、数组指针 3、指针数组 4、数组传参和指针传参 5、函数指针 6、函数指针数组 7、指向函数指针数组的指针 8、 回调函数 9、指针和数组练习题 前节回顾 1、指针就是个变量,用来存放地址,地址唯一…

【ChatGPT出现降智无法画图和联网解决方法】

【ChatGPT出现降智无法画图和联网解决方法】 打开浏览器进入到ChatGPT界面 快捷键F12开发者调试工具 切换到Network,勾选Disable cache 切换到Application 选择Local storage(1),然后点击Clear All(2),再点击Refresh(3) 选择Session …

API接口示例:电商商品评论数据

当然,以下是一个简化的电商商品评论数据API接口的示例。请注意,这只是一个示例,实际的API接口可能会更加复杂,并且会包含更多的验证、错误处理和安全措施。 API接口示例:电商商品评论数据 基础信息 API名称&#xf…

操作系统(7)处理机调度

前言 操作系统中的处理机调度是一个核心概念,它涉及如何从就绪队列中选择进程并将处理机分配给它以运行,从而实现进程的并发执行。 一、调度的层次 高级调度(作业调度): 调度对象:作业(包含程序…

Acer宏碁Swift3笔记本S40-20,SF314-56G原厂Win10系统工厂模式安装包,带Recovery恢复还原

适用电脑型号:S40-20、SF314-56、SF314-56G(原装OEM预装系统) 链接:https://pan.baidu.com/s/1q77Br-hcmn9iJraGVVKQ7Q?pwdrw1r 提取码:rw1r Acer宏碁原装出厂windows10系统自带所有驱动、Office办公软件、出厂主题壁纸、系统属性专属联…