Linux中Redis集群离线版安装步骤

  • 安装环境及工具

系统:Red Hat Enterprise Linux Server

工具:XShell5及Xftp5等远程工具

安装包:Ruby-2.4.1及以上

        Rubygems-2.6.12及以上

        Redis-3.2.8及以上(3.x版本才开始支持集群功能)

        Redis-3.0.0-gem及以上(该版本不一定要和redis版本保持一致,只要保证redis-trib.rb能够运行即可)

  • 安装步骤

要搭建一个最简单的Redis集群,我们至少需要6个节点,具体的原理暂不讨论,只说明搭建步骤,我们这里使用两台服务器搭建。

  1. 检查GCC环境

安装redis之前首先检查GCC环境,如果没有安装GCC环境,则需要进行安装,检查GCC是否安装,可以看看版本号,通过命令gcc –v,如果已经安装了GCC,则会显示以下信息

如果没有任何信息,则我们需要通过命令yum install gcc-c++进行在线安装,如果没有网络的时候,我们就需要下载GCC的安装包进行手动安装了,具体方法比较复杂,不在这里说明。

2. 解压编译redis

执行命令cd /usr/local/  ,mkdir redis,创建一个redis目录,将redis压缩包放在redis目录下,执行解压操作,通过命令

tar –xvf redis-3.2.9-tar.gz,解压后如下信息

然后进入到redis-3.2.9目录里,执行命令:make && make install,也可以安装到指定目录,这里如果不指定PREFIX,则默认安装在/usr/local/bin下,保持默认就好。如果没有root权限是无法安装的。

我们获取root权限后再进行安装,安装成功的信息如下:

也可以到/usr/local/bin目录下查看。信息如下:

如果我们安装单机模式,不存在集群功能的话,我们现在就可以将redis运行起来,直接在刚刚解压的Redis目录下运行./redis-server命令就可以将单机的Redis运行起来。

$ cd /home/cmfchina/redis/redis-3.2.9
$ redis-server redis.conf  //所有相关配置信息都在conf里面,如果不设置,默认端口号为:6379

3. 配置Redis集群

由于需要集群,我们需要建立多个节点,一般是建立6个节点,也就对应6个端口,端口号我们可以自行定义,保证唯一性即可。我们可以通过xftp5可视化工具创建3个节点目录。可以建立在root目录下,也可以建立在/etc目录下。也可以通过命令批量创建。可视化工具创建样例如下:

命令创建如下:

上述两个图片是建立6个目录,我们不理睬,我们自己建立三个,建完之后,需要配置各自的redis.conf文件,我们复制一份之前安装生成的redis.conf文件到我现在保留7001-7003这三个目录,复制完文件后,例如我复制一份到7001目录下,现在需要修改这个配置文件,主要修改以下内容:

port 7001    //配置集群的端口,分别是7001、7002、7003

bind 本机的IP    //这里的默认配置是127.0.0.1改为内网ip。

daemonsize yes   //允许redis在后台运行

pidfile  /var/run/redis_7001.pid  //改成和端口一致

cluster-enabled  yes   // 开启集群 把注释去掉

cluster-config-file node_7001.conf  //集群的配置,和端口一致

cluster-node-timeout  15000  // 请求超时,默认为15秒

appendonly  yes // aof日志开启,有需要就开启,每一次写操作都会记录一条日志。

配置完这个文件后,依次复制然后去修改配置文件。修改完这些配置文件以后,我们可以试下是否可以启动服务。依次启动三个节点。

./redis-server  /etc/redis/redis7001/redis.conf

./redis-server  /etc/redis/redis7002/redis.conf

./redis-server  /etc/redis/redis7003/redis.conf

通过命令查看启动情况:

3.1 另一台机器执行同样的操作

另一台机器只安装redis,分配三个端口:7004、7005、7006,看然后修改相应的配置文件。

3.2  安装Ruby环境

3.2.1 下载、安装ruby

通过命令先创建目录,提前下e载好ruby,将ruby拷贝到新建目录下,新建目录的命令如下:mkdir /usr/local/ruby,把包放在该目录下,解压该包,命令如下:tar –vxf ruby-2.5.0.tar.gz

cd ruby-2.5.0/

./configure

make && make install

验证ruby安装是否成功,查看版本执行命令:

ruby –v

 3.2.2 下载安装rubygems

通过命令创建rubygems目录,cd/usr/local,执行mkdir rubygems,把压缩包放在该目录下,解压该包。

tar –vzxf rubygems-2.7.4.tgz(下载不同的压缩包,执行命令的-..f有所不同,按照实际情况执行)

cd rubygems-2.7.4/

ruby setup.rb(执行命令)

执行完该命令后,没有显示报错,那最好了,如果有报错一般是如下:

解决办法:缺少了zlib包,需要下载并安装zlib。

3.2.3 下载安装zlib

  cd /usr/local

  mkdir zlib

  tar –vxf zlib-1.2.11.tar.gz

  ./configure –-prefix=/usr/local/zlib

  make

  make install

