Linux环境下Redis 集群部署

Linux环境下Redis 集群部署

  • 1.单机Redis部署
  • 2.Redis 集群配置
    • 2.1 创建redis集群安装目录
    • 2.2 将redis单机部署目录下的redis.confi文件复制到每个目录下
    • 2.3 修改每个文件夹下的redis.conf
    • 2.4 修改完六个配置内容后开始启动
    • 2.5 启动完后查看进程
    • 2.6 建集群

1.单机Redis部署

Linux下redis安装并设置开机自启

2.Redis 集群配置

具体是参考这篇文章(由于在搭建过程中仍遇到很多问题,所以在其基础上补充):
Linux下redis集群搭建与部署

2.1 创建redis集群安装目录

cd /home/xh/hadoop/
mkdir myredis
cd myredis
mkdir 7000 7001 7002 7003 7004 7005

2.2 将redis单机部署目录下的redis.confi文件复制到每个目录下

cp /home/xh/hadoop/redis-3.2.5/redis.conf /home/xh/hadoop/myredis/7000
cp /home/xh/hadoop/redis-3.2.5/redis.conf /home/xh/hadoop/myredis/7001
cp /home/xh/hadoop/redis-3.2.5/redis.conf /home/xh/hadoop/myredis/7002
cp /home/xh/hadoop/redis-3.2.5/redis.conf /home/xh/hadoop/myredis/7003
cp /home/xh/hadoop/redis-3.2.5/redis.conf /home/xh/hadoop/myredis/7004
cp /home/xh/hadoop/redis-3.2.5/redis.conf /home/xh/hadoop/myredis/7005

2.3 修改每个文件夹下的redis.conf

#例如
vim myredis/7000/redis.conf

#修改如下
#端口号
port 7000
#后台启动
daemonize yes
#开启集群
cluster-enabled yes
#集群节点配置文件(注意需要跟端口号一样)
cluster-config-file nodes-7000.conf
#数据文件存放位置(注意此处的路径需要自己创建好)
dir /usr/local/redis/redis-cluster/7000/data/
#集群连接超时时间
cluster-node-timeout 5000
#进程pid的文件位置 (注意需要跟端口号一样)
pidfile /var/run/redis-7000.pid
#开启aof
appendonly yes
#aof文件路径
appendfilename “appendonly-7000.aof”
#rdb文件路径
dbfilename dump-7000.rdb

注意:需要补充如下设置,否则java连接报错

#保护模式设为no
protected-mode no
#绑定ip
bind 192.168.240.128

2.4 修改完六个配置内容后开始启动

cd /usr/local/redis

#这里闲一个个启动麻烦的话可以自己配置一个配置文件启动
bin/redis-server myredis/7000/redis.conf
bin/redis-server myredis/7001/redis.conf
bin/redis-server myredis/7002/redis.conf
bin/redis-server myredis/7003/redis.conf
bin/redis-server myredis/7004/redis.conf
bin/redis-server myredis/7005/redis.conf

2.5 启动完后查看进程

[root@hadoop myredis]# ps -ef|grep redis
#显示有六个则是启动成功
root 63262 1 0 11:08 ? 00:00:00 redis-server 192.168.240.128:7000 [cluster]
root 63264 1 0 11:08 ? 00:00:00 redis-server 192.168.240.128:7001 [cluster]
root 63266 1 0 11:08 ? 00:00:00 redis-server 192.168.240.128:7002 [cluster]
root 63270 1 0 11:08 ? 00:00:00 redis-server 192.168.240.128:7003 [cluster]
root 63276 1 0 11:08 ? 00:00:00 redis-server 192.168.240.128:7004 [cluster]
root 63278 1 0 11:08 ? 00:00:00 redis-server 192.168.240.128:7005 [cluster]
root 63287 62960 0 11:08 pts/2 00:00:00 grep redis

2.6 建集群

到这里只是启动了六个单进程的redis,开始创建集群,先安装好ruby

yum install ruby rubygems -y

使用gem要先镜像一下

#这里需要镜像一下
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

#确保镜像成功
[root@hadoop myredis]# gem sources -l

*** CURRENT SOURCES ***

https://gems.ruby-china.com/

然后执行连接ruby-redis

[root@hadoop myredis]# gem install redis

上面步骤有可能报错查了资料发现是版本太低
解决办法是 先安装rvm,再把ruby版本提升

