redis 6.2.12集群部署

1. 下载安装包

cd /data/base
wget https://download.redis.io/releases/redis-6.2.12.tar.gz
tar -zxvf redis-6.2.12.tar.gz
# 将redis代码移动到src目录
mv redis-6.2.12 redis-6.2.12-src
# 创建新目录用户存放编译好的redis文件
mkdir redis-6.2.12

2. 编译安装

# 指定内存库为libc,或者使用jmelloc
make -j4 MALLOC=libc
# 安装时指定目标文件目录
make PREFIX=/data/base/redis-6.2.12 install

3. 新建配置文件redis.conf并启动redis-server

cd redis-6.2.12
vim redis.conf
# 后台启动redis
daemonize yes# 修改pid文件保存目录
pidfile /data/base/redis-6.2.12/redis_6379.pid# 修改日志文件路径和名称
logfile "redis.log"# 修改密码
requirepass 123456# 允许远程登录
bind 0.0.0.0 -::1

4.启动redis-server并查看进程状态

./redis-server redis.conf
[root@redis1 bin]# ./redis-server redis.conf 
[root@redis1 bin]# ps -ef|grep redis
root      36152      1  0 09:40 ?        00:00:00 ./redis-server 0.0.0.0:6379
root      36303   1566  0 09:40 pts/0    00:00:00 grep --color=auto redis

5.redis-cli客户端使用

登录redis

[root@redis1 bin]# ./redis-cli -h localhost -p 6379
localhost:6379> auth 123456
OK

6.redis 集群搭建(cluster模式)

6.1集群规划

ip

port

部署路径

10.16.60.81

6379

/data/base/redis-6379

10.16.60.81

6380

/data/base/redis-6380

10.16.60.82

6379

/data/base/redis-6379

10.16.60.82

6380

/data/base/redis-6380

10.16.60.83

6379

/data/base/redis-6379

10.16.60.83

6380

/data/base/redis-6380

6.2 修改redis配置

将编译好的redis文件目录修改目录名(为了方便,以端口号命名),并复制1份。这样可以在一台机器上启动2个节点。

mv redis-6.2.12 redis-6379
cp -r redis-6379/ redis-6380

分别修改这2个节点的配置

# 后台启动redis
daemonize yes# 修改pid文件保存目录
pidfile /data/base/redis-6379/redis_6379.pid
port 6379
cluster-enabled yes# 修改日志文件路径和名称
logfile "redis.log"# 修改密码
requirepass 123456# 允许远程登录
bind 0.0.0.0 -::1
# 后台启动redis
daemonize yes# 修改pid文件保存目录
pidfile /data/base/redis-6380/redis_6380.pid
port 6380
cluster-enabled yes# 修改日志文件路径和名称
logfile "redis.log"# 修改密码
requirepass 123456# 允许远程登录
bind 0.0.0.0 -::1# 从节点要配置主节点的密码,否则主节点拒绝同步
masterauth 123456

6.3 分发redis目录 启动并查看redis-server信息

将/data/base/redis-6379和/data/base/redis-6380 这2个目录拷贝到其他2台机器上。

在每台机器上分别进入到这2个节点的目录,启动这2个节点的redis-server。

./redis-server redis.conf

查看redis进程信息

[root@redis1 bin]# ps -ef|grep redis
root     126449      1  0 11:15 ?        00:00:00 ./redis-server 0.0.0.0:6379 [cluster]
root     127165      1  0 11:16 ?        00:00:00 ./redis-server 0.0.0.0:6380 [cluster]
root     127733   1566  0 11:16 pts/0    00:00:00 grep --color=auto redis

6.4创建redis集群

在10.16.60.81机器的/data/base/redis-6379目录下执行

./redis-cli -a 123456 --cluster create --cluster-replicas 1 10.16.60.81:6379 10.16.60.81:6380 10.16.60.82:6379 10.16.60.82:6380 10.16.60.83:6379 10.16.60.83:6380

返回如下:

>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 10.16.60.82:6380 to 10.16.60.81:6379
Adding replica 10.16.60.83:6380 to 10.16.60.82:6379
Adding replica 10.16.60.81:6380 to 10.16.60.83:6379
M: b61869f33aaf9459a6e4fb13580fb6beacc1711b 10.16.60.81:6379slots:[0-5460] (5461 slots) master
S: 7d394aaf601421a6ea1de3827d67d546eda91bcb 10.16.60.81:6380replicates de47b58dbc62e6136aca7df33cd8bce17a91a412
M: 21ebb5e282e6727ffc8f5bd546d404406da467f4 10.16.60.82:6379slots:[5461-10922] (5462 slots) master
S: 350656e9823e2d84d0e763faca90e7e499d04fce 10.16.60.82:6380replicates b61869f33aaf9459a6e4fb13580fb6beacc1711b
M: de47b58dbc62e6136aca7df33cd8bce17a91a412 10.16.60.83:6379slots:[10923-16383] (5461 slots) master
S: 69ecc2dd284e397968a029bc89b97260951450fe 10.16.60.83:6380replicates 21ebb5e282e6727ffc8f5bd546d404406da467f4
Can I set the above configuration? (type 'yes' to accept):

