搭建redis集群

news/2024/11/17 5:21:54/

前言

redis 集群分为一下几种:
【主从模式】:一般情况大多都是读多写少的情况,主从模式可以将读写分离,主库写,从库只负责读取的情况,这从如果任何一个从库宕机的情况,整个集群仍然可以提供工作,缺点就是如果主宕机,集群将无法提供写操作,存在影响用户体验的情况。
主从模式架构图

【哨兵模式】:是主从模式的升级版本,通过redis哨兵监控集群的整体工作状态,虽然达到了动态处理宕机的情况,但是存在存储瓶颈,限制于当前的主的存储容量
哨兵模式架构图

【分片模式】:解决存储容量上线的问题,基于散列插槽的形式提升存储容量,解决海量存储的问题

安装单机版redis

1.从redis官方网站下载redis

Redis官网下载地址
Redis逛网下载地址
找到当前redis的稳定版本【Stable】
Redis6.2.12版本

2.将Reids压缩包上传到服务器上并执行解压操作

# 进入到/usr/local/目录
cd /usr/local/
# 创建一个redis 的专属操作文件夹
mkdir redis
# 解压redis压缩包
tar -zxvf redis-6.2.12.tar.gz 
# 创建一个存储redis 配置文件的目录
mkdir redis-config
# 把redis 原有的配置文件复制出来一份
cp ./redis-6.2.12/redis.conf ./redis-config/
# 安装并编译redis
cd redis-6.2.12
make & make install

这里记录一下小插曲,我这台服务器是阿里云的服务器,当时在这台机器上测试的时候一切顺利,当我去公司的正式环境安装的时候,出现了一些意外情况,在这里记录一下吧。
redis 的版本和linux的版本虽然没有直接关联,但是redis的编译需要gcc 等编译环境,高版本的redis需要升级gcc的版本,不然编译会报错,像如下图的这些情况。
编译报错01
编译报错02
由于公司的服务器需要VPN以及是无网络的环境,所以升级gcc是一个很麻烦的事情,可以曲线救国,降低一下reids的版本,换成了5.0.14稳定版本,编译顺利进行,当然,还没有去看5版本的和6版本的具体升级了那些功能,如果没有特殊要求的话,这样安装也可以。
编译成功
看到这个说明已经编译通过了!!!!

3. 将上面的操作分别在多个节点上执行

目录结构

4.修改节点上的配置文件并启动redis

# 开启后台运行
daemonize no ---> daemonize yes
# 配置可以远程连接
bind 127.0.0.1 ---> 0.0.0.0
# 设置redis 访问密码
requirepass 123123
----------------------------------------------------------------------
# 非必要配置
# 监听的端口号
port: 6379
# 工作目录,默认是当前目录,日志、持久化等文件会保存在这个目录
dir ./
# 数据库数量,默认是16个库 0~15
databases 16
# redis 能够使用的最大内存
maxmemory 512mb
# 日志文件,默认值为空,不记录日志,可以指定日志文件名称
logfile "redis.log"

5.设置开启自启动redis

创建一个redis.service系统文件

vi /etc/systemd/system/redis.service

将以下命令粘贴进去

[Unit]
Description=redis-server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/redis/redis-config/redis.conf
PrivateTmp=true[Install]
WantedBy=multi-user.target

然后重载系统服务

systemctl daemon-reload

设置开启自启动

systemctl enable redis

现在,我们可以用下面这组命令来操作redis了

# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis

配置Redis主从模式

# 在子节点中配置从节点
vi redis.config
# 在第一行上添加如下信息
slaveof 主节点IP 主节点端口号
# 因为主节点开启了密码,所以从节点也需要输入主节点的密码
masterauth 主节点的密码

可以开启一下redis日志,默认是关闭的方便后续的调试

# 连接到主节点,连接redis客户端 redis-cli
redis-cli -p 6379
# info 查看redis 信息
info Replication