ERROR: Error installing redis:
redis requires Ruby version >= 2.3.0.

ruby版本提升(若没有报错不需要进行此步骤)

#安装curl
sudo yum install curl

#安装rvm
curl -L get.rvm.io | bash -s stable

(如出现错误参考: http://blog.csdn.net/qq_30242987/article/details/99727838)

source /usr/local/rvm/scripts/rvm

#查看rvm库中已知的ruby版本
rvm list known

#安装一个ruby版本
rvm install 2.4.0

#使用一个ruby版本
rvm use 2.4.0

#卸载一个已知版本
rvm remove 2.3.0

#查看版本
ruby --version

#再安装redis就可以了
gem install redis

创建集群

#进入src下面
cd /home/xh/hadoop/redis-3.2.5/src

# 创建集群
[root@hadoop src]# ./redis-trib.rb create --replicas 1 192.168.240.128:7000 192.168.240.128:7001 192.168.240.128:7002 192.168.240.128:7003 192.168.240.128:7004 192.168.240.128:7005
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.240.128:7000
192.168.240.128:7001
192.168.240.128:7002
Adding replica 192.168.240.128:7003 to 192.168.240.128:7000
Adding replica 192.168.240.128:7004 to 192.168.240.128:7001
Adding replica 192.168.240.128:7005 to 192.168.240.128:7002
M: b553b5ed57b5d152dc1819c1818e61eba77b867f 192.168.240.128:7000slots:0-5460 (5461 slots) master
M: d3bb8e329319f90d42f3a6163d0dcb2059cbeb47 192.168.240.128:7001slots:5461-10922 (5462 slots) master
M: 40a44e92c9644e0366abb3aa2f18222b7d255b93 192.168.240.128:7002slots:10923-16383 (5461 slots) master
S: 330be48eaa9bd676720738f0efe8007b2421944e 192.168.240.128:7003replicates b553b5ed57b5d152dc1819c1818e61eba77b867f
S: ba1195fe77df429079e34cb6c296878b1d0c7dcb 192.168.240.128:7004replicates d3bb8e329319f90d42f3a6163d0dcb2059cbeb47
S: 674176635075d82369ebba73060eadf8e4e1d701 192.168.240.128:7005replicates 40a44e92c9644e0366abb3aa2f18222b7d255b93
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 192.168.240.128:7000)
M: b553b5ed57b5d152dc1819c1818e61eba77b867f 192.168.240.128:7000slots:0-5460 (5461 slots) master1 additional replica(s)
M: d3bb8e329319f90d42f3a6163d0dcb2059cbeb47 192.168.240.128:7001slots:5461-10922 (5462 slots) master1 additional replica(s)
S: ba1195fe77df429079e34cb6c296878b1d0c7dcb 192.168.240.128:7004slots: (0 slots) slavereplicates d3bb8e329319f90d42f3a6163d0dcb2059cbeb47
M: 40a44e92c9644e0366abb3aa2f18222b7d255b93 192.168.240.128:7002slots:10923-16383 (5461 slots) master1 additional replica(s)
S: 330be48eaa9bd676720738f0efe8007b2421944e 192.168.240.128:7003slots: (0 slots) slavereplicates b553b5ed57b5d152dc1819c1818e61eba77b867f
S: 674176635075d82369ebba73060eadf8e4e1d701 192.168.240.128:7005slots: (0 slots) slavereplicates 40a44e92c9644e0366abb3aa2f18222b7d255b93
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

到这里集群就安装好了,测试一下

[xh@hadoop myredis]$ redis-cli -c -h 192.168.240.128 -p 7000
192.168.240.128:7000> set name frank
-> Redirected to slot [5798] located at 192.168.240.128:7001
OK
192.168.240.128:7001> get name
"frank"

在启动时会发现一个个启动太麻烦,这里配置一下启动关闭文件

