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.xdnf.cn/news/149260.html

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

相关文章

微信管理系统

在这个全民微信的时代,微信已成为生活和工作中不可缺少的工具,为了方便,大部分人都不会只有一个微信,很多企业老板和创业者都已经开始用微信管理系统来提升自身的业务效率和客户满意度。 微信管理系统适用哪些行业呢? …

QScrollArea样式

简介 QScrollBar垂直滚动条分为sub-line、add-line、add-page、sub-page、up-arrow、down-arrow和handle几个部分。 QScrollBar水平滚动条分为sub-line、add-line、add-page、sub-page、left-arrow、right-arrow和handle几个部分。 部件如下图所示: 样式详…

Python生成器

生成器 Generators 要理解生成器,首先要理解迭代器,迭代器由以下三个部分组成: 可迭代对象(iterable)迭代器(iterator)迭代(iteration) 1. 可迭代对象 只要定义了可以…

【itext7】使用itext7将多个PDF文件、图片合并成一个PDF文件,图片旋转、图片缩放

这篇文章,主要介绍使用itext7将多个PDF文件、图片合并成一个PDF文件,图片旋转、图片缩放。 目录 一、itext7合并PDF 1.1、引入依赖 1.2、合并PDF介绍 1.3、采用字节数组方式读取PDF文件 1.4、合并多个PDF文件 1.5、合并图片到PDF文件 1.6、旋转图…

1797_GNU pdf阅读器evince

全部学习汇总: GreyZhang/g_GNU: After some years I found that I do need some free air, so dive into GNU again! (github.com) 近段时间经历了很多事情,终于想找一点技术上的自由气氛。或许,没有什么比GNU的一些软件探索更适合填充这样的…

Leetcode---114双周赛

题目列表 2869. 收集元素的最少操作次数 2870. 使数组为空的最少操作次数 2871. 将数组分割成最多数目的子数组 2872. 可以被 K 整除连通块的最大数目 一、收集元素的最小操作次数 直接模拟,倒序遍历即可,代码如下 class Solution { public:int mi…

博客之站项目测试报告

项目背景项目功能测试计划Bug总结升级自动化测试正常登录流程 项目背景 1:博客之站系统是采用前后端分离的方式来实现;使用MySQL、Redis数据库储存相关数据;同时部署到云服务器上。 2:包含注册页、登录页、博客列表页、个人列表页…

CCF CSP认证 历年题目自练 Day22

CCF CSP认证 历年题目自练 Day22 题目一 试题编号: 201912-1 试题名称: 报数 时间限制: 1.0s 内存限制: 512.0MB 题目分析(个人理解) 每一个人都要报多少个数字,我选择字典存储&#xff0…

堆--数组中第K大元素

如果对于堆不是太认识&#xff0c;请点击&#xff1a;堆的初步认识-CSDN博客 解题思路&#xff1a; /*** <h3>求数组中第 K 大的元素</h3>* <p>* 解体思路* <ol>* 1.向小顶堆放入前k个元素* 2.剩余元素* 若 < 堆顶元素, 则略过* …

【GO 编程语言】面向对象

指针与结构体 文章目录 指针与结构体一、OOP 思想二、继承三、方法四、接口实现五、多态六、空接口七、接口继承八、接口断言九、Type别名 一、OOP 思想 Go语言不是面向对象的语言&#xff0c;这里只是通过一些方法来模拟面向对象&#xff0c;从而更好的来理解面向对象思想 面…

Win11 安装 Vim

安装包&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Ru7HhTSotz9mteHug-Yhpw?pwd6666 提取码&#xff1a;6666 双击安装包&#xff0c;一直下一步。 配置环境变量&#xff1a; 先配置系统变量中的path&#xff1a; 接着配置用户变量&#xff1a; 在 cmd 中输入…

小谈设计模式(19)—备忘录模式

小谈设计模式&#xff08;19&#xff09;—备忘录模式 专栏介绍专栏地址专栏介绍 备忘录模式主要角色发起人&#xff08;Originator&#xff09;备忘录&#xff08;Memento&#xff09;管理者&#xff08;Caretaker&#xff09; 应用场景结构实现步骤Java程序实现首先&#xff…

基于Vue+ELement实现增删改查案例与表单验证(附源码)

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《ELement》。&#x1f3af;&#x1f3af; &#x1…

打开MySQL数据库

在命令行里输入mysql --version就可以查看&#xff1a; mysql -uroot -p之前设置的密码&#xff08;不用输入&#xff09;就可登录成功&#xff1a;

karmada v1.7.0安装指导

前言 安装心得 经过多种方式操作&#xff0c;发现二进制方法安装太复杂&#xff0c;证书生成及其手工操作太多了&#xff0c;没有安装成功&#xff1b;helm方式的安装&#xff0c;v1.7.0的chart包执行安装会报错&#xff0c;手工修复了报错并修改了镜像地址&#xff0c;还是各…

Redis-数据过期策略

数据过期策略 惰性删除策略优点&#xff1a;对cpu比较友好&#xff0c;在用到该key的时候才去进行判断&#xff0c;对于很多用不到key不用浪费时间去检查是否过期缺点&#xff1a;对内存不友好&#xff0c;如果一个key过期了&#xff0c;但是我们又一直没有用到该key&#xff0…

竞赛选题 深度学习 opencv python 公式识别(图像识别 机器视觉)

文章目录 0 前言1 课题说明2 效果展示3 具体实现4 关键代码实现5 算法综合效果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的数学公式识别算法实现 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学…

1800_vim的宏录制功能尝试

全部学习信息汇总&#xff1a; GreyZhang/editors_skills: Summary for some common editor skills I used. (github.com) 最近5年多来&#xff0c;我emacs的编辑器用的还是比较多的。我的配置基本上是一个spacemacs&#xff0c;然后根据自己的需求增加了一丁点儿的其他配置。而…

数控车床中滚珠螺母的维护保养方法

滚珠螺母是一种高精度的机械部件&#xff0c;广泛应用于各种机械设备中&#xff0c;包括数控机床、精密轴承座、滚珠丝杆等&#xff0c;滚珠螺母作为数控机床中的进给系统的重要组件&#xff0c;其维护保养方法对于机床的精度和使用寿命具有重要影响。以下为数控机床滚珠螺母维…

李沐深度学习记录4:12.权重衰减/L2正则化

权重衰减从零开始实现 #高维线性回归 %matplotlib inline import torch from torch import nn from d2l import torch as d2l#整个流程是&#xff0c;1.生成标准数据集&#xff0c;包括训练数据和测试数据 # 2.定义线性模型训练 # 模型初始化&#xff08;函…