主从节点信息
以上就完成了主从节点的配置

sentinel 配置文件

# 是当前sentinel 实例的端口号
port 27001
# 声明的IP地址
sentinel announce-ip 192.168.150.101
# 指定节点的信息 
# mymaster:主节点名称
# 192.168.150.101 7001 主节点的IP和端口号
# 2:选举master 时quorum 值 超过集群的半数以上,所以当前共三台机器,计算后为2
sentinel monitor mymaster 192.168.150.101 7001 2
# slave 与 master 最长超时时间
sentinel down-after-milliseconds mymaster 5000
# slave 故障恢复的超时时间
sentinel failover-timeout mymaster 60000
# 工作目录
dir "/tmp/s1"

http://www.ppmy.cn/news/1043156.html

相关文章

typeof与instanceof的区别

最近又用到了对一个类型进行类型判断,这里对两种判断方法进行一个总结 相同点: typeof与instanceof都是判断数据类型的方法 区别: typeof会返回一个变量的基本类型(特殊 typeof null 会为object 但这只是JavaScript 存在的一个…

SystemVerilog interface使用说明

1. Interface概念 System Verilog中引入了接口定义,接口与module 等价的定义,是要在其他的接口、module中直接定义,不能写在块语句中,跟class是不同的。接口是将一组线捆绑起来,可以将接口传递给module。 2. 接口的优…

【CSS动画04--input输入动画】

input输入动画 介绍代码HTMLCSS CSS动画04--input输入框 介绍 此动画是当点击input框内部外部不同的动画&#xff0c;以上是鄙人录制得一个小视频&#xff0c;供大家参考&#xff0c;&#x1f92d; 代码 HTML <!DOCTYPE html> <html><head><meta http…

JavaScript(JavaEE初阶系列13)

目录 前言&#xff1a; 1.初识JavaScript 2.JavaScript的书写形式 2.1行内式 2.2内嵌式 2.3外部式 2.4注释 2.5输入输出 3.语法 3.1变量的使用 3.2基本数据类型 3.3运算符 3.4条件语句 3.5循环语句 3.6数组 3.7函数 3.8对象 3.8.1 对象的创建 4.案例演示 4…

强训第34天

选择 A B D 由协议处理粘包问题 C C C host字段表示要访问的IP地址 Connection为Close&#xff0c;为短连接 A RTT报文往返时间&#xff0c;根据窗口大小和拥塞控制可以得知发了1 2 4 8 总共16个接收缓存并且没由进行数据提取&#xff0c;则剩余接收量为16-151&#xff0c;会经…

【100天精通python】Day40:GUI界面编程_PyQt 从入门到实战(完)_网络编程与打包发布

目录 8 网络编程 8.1 使用PyQt 网络模块进行网络通信 服务器端示例 客户端示例 8.2 处理网络请求和响应 9 打包和发布 9.1 创建可执行文件或安装程序 9.2 解决依赖问题 9.3 发布 PyQt 应用到不同平台 9.3.1 发布到 Windows 9.3.2 发布到 macOS 9.3.3 发布到 Linux 9…

寻路算法小游戏

寻路算法小demo 寻路算法有两种&#xff0c;一种是dfs 深度优先算法&#xff0c;一种是 dfs 深度优先算法 深度优先搜索的步骤分为 1.递归下去 2.回溯上来。顾名思义&#xff0c;深度优先&#xff0c;则是以深度为准则&#xff0c;先一条路走到底&#xff0c;直到达到目标。这…

Python学习笔记_进阶篇(二)_django知识(一)

本章简介&#xff1a; Django 简介Django 基本配置Django urlDjango viewDjango 模板语言Django Form Django 简介 Django是一个开放源代码的Web应用框架&#xff0c;由Python写成。采用了MVC的软件设计模式&#xff0c;即模型M&#xff0c;视图V和控制器C。它最初是被开发来…