#进入安装redis的路径
cd /home/xh/hadoop/myredis#编写关闭文件
vi stop-all.sh#加入下面内容,编辑完之后按esc键输入 :wq 退出保存
#这里得找到自己配置启动得地方,我得是在bin下面
redis-cli -p 7000 -h 192.168.240.128 shutdown
redis-cli -p 7001 -h 192.168.240.128 shutdown
redis-cli -p 7002 -h 192.168.240.128 shutdown
redis-cli -p 7003 -h 192.168.240.128 shutdown
redis-cli -p 7004 -h 192.168.240.128 shutdown
redis-cli -p 7005 -h 192.168.240.128 shutdown#赋值权限
chmod u+x stop-all.sh#编写启动文件
vi start-all.sh#加入下面内容,编辑完之后按esc键输入 :wq 退出保存
#这里得找到自己配置启动得地方,我得是在bin下面
redis-server myredis/7000/redis.conf
redis-server myredis/7001/redis.conf
redis-server myredis/7002/redis.conf
redis-server myredis/7003/redis.conf
redis-server myredis/7004/redis.conf
redis-server myredis/7005/redis.conf#赋值权限
chmod u+x start-all.sh

其中在java连接时出现问题,通过参考如下文章解决:
1.本地虚拟机搭建的Redis集群,Jedis可以连接,JedisCluster连接不上
2.Redis错误:[ERR] Sorry, can‘t connect to node 192.168.10.3:6379
3.彻底解决:[ERR] Node is not empty. Either the node already knows other nodes

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

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

相关文章

解决:vscode和jupyter远程连接无法创建、删除文件的问题(permission denied)

目录 问题:vscode和jupyter远程连接服务器无法创建、删除文件的问题原因:代码文件的权限不够解决方法:1.ls -l查看目录所在组,权限2.chown修改拥有者和所在组 问题:vscode和jupyter远程连接服务器无法创建、删除文件的…

linux 系统查询redis中指定key值(命令)

文章目录 Linux 系统中查询redis指定key值进入到redis目录下授权当前用户查询指定key值 Linux 系统中查询redis指定key值 进入到redis目录下 登上服务器之后直接输入 redis-cli 进入到127.0.0.1:6379>下 授权当前用户 在127.0.0.1:6379>下,输入如下指令 auth…

【计算机网络】文件传输协议FTP和SFTP

1. 介绍 SFTP(SSH文件传输协议)和FTP(文件传输协议)都是用于在计算机之间传输文件的网络协议。FTP和SFTP都位于OSI模型中的应用层。这两种协议用于文件传输和管理,是应用层协议,因此它们工作在OSI模型的最…

vueDay04——v-if else show

一、v-if的使用 我们可以像c语言一样去使用v-if结构 比如单用v-if&#xff0c;连用v-if v-else&#xff0c;或者是v-if v-else-if v-else 注意&#xff1a; 1.v-if v-else-if需要绑定值,而v-else不需要绑定值 2.if结构可以用在不同的标签类型之间 <div v-if"fir…

[Unity]给场景中的3D字体TextMesh增加描边方案一

取你的文本对象&#xff0c;简单地添加以下脚本: using UnityEngine; using System.Collections; using UnityEngine.UI;public class TextOutline : MonoBehaviour {public float pixelSize 1;public Color outlineColor Color.black;public bool resolutionDependant fal…

整理指定文件夹下的所有文件,以类树状图显示并生成对应超链接

最近在整理家里学习资料的时候&#xff0c;由于年代久远&#xff0c;找不到我想要找的文件&#xff0c;windows文件搜索速度感觉太慢。于是想要生成一份类似文件索引的东西来显示所有资料&#xff0c;让我可以快速的找到需要的资料路径 直接上代码 import os import datetim…

【LeetCode】每日一题最后一个单词的长度投票法求解多数元素异或操作符巧解只出现一次的数字整数反转

个人主页直达&#xff1a;小白不是程序媛 LeetCode系列专栏&#xff1a;LeetCode刷题掉发记 目录 LeetCode 58.最后一个单词的长度 LeetCode169.多数元素 LeetCode 136.出现一次的数字 LeetCode 7.整数反转 LeetCode 58.最后一个单词的长度 难度&#xff1a;简单 OJ链接…

软件兼容性测试对软件产品起到什么作用?CMA、CNAS软件测评中心分享

软件兼容性测试是指检查软件之间能否正确地进行交互和共享信息。随着用户对来自各种类型软件之间共享数据能力和充分利用空间同时执行多个程序能力的要求&#xff0c;测试软件之间能否协作变得越来越重要。软件兼容性测试工作的目标是保证软件按照用户期望的方式进行交互。 1、…

各品牌PLC存储器寻址的规则