输入yes,返回

>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.
>>> Performing Cluster Check (using node 10.16.60.81:6379)
M: b61869f33aaf9459a6e4fb13580fb6beacc1711b 10.16.60.81:6379slots:[0-5460] (5461 slots) master1 additional replica(s)
S: 350656e9823e2d84d0e763faca90e7e499d04fce 10.16.60.82:6380slots: (0 slots) slavereplicates b61869f33aaf9459a6e4fb13580fb6beacc1711b
M: 21ebb5e282e6727ffc8f5bd546d404406da467f4 10.16.60.82:6379slots:[5461-10922] (5462 slots) master1 additional replica(s)
M: de47b58dbc62e6136aca7df33cd8bce17a91a412 10.16.60.83:6379slots:[10923-16383] (5461 slots) master1 additional replica(s)
S: 69ecc2dd284e397968a029bc89b97260951450fe 10.16.60.83:6380slots: (0 slots) slavereplicates 21ebb5e282e6727ffc8f5bd546d404406da467f4
S: 7d394aaf601421a6ea1de3827d67d546eda91bcb 10.16.60.81:6380slots: (0 slots) slavereplicates de47b58dbc62e6136aca7df33cd8bce17a91a412
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

6.5 redis-cli 连接集群查看集群信息

[root@redis1 bin]# ./redis-cli -h 10.16.60.81 
10.16.60.81:6379> auth 123456
OK
10.16.60.81:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:389
cluster_stats_messages_pong_sent:422
cluster_stats_messages_sent:811
cluster_stats_messages_ping_received:417
cluster_stats_messages_pong_received:389
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:811

6.6 验证数据

在10.16.60.81上执行

[root@redis1 bin]# ./redis-cli -c -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set user user_1
-> Redirected to slot [5474] located at 10.16.60.82:6379
OK

在10.16.60.82上执行

[root@redis2 bin]# ./redis-cli -c -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> keys *
1) "user"
127.0.0.1:6379> get user
"user_1"

6.7 springboot配置redis集群信息

spring:redis:database: 0 # redis集群只能配置0#host: 10.16.60.81password: 123456cluster:nodes: 10.16.60.81:6379,10.16.60.81:6380,10.16.60.82:6379,10.16.60.82:6380,10.16.60.83:6379,10.16.60.83:6380#max-redirects: 3timeout: 60000 #连接超时时间(毫秒)# Lettuce配置lettuce:# Lettuce连接池配置pool:# 最大激活连接数max-active: 200# 在连接池耗尽时,在抛出异常之前连接分配应阻塞的最长时间max-wait: 20000# 最小空闲连接数min-idle: 10

7.问题汇总

7.1 Node 10.16.60.82:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0

原因是该节点中默认生成的配置或历史存储数据不一致导致的,清除对应节点的dump.rdb、nodes.conf文件,重启之后即可。

7.2 redis 10.16.60.82:6379 Could not connect to Redis No route to host

原因可能是防火墙没有关闭

systemctl stop firewalld
systemctl disable firewalld

7.3 ERR SELECT is not allowed in cluster mode

127.0.0.1:6379> select 0
OK
127.0.0.1:6379> select 1
(error) ERR SELECT is not allowed in cluster mode

在redis集群模式下,默认且只能使用0号database库,不允许使用SELECT 操作选择database 。

 

 

 

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

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

相关文章

力扣:118. 杨辉三角(Python3)

题目: 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官…

DS线性表之链表

前言 我们上一期介绍了顺序表,它的底层就是数组,我们也分别对顺序表的动态版本和静态版本进行了实现!并且分析了顺序表的优缺点,优点是:尾插、尾删效率很高,其时间复杂度是O(1);缺点是&#xff…

使用 ClassFinal 对 java class 文件进行加密防止反编译

ClassFinal 是一款 java class文件安全加密工具,支持直接加密 jar 包或 war 包,无需修改任何项目代码,兼容 spring-framework;可避免源码泄漏或字节码被反编译 特点 无需修改原项目代码,只要把编译好的jar/war包用本工…

Nginx简介与Docker Compose部署指南

Nginx是一款高性能的开源Web服务器和反向代理服务器,以其卓越的性能、可伸缩性和灵活性而闻名。它在全球范围内广泛用于托管Web应用程序、负载均衡、反向代理和更多场景中。在本文中,我们将首先介绍Nginx的基本概念,然后演示如何使用Docker C…

tortoiseSVN树冲突解决方案

方案一: 手动导出 trunk 上的文件(夹),把本地目录文件(夹)删了并替换成 trunk上的,再点击测试合并方案二: 如果执行了方案一还是冲突,确认本地和trunk文件一致后,可以跳过冲突的revision