3.2.4 编译ruby的zlib

  cd /usr/local/ruby-2.5.0/ext/zlib/

  ruby extconf.rb –with-zlib-include=/usr/local/zlib/include/ --with-zlib-lib=/usr/local/zlib/lib

  make

  如果还有报错:

解决办法:执行完extconf.rb之后又会生成一个Makefile vim Makefile

把$(top_srcdir) 换成 ../../.

然后再make

make.make install

错误都解决之后,回到安装rubygems的步骤。

进入rubygems的安装目录,执行ruby setup.rb

cd rubygems-2.7.4/

ruby setup.rb(执行命令)

安装成功:

3.2.5 安装ruby-redis插件

下载redis-3.2.2.gem,刚刚安装的rubygems就是为了安装这个插件,把文件放到/usr/local/redis目录下,执行安装命令:

gem install redis-3.2.2.gem

执行完如果不报错,那万事大吉了,如果有报错,那就再解决报错。

解决办法:缺少OpenSSL,下载安装。

这个问题和zlib问题类似。

cd /usr/local

mkdir openssl

tar -xvf openssl-1.0.2n.tar.gz

./config -fPIC --prefix=/usr/local/openssl enable-shared

./config -t

make && make install

编译ruby中的openssl

然后回到安装redis-3.2.2.gem,在redis目录下安装。

gem install redis-3.2.2.gem

安装成功。

3.2.6 启动集群

cd /usr/local/redis/redis-3.2.9/src

./redis-trib.rb create –replicas 1 192.168.0.1:7001 192.168.0.1:7002 192.168.0.1:7003 192.168.0.2:7004 192.168.0.2:7005 192.168.0.2:7006

图不重要,重要的是启动命令。

上面标红的选择yes。

然后测试一下集群,随便连接一个节点

./redis-cli –h 192.1686.0.2 –p 7005 –c

连接成功之后:

存值

set myKey “0001”

然后会显示OK

然后再连接另外一个节点取值,

./redis-cli –h 192.1686.0.2 –p 7006 –c

get myKey

会显示“0001”

到此一个集群就创建成功了。

4. 集群后节点操作

通过命令进入集群,./redis-cli –h 192.1686.0.2 –p 7005 –c

,进入集群后输入ping,如果响应了pong,表示集群连接成功。连接进集群之后可以查看当前集群的信息和节点的信息.CLUSTER INFO 列出当前节点的信息

CLUSTER NODES 列出当前集群中的节点信息

前面一段很长的字符串就是节点的id。从这个命令可以知道哪些节点还活着,哪些节点已经挂了。端口后面带着fail的都是挂掉的节点。

退出集群连接才能关闭某一个节点:

./redis-cli –c –h 192.168.0.2 –p 7000 shutdown

这条命令的意思是关闭2机器上端口为7000的redis节点。.关闭之后可以连接集群去执行 CLUSTER NODES ,这个节点的状态已经是fail。

节点加入、移出集群

添加一个节点之前务必保证该节点已经启动了,如果该节点之前在创建集群时已经在集群里面了,关闭该节点然后再重新启动,该节点会自动加入集群。

./redis-server ../redis_cluster/7000/redis.conf

然后连接进集群,如果该节点之前不在集群中,连接集群输入cluster meet 命令就可以指定某个节点加入集群。

CLUSTER MEET 192.168.0.1:7001

CLUSTER forget fd72b78b1eaa430ca309bc5226d90fe67199a576

这个一长段字符串是节点的id,forget之后可以再去看节点的信息

forget之后,如果一分钟不进行任何操作,该节点会自动加入集群。

Redis集群常见问题汇总

问题1:

   执行命令:./redis-trib.rb 

/usr/local/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- redis (LoadError)from /usr/local/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'from ./redis-trib.rb:25:in `<main>'

解决方法:下载安装rubygem 进入解压包中.configure    make && make install

问题2:

在Redis 4 之后的版本,出于安全考虑,默认只处理本机的请求,如果需要处理除了其他服务器的请求,需要修改上述配置文件的第二个地方。但是在Redis 4之前的版本,例如redis-3.0.0 则不需要手动更改,默认处理所有请求。

如果出现DENIED Redis is running in protected mode because protected mode is enabled这个错误,详细错误如下图,

问题描述所说:只能用本地连接,不能用网络IP,因为处于保护模式。所以只需要更改redis.conf 文件 protected-mode no

原文地址:https://blog.csdn.net/qq_36743013/article/details/89385706

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