在PLC编程时&#xff0c;字节或多字节的变量一般支持绝对地址寻址&#xff08;比如&#xff0c;IW0、MD4等&#xff09;。要想正确寻址&#xff0c;则必须要搞清楚寻址的规则。目前常见的规则有两种&#xff1a;字节寻址和字寻址。下图清晰地表达了两种规则的编号情况&#xff…

React介绍

React介绍 学习目标&#xff1a;了解React是什么以及它的特点 React是什么 React是一个来自FaceBook的专注于构建用户界面的javascript库&#xff0c;与Vue和Angular并称为前端三大框架&#xff0c;目前是世界范围内最流行的js前端框架   React英文文档&#xff08;https:/…

Ubuntu18.04创建用户缺少默认的下载、桌面目录

Ubuntu18.04创建用户缺少默认的下载、桌面目录 创建用户缺少默认的下载、桌面目录等默认目录 创建用户缺少默认的下载、桌面目录等默认目录 在存在桌面版本的ubuntu系统中&#xff0c;在终端使用命令创建用户&#xff0c;丹是 sudo useradd -m liyao -d /home/liyao -s /bin/b…

MySQL---JDBC编程

文章目录 什么是JDBC&#xff1f;JDBC的工作原理JDBC的使用添加依赖创建数据源DataSource创建数据库连接Connection创建操作命令Statement执行SQL指令释放资源 通过JDBC演示CRUD新增查询修改删除 什么是JDBC&#xff1f; JDBC&#xff1a;Java Database Connectivity&#xff…

Docker从入门到实战

Docker基本概念 1、解决的问题 1、统一标准 应用构建 ○ Java、C、JavaScript ○ 打成软件包 ○ .exe ○ docker build … 镜像应用分享 ○ 所有软件的镜像放到一个指定地方 docker hub ○ 安卓&#xff0c;应用市场应用运行 ○ 统一标准的 镜像 ○ docker run 容器化技术 …

小插曲 -- 使用Visual Studio Code远程连接香橙派

在之前的学习中&#xff0c;代码的修改和保存都依赖于“vi”指令&#xff0c;而不得不承认vi指令的编辑界面非常原始&#xff0c;所以&#xff0c;如果可以将代码编辑放到更友好的环境里进行无疑是一件大快人心的事情。 本节介绍如何通过Visual Studio Code来进行远程连接: Vi…

[SpringCloud] Eureka 与 Ribbon 简介

目录 一、服务拆分 1、案例一&#xff1a;多端口微服务 2、案例二&#xff1a;服务远程调用 二、Eureka 1、Eureka 原理分析 2、Eureka 服务搭建&#xff08;注册 eureka 服务&#xff09; 3、Eureka 服务注册&#xff08;注册其他服务&#xff09; 4、Eureka 服务发现…

计算机视觉与深度学习 | 非线性优化理论:图优化、高斯牛顿法和列文伯格-马夸尔特算法

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 计算机视觉与深度学习 | SLAM国内外研究现状 计算机视觉与深度学习 | 视…

Nginx负载均衡和备份和故障转移

如果你想要两台 Nginx 服务器配置访问同一个链接&#xff0c;通常意味着你可能想要以下几种配置&#xff1a; 负载均衡&#xff1a;两台 Nginx 服务器都工作&#xff0c;当访问者请求资源时&#xff0c;流量会在这两台服务器之间进行均衡分配。备份和故障转移&#xff1a;其中…

Flask 上传文件,requests通过接口上传文件

这是一个使用 Flask 框架实现文件上传功能的示例代码。该代码定义了两个路由&#xff1a; /upload&#xff1a;处理文件上传请求。在该路由中&#xff0c;我们首先从请求中获取上传的文件&#xff0c;然后将文件保存到本地磁盘上&#xff0c;并返回一个字符串表示上传成功。 /…

JavaScript中的模板直面量

模板直面量 const book {name: 你爱的书籍为};console.log(${book.name});//注意使用来输出name的属性值 我们可以省去function关键字&#xff0c;只用>来表示 let circle r > {const name 3.14;const area name * r * r;return area;}console.log(circle(2)); 还…

模仿企业微信界面

备注&#xff1a;未实现相关功能&#xff0c;仅模仿界面&#xff0c;不能作为商业用途&#xff0c;若有侵权&#xff0c;请联系删除。 <Window x:Class"模仿企业微信界面.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"…