【NLP的python库(03/4) 】: 全面概述

一、说明 Python 对自然语言处理库有丰富的支持。从文本处理、标记化文本并确定其引理开始,到句法分析、解析文本并分配句法角色,再到语义处理,例如识别命名实体、情感分析和文档分类,一切都由至少一个库提供。那么,你…

Linux--socket编程

socket套接字编程 一、服务器和客户端的开发步骤: 1、创建套接字 2、为套接字添加信息(ip地址和端口号) 3、监听网络连接 4、监听到有客户端接入,接受连接(如没有接入,会发生阻塞到) 5、数据…

【机器学习】熵和概率分布,图像生成中的量化评估IS与FID

详解机器学习中的熵、条件熵、相对熵、交叉熵 图像生成中常用的量化评估指标通常有Inception Score (IS)和Frchet Inception Distance (FID) Inception Score (IS) 与 Frchet Inception Distance (FID) GAN的量化评估方法——IS和FID,及其pytorch代码

Unity 鼠标悬浮时文本滚动(Text Mesh Pro)

效果 直接将脚本挂载在Text Mesh Pro上,但是需要滚动的文本必须在Scroll View中,否侧会定位错误,还需要给Scroll View中看需求添加垂直或者水平布局的组件 代码 using System.Collections; using System.Collections.Generic; using UnityE…

思科:iOS和iOSXe软件存在漏洞

思科警告说,有人试图利用iOS软件和iOSXe软件中的一个安全缺陷,这些缺陷可能会让一个经过认证的远程攻击者在受影响的系统上实现远程代码执行。 中严重程度的脆弱性被追踪为 CVE-2023-20109 ,并以6.6分得分。它会影响启用Gdoi或G-Ikev2协议的软件的所有版本。 国际知名白帽黑客…

世界前沿技术发展报告2023《世界航天技术发展报告》(二)卫星技术

(二)卫星技术 1.概述2. 通信卫星2.1 美国太空发展局推进“国防太空体系架构”,持续部署“传输层”卫星2.2 美国军方在近地轨道成功演示验证星间激光通信2.3 DARPA启动“天基自适应通信节点”项目,为增强太空通信在轨互操作能力提供…

c#设计模式-结构型模式 之 组合模式

🚀简介 组合模式又名部分整体模式,是一种 结构型设计模式 ,是用于把一组相似的对象当作一个 单一的对象 。组合模式 依据树形结构来组合对象 ,用来表示部分以及整体层,它可以让你将对象组合成树形结构,并且…

【AI视野·今日CV 计算机视觉论文速览 第258期】Mon, 2 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Mon, 2 Oct 2023 (showing first 100 of 112 entries) Totally 100 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚HAvatar,基于神经辐射场的头部合成重建。(from 清华大学) 📚GAIA-1, 用于自…

线上Vue项目访问其他服务器接口(宝塔平台配置解决)

前端本地解决跨域问题非常简单,配置代理即可,线上需要配置nginx,宝塔给我们更简单的配置方式:反向代理。 登录进宝塔页面,选择网站,点击网站名,选择反向代理 点击添加反向代理 注意&#xff…

分类预测 | Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测

分类预测 | Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测 目录 分类预测 | Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测&#xff0…

华为乾坤区县教育安全云服务解决方案(2)

本文承接: https://blog.csdn.net/qq_37633855/article/details/133276200?spm1001.2014.3001.5501 重点讲解华为乾坤区县教育安全云服务解决方案的部署流程。 华为乾坤区县教育安全云服务解决方案(2) 课程地址解决方案部署整体流程组网规划…

数字IC前端学习笔记:数字乘法器的优化设计(进位保留乘法器)

相关阅读 数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 阵列乘法器设计中限制乘法器速度的是随着数据位宽而迅速增大的串行进位链,如果使用进位保留加法器,则可以避免在设计中引入较长时间的等待&…

springmvc-JSR303进行服务端校验分组验证SpringMVC定义Restfull接口异常处理流程RestController异常处理

目录& 1. JSR303 2. JSR303中含有的注解 3. spring中使用JSR303进行服务端校验 3.1 导入依赖包 3.2 添加验证规则 3.3 执行校验 4. 分组验证 4.1 定义分组验证规则 4.2 验证时通过参数指定验证规则 4.3 验证信息的显示 5. SpringMVC定义Restfull接口 5.1 增加s…

mysql约束

约束 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 目的:保证数据的正确、有效性和完整性。 分类: 非空约束:限制该字段的数据不能为null。 not null 唯一约束:保证该字段所…

【面试经典150 | 矩阵】生命游戏

文章目录 写在前面Tag题目来源题目解读解题思路方法一: O ( m n ) O(mn) O(mn) 额外空间方法二: O ( 1 ) O(1) O(1) 额外空间 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专…