validates:conclusion,:presence=>true,:inclusion=>{:in=>[0,1]}validates:email,:presence=>true,:length=>{:minimum=>3,:maximum=>254},:uniqueness=>true,:email=>truevalidates:ending_order,
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各Master的状态,如果Master异常,则会做主从切换,将Slave作为master,将master做为slave。其配置也较复杂,且表现一般。redis3.0以后已经支持集群容错功能,并且非常简单1.1素材准备centos7(集群搭建,至少三个master。需
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow                 不知道大家是否注意到,全新安装ruby之后,无论是在windows或是linux还是macosX下使用rix
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 modify_my_object!,这个方法名是以!结尾,在ruby的对象里边是用于表达修改本身的意思。比如String#gsub,返回的是一个新的字符串对象;而String#gsub!,返回的是自身已经被修改的对象。不止!这样的特殊字符可以命名,ruby
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。 什么是编程? 编程即程序员根据需求把自己的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含一堆字符的文件。二编程语言分
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编程语言的特性包括:数据封装数据抽象多态性继承这些特性将在面向对象的Ruby中进行讨论。一个面向对象的程序,涉及到的类和对象。类是个别对象创建的蓝图。在面向对象的术语中,您
1.ruby的标签<ruby>漢<rp>(<p><rt>han<t><rp>)<p>字<rp>(<p><rt>zi<t><rp>)<p><uby> 
1、软件安装1.安装包是个压缩包-->解压到/homeedis_tar下命令如下: tar-zxvf./../-C/homeedis_tar2.安装c++环境yum-yinstallgcc-c++(注:redis底层源码是c++)3.解压后需要源码编译进入到redis-3.0.0后执行make4.编译完后开始安装需要指定一个安装路径
1.sass基于Ruby语言开发而成,因此安装sass前需要安装Ruby。(注:mac下自带Ruby无需在安装Ruby!)window下安装SASS首先需要安装Ruby,先从官网下载Ruby并安装。安装过程中请注意勾选AddRubyexecutablestoyourPATH添加到系统环境变量。ruby官网:https:/ubyinstaller.org/downloa
本节对我们项目实现的功能和知识点做一个简单的介绍,因为是RESTfulAPI项目,所以对于后端来说基本上没有什么UI界面可展示,那我们就在关键的点,使用客户端(Android)实现的效果图。课程简介这是一门企业级项目实战课程,目的是从0使用Rails开发一个企业级RESTfulAPI项目;他不能让你年薪30
注意点:1.redis集群至少需要6个节点。2.redis集群至少部署在3台服务器上。3.redis的版本需要在3.0以上。4.需要ruby的支持。步骤:1.安装依赖环境:yuminstallgcc-c++2.下载ruby-2.4.6,编译安装https://cache.ruby-lang.org/pububy/2.4uby-2.4.6.tar.gztarzxf ruby-2.4.6.
在我的客户项目中,我看到很多睡眠用法0.代码看起来像这样.whiletrue......sleep0end通过阅读SO的一些答案,如this,似乎睡眠0具有一定的意义.我现在想知道的是,在时间片0期间调度其他线程运行(如果它们正在等待运行)是像ruby或python这样的langVM的工作,或者它
前情提要:第11天开始,要更深入Ruby的精髓!Ruby经典面试题目#11Ruby的block,proc,lamdba方法比较?What’sdifferencebetweenblocks,procsandlambdas?block代码内存块代码内存块是用do…end围起来,围出特定一个区域、放代码的地方。就好像跑马拉松一样,道路上会进行交通管制,把参赛者
安装环境及工具系统:RedHatEnterpriseLinuxServer工具:XShell5及Xftp5等远程工具安装包:Ruby-2.4.1及以上       Rubygems-2.6.12及以上       Redis-3.2.8及以上(3.x版本才开始支持集群功能)       Redis-3.0.0-gem及以上(该版本不一定要和red
 今天在做Redis的Cluster集群的时候,在执行geminstallredis时,提示如下错误:geminstallredisERROR:Errorinstallingredis:redisrequiresRubyversion>=2.2.2.CentOS7yum库中ruby的版本支持到2.0.0,可gem安装redis需要最低是2.2.2,采用rvm来更新ruby:1
我试图在Rails4中制作应用程序.我正在挣扎.我正在尝试合并一个bootstrap主题,我遇到了供应商javascripts和其余代码的问题.我认为问题可能与在我的application.js中使用jQuery然后使用以’$’符号开头的供应商.js文件有关:$.circleProgress={我刚看过这个:https://learn.jqu
该内容全部为搬运,感谢作者的分享~,附有原文链接。使用ruby环境SASS学习系列之(一)---------SASS,SCSS环境搭建(Ruby) 使用node-sassSASS学习系列之(二)---------SASS,SCSS环境搭建(node-sass)通过命令编译:npmrunsassinput.scssoutput.csssass-loader在webpack打包里
我如何使用PHP5.3Closures,比如我们在Ruby中使用Blocks.我从来没有在Ruby中使用’for’循环,因为使用带有’each”read_all”inject’方法的块.我如何使用像Ruby块这样的PHP5.3闭包,并说再见’for’Loops
一、说明:搭建Redis集群时,安装geminstallredis报错: redisrequiresRubyversion>=2.2.2的报错,查了资料发现是Centos默认支持ruby到2.0.0,可gem安装redis需要最低是2.2.2二、解决办法:解决办法是先安装rvm,再把ruby版本提升至2.3.31.安装curlsudoyuminstal
compass.app是集成了sass的工具,安装完Compass就能够使用sass。首先,上官网 可以看到官网上推荐的两种sass使用方式,application&commandlineapplication里不仅仅只有Compass,不过现在点击Compass.app进行下载。虽然通常我们说sass运行在Ruby环境下,但Compass.app安装使用并不需要