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/6380

cd /data/redis7/cluster/6379
mkdir logs data
cd /data/redis7/cluster/6380
mkdir logs data

mkdir /usr/local/redis/conf
mkdir /usr/local/redis/pid


vi /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 INFO

REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "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 INFO

REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli

PIDFILE=/usr/local/redis/pid/redis_${REDISPORT}.pid
CONF="/usr/local/redis/conf/redis-cluster-${REDISPORT}.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT -a '123456'  shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "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开机自启动配置完成

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Fiddler简单使用

Fiddler使用方法 1.作用 接口测试,发送自定义请求,模拟小型的接口测试定位前后端bug,抓取协议包,前后端联调构建模拟测试场景,数据篡改,重定向弱网测试,模拟限速操作,弱网&#xf…

203.PyQt5_QTreeWidget_项处理_树形结构

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈…

6.2 MapReduce工作原理

MapReduce工作原理涉及将大数据集分割成小块并行处理。Map任务读取数据块并输出中间键值对,而Reduce任务则处理这些排序后的数据以生成最终结果。MapTask工作包括读取数据、应用Map函数、收集输出、内存溢出时写入磁盘以及可选的Combiner局部聚合。ReduceTask工作则…

【线性代数】理解矩阵乘法的意义(点乘)

刚接触线性代数时,很不理解矩阵乘法的计算规则,为什么规则定义的看起来那么有规律却又莫名其妙,现在参考了一些资料,回过头重新总结下个人对矩阵乘法的理解(严格来说是点乘)。 理解矩阵和矩阵的乘法&#x…

Win11安装安卓子系统WSA

文章目录 简介一、启用Hyper-V二、安装WSA三、安装APKAPK商店参考文献 简介 WSA:Windows Subsystem For Android 一、启用Hyper-V 控制面板 → 程序和功能 → 启用或关闭 Windows 功能 → 勾选 Hyper-V 二、安装WSA 进入 Microsoft Store,下拉框改为 …

Tree-of-Counterfactual Prompting for Zero-Shot Stance Detection

论文地址:Tree-of-Counterfactual Prompting for Zero-Shot Stance Detection - ACL Anthologyhttps://aclanthology.org/2024.acl-long.49/ 1. 概述 立场检测被定义为对文本中立场态度的自动推断。根据 Biber 和 Finegan (1988) 的定义,立场包含两个主…

轻松上手:使用 Vercel 部署 HTML 页面教程

😀 在学习前端的过程中,部署项目往往是一个令人头疼的问题。然而,Vercel 为我们提供了一个便捷且免费的解决方案。 Vercel 是一个强大的云平台,专门用于前端项目的部署和托管。它不仅支持多种前端框架和静态网站生成器&#xff0…

QT从入门到精通(二) ——信号与槽机制

Qt 的信号与槽机制(Signal and Slot)是 Qt 框架 中用于对象间通信的核心机制之一。它允许对象之间进行松耦合的事件驱动式通信,尤其适合 GUI 应用程序 中的事件处理。 1. 基本概念 信号 (Signal) 当对象的状态发生变化时,它会发…

数据结构:Win32 API详解

目录 一.Win32 API的介绍 二.控制台程序(Console)与COORD 1..控制台程序(Console): 2.控制台窗口坐标COORD: 3.GetStdHandle函数: (1)语法: (2)参数: 4.GetConsoleCursorInf…

kubeadm_k8s_v1.31高可用部署教程

kubeadm_k8s_v1.31高可用部署教程 实验环境部署拓扑图**部署署架构****Load Balance****Control plane node****Worker node****资源分配(8台虚拟机)**集群列表 前置准备关闭swap开启ipv4转发更多设置 1、Verify the MAC address and product_uuid are u…

鸿蒙元服务项目实战:备忘录UI页面开发

前言 之前写过一篇关于元服务项目的上架流程,为了更好的了解及开发元服务,准备从0到1简单开发一个小项目,也希望能够帮助到刚刚介入到鸿蒙开发的同学,具体项目呢,也是十分的简单,就是一个小巧的备忘录项目&…

Linux-ubuntu点LED灯C语言版

​ 一,C语言点灯 1.寄存器配置 设置为SVC模式,复用寄存器设置GPIO1-IO003,设置电气属性,设置为输出模式。 2.软件 汇编语言对模式设置,并且将堆栈指针指向主程序: .global _start_start: /*设置为svr模式 */mrs …

SLM510A系列——24V,15到150mA单通道可调电流线性恒流LED驱动芯片

SLM510A 系列产品是单通道、高精度、可调电流线性恒流源的 LED 驱动芯片,在各种 LED 照明产品中非常简单易用。其在宽电压输入范围内,能保证极高的输出电流精度,从而在大面积的光源照明中,都能让 LED 照明亮度保持均匀一致。 由于…

【JavaEE】网络(2)

一、网络编程套接字 1.1 基础概念 【网络编程】指网络上的主机,通过不同的进程,以编程的方式实现网络通信;当然,我们只要满足进程不同就行,所以即便是同一个主机,只要是不同进程,基于网络来传…

【Java数据类型学习——String】

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” 文章目录 打印字符串长度的两种方法字符串String的比较1.用于比较引用的对象是否指向同一个内存地址2.用equa…

基于Spring Boot的校园部门资料管理系统

一、系统背景与目的 随着信息技术的飞速发展,校园信息化建设成为必然趋势。学校各部门在日常工作中积累了大量的资料,包括教学资料、学生档案、科研成果、行政文件等。传统的纸质资料管理方式存在效率低、易丢失、难以检索等问题,无法满足现…

STL 剖析

STL 六大组件 「STL 六大组件的交互关系」 Container 通过 Allocator 取得数据储存空间Algorithm 通过 Iterator 存取 Container 内容Functor 可以协助 Algorithm 完成不同的策略变化Adapter 可以修饰或套接 Functor、Iterator 配置器(allocator) 配置器:负责空间…

企业网络构建:如何满足业务需求与提升效率

企业组网指通过网络将企业内部的各种设备(如电脑、打印机和服务器等)连接起来,实现资源共享、信息交流与协同办公的过程。要打造一个高效的企业网络,需要从安全性、可靠性、稳定性和性能等多个方面进行综合考虑。以下内容将详细解…

升级thinkphp8最新版本,升级后发现版本不变

升级thinkphp8.0.3最新版本8.1.1,升级后发现版本不变, 更新TP有两个方法 1 全部更新(所有插件都一起更新) composer update 2 只更新TP框架核心 composer update topthink/framework 造成可能有两个原因,一是缓存问题,二是更新…

Cesium进阶教程——自定义图形、外观、绘图基础、现有着色器移植至Cesium、ShadowMapping、视频GIS、模型压平、卷帘

基础必看 WEBGL基础(从渲染管线角度解读) 参考路线 http://www.xt3d.online/tutorial/further/article.html 自定义图形 https://blog.csdn.net/m0_55049655/article/details/138908327 https://blog.csdn.net/m0_55049655/article/details/140306837 …