redis3.2.1集群安装部署

2024-06-01 01:48
文章标签 部署 集群 安装 redis3.2

本文主要是介绍redis3.2.1集群安装部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



二、redis cluster安装

    1、下载和解包

1
2
3
cd /usr/local/
wget http: //download.redis.io/releases/redis-3.2.1.tar.gz
tar -zxvf /redis- 3.2 . 1 .tar.gz

 2、 编译安装

 cd redis-3.2.1make && make install    

     进入解压后的目录,并执行编译操作:  make test 

          

      编译测试结束后,出现以下信息,证明没有问题:编译的命令放在src目录下

     

  编译成功之后,执行install操作即可:sudo make install

 


 3、创建redis节点

     测试我们选择2台服务器,分别为:192.168.1.237,192.168.1.238.每分服务器有3个节点。

  我先在192.168.1.237创建3个节点:

复制代码
  cd /usr/local/mkdir redis_cluster  //创建集群目录mkdir 7000 7001 7002  //分别代表三个节点    其对应端口 7000 7001 7002
 //创建7000节点为例,拷贝到7000目录cp /usr/local/redis-3.2.1/redis.conf  ./redis_cluster/7000/   //拷贝到7001目录cp /usr/local/redis-3.2.1/redis.conf  ./redis_cluster/7001/   //拷贝到7002目录cp /usr/local/redis-3.2.1/redis.conf  ./redis_cluster/7002/   
复制代码

   分别对7001,7002、7003文件夹中的3个文件修改对应的配置

复制代码
daemonize    yes                          //redis后台运行
pidfile  /var/run/redis_7000.pid          //pidfile文件对应7000,7002,7003
port  7000                                //端口7000,7002,7003
cluster-enabled  yes                      //开启集群  把注释#去掉
cluster-config-file  nodes_7000.conf      //集群的配置  配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout  5000                //请求超时  设置5秒够了
appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志
复制代码

   在192.168.1.238创建3个节点:对应的端口改为7003,7004,7005.配置对应的改一下就可以了。

   4、两台机启动各节点(两台服务器方式一样)

复制代码
cd /usr/local
redis-server  redis_cluster/7000/redis.conf
redis-server  redis_cluster/7001/redis.conf
redis-server  redis_cluster/7002/redis.conf
redis-server  redis_cluster/7003/redis.conf
redis-server  redis_cluster/7004/redis.conf
redis-server  redis_cluster/7005/redis.conf
复制代码

   5、查看服务

      ps -ef | grep redis   #查看是否启动成功

     netstat -tnlp | grep redis #可以看到redis监听端口

     记得对每台服务上redis监听的10000+端口号进行开启,如17000/17001/17002,不一定是这个号

       sudo iptables -A INPUT -p tcp --dport 17000 -j DROP

       sudo iptables -A INPUT -p tcp --dport 17001 -j DROP

       sudo iptables -A INPUT -p tcp --dport 17002 -j DROP

      

        每台服务上关闭防火墙

        service iptables stop


三、创建集群

  前面已经准备好了搭建集群的redis节点,接下来我们要把这些节点都串连起来搭建集群。官方提供了一个工具:redis-trib.rb(/usr/local/redis-3.2.1/src/redis-trib.rb) 看后缀就知道这鸟东西不能直接执行,它是用ruby写的一个程序,所以我们还得安装ruby.

yum -y install ruby ruby-devel rubygems rpm-build 

  再用 gem 这个命令来安装 redis接口    gem是ruby的一个工具包.

gem install redis    //等一会儿就好了
当然,方便操作,两台Server都要安装。

  上面的步骤完事了,接下来运行一下redis-trib.rb

复制代码
 /usr/local/redis-3.2.1/src/redis-trib.rb

   Usage: redis-trib <command> <options> <arguments ...>

   reshard        host:port
                  --to <arg>
                  --yes
                  --slots <arg>
                  --from <arg>
  check          host:port
  call            host:port command arg arg .. arg
  set-timeout    host:port milliseconds
  add-node        new_host:new_port existing_host:existing_port
                  --master-id <arg>
                  --slave
  del-node        host:port node_id
  fix            host:port
  import          host:port
                  --from <arg>
  help            (show this help)
  create          host1:port1 ... hostN:portN
                  --replicas <arg>

For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.

复制代码

     看到这,应该明白了吧, 就是靠上面这些操作 完成redis集群搭建的.

 确认所有的节点都启动,接下来使用参数create 创建 (在192.168.1.237中来创建)

 /usr/local/redis-3.2.1/src/redis-trib.rb  create  --replicas  1  192.168.1.237:7000 192.168.1.237:7001  192.168.1.237:7003 192.168.1.238:7003  192.168.1.238:7004  192.168.1.238:7005

    解释下, --replicas  1  表示 自动为每一个master节点分配一个slave节点    上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)

    前面已经提醒过的 防火墙一定要开放监听的端口,否则会创建失败。

 运行中,提示Can I set the above configuration? (type 'yes' to accept): yes    //输入yes

 接下来 提示  Waiting for the cluster to join..........  安装的时候在这里就一直等等等,没反应,傻傻等半天,看这句提示上面一句,Sending Cluster Meet Message to join the Cluster.

    这下明白了,我刚开始在一台Server上去配,也是不需要等的,这里还需要跑到Server2上做一些这样的操作。

    在192.168.1.238, redis-cli -c -p 700*  分别进入redis各节点的客户端命令窗口, 依次输入 cluster meet 192.168.1.238 7000……

    回到Server1,已经创建完毕了。

    查看一下 /usr/local/redis/src/redis-trib.rb check 192.168.1.237:7000

    到这里集群已经初步搭建好了。

  访问某一个节点

 redis-cli -h 192.168.46.145 -p 7000
 redis-cli -h 192.168.46.146 -p 7003


四、测试

1)get 和 set数据

    redis-cli -c -p 7000

    进入命令窗口,直接 set  hello  howareyou

    直接根据hash匹配切换到相应的slot的节点上。

    还是要说明一下,redis集群有16383个slot组成,通过分片分布到多个节点上,读写都发生在master节点。

  2)假设测试

    果断先把192.168.1.238服务Down掉,(192.168.1.238有1个Master, 2个Slave) ,  跑回192.168.1.238, 查看一下 发生了什么事,192.168.1.237的3个节点全部都是Master,其他几个Server2的不见了

    测试一下,依然没有问题,集群依然能继续工作。

    原因:  redis集群  通过选举方式进行容错,保证一台Server挂了还能跑,这个选举是全部集群超过半数以上的Master发现其他Master挂了后,会将其他对应的Slave节点升级成Master.

    疑问: 要是挂的是192.168.1.237怎么办?    哥试了,cluster is down!!    没办法,超过半数挂了那救不了了,整个集群就无法工作了。 要是有三台Server,每台两Master,切记对应的主从节点

            不要放在一台Server,别问我为什么自己用脑子想想看,互相交叉配置主从,挂哪台也没事,你要说同时两台crash了,呵呵哒......

  3)关于一致性

    我还没有这么大胆拿redis来做数据库持久化哥网站数据,只是拿来做cache,官网说的很清楚,Redis Cluster is not able to guarantee strong consistency. 


五、安装遇到的问题

     1、

  CC adlist.o
  /bin/sh: cc: command not found
  make[1]: *** [adlist.o] Error 127
  make[1]: Leaving directory `/usr/local/redis-3.2.1/src
  make: *** [all] Error 2

     解决办法:GCC没有安装或版本不对,安装一下

yum  install  gcc

   2、

  zmalloc.h:50:31: 
  error: jemalloc/jemalloc.h: No such file or directory
  zmalloc.h:55:2: error: 

  #error "Newer version of jemalloc required"
  make[1]: *** [adlist.o] Error 
  1
  make[1]: Leaving directory `/data0/src/redis-2.6.2/src
  make: *** [all] 
  Error 2

    解决办法:原因是没有安装jemalloc内存分配器,可以安装jemalloc 或 直接

     输入make MALLOC=libc  && make install


  3、Redis need tcl 8.5 or newer


hadoop@stormspark:~/workspace/redis2.6.13/src$ make test
You need tcl 8.5 or newer in order to run the Redis test
make: *** [test] Error 1

[html]  view plain copy
  1. wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz  
  2. sudo tar xzvf tcl8.6.1-src.tar.gz  -C /usr/local/  
  3. cd  /usr/local/tcl8.6.1/unix/  
  4. sudo ./configure  
  5. sudo make  
  6. sudo make install   
4、 redis requires Ruby version >= 2.2.2问题

最近在研究redis的集群,redis官方提供了redis-trib.rb工具,但是在使用之前 需要安装ruby,以及redis和ruby连接:

yum -y install ruby ruby-devel rubygems rpm-build

gem install redis

其中 gem install redis命令执行时出现了:

 redis requires Ruby version >= 2.2.2的报错,查了资料发现是Centos默认支持ruby到2.0.0,可gem 安装redis需要最低是2.2.2

解决办法是 先安装rvm,再把ruby版本提升至2.3.3

1.安装curl

sudo yum install curl

2. 安装RVM

curl -L get.rvm.io | bash -s stable 

3. 

source /usr/local/rvm/scripts/rvm

4. 查看rvm库中已知的ruby版本

rvmlist known

5. 安装一个ruby版本

rvminstall 2.3.3

6. 使用一个ruby版本

rvmuse 2.3.3

7. 设置默认版本

rvmremove 2.0.0

8. 卸载一个已知版本

ruby --version

9. 再安装redis就可以了

gem install redis


6.Node 192.168.7.232:7000 is not empty.


 Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join.......................................

在这里的时候卡了很久没过去,我就结束了想重新再试下

Connecting to node 192.168.7.232:7000: OK

[ERR] Node 192.168.7.232:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

提示有数据了,我想是开始初始化的时候有写数据进去了

把7000目录下生成的appendonly.aof    nodes.conf 删除掉重启启动服务,

想起来我是把7.232上面的服务启动后把7000 7001 直接传到237 和246上面去的,为了节省建目录和copy配置文件的操作,这样导致机器加入集群的时候一直在等待,

把3台机器的6个服务的appendonly.aof    nodes.conf都删了,同时记得删除每台服务器下的/var/run/redis_*.pid,重新启动服务再执行,





单机时redis的常见安装编译及测试验证:


一  下载 Redis 安装包

  去redis 官网下载reids 安装包, redis 官网默认只提供Linux 的安装包,所以不用担心下载到windows 的安装包.笔者下载的是 redis-3.2.1.tar.gz. 下载的为redis 源码,应该使用源码安装方式安装redis.


二 安装redis 

      1. 解压: tar -zxvf redis-3.2.1.tar.gz

           

      2. 进入解压后的目录,并执行编译操作:  make test 

          

     3. 编译测试结束后,出现以下信息,证明没有问题:编译的命令放在src目录下

     

 4. 编译成功之后,执行install操作即可:sudo make install

        

    5. 目前redis 已经安装成功了redis 的相关命令都存放在../redis-3.2.1/src 目录下,同时在/usr/local/bin/ 目录下生成了如下文件:

        

 

二 redis 的卸载

 1. 查看reids 是否在运行,如果在运行的话,先关闭

         

  从图上可以看出,redis-server 目前正在6379 端口运行

 2. 如果redis-server 服务正在后台运行,那么需停止redis-server 服务:

  正常停止redis-server 服务,使用reids 客户端命令: redis-cli shutdown

  

  如果停止不了,则采取杀死进程的方式:kill -9 PID

  

    3. 删除/usr/local/lib 目录下与redis 相关的命令:

        

     4. 删除redis 解压后的目录 redis-3.2.1 即可


三 redis 的启动

  redis 安装成功之后,会生成相应的reids 命令文件, 所有的命令都在src 目录下,同时会再/usr/local/bin 目录下生成reids-* 的几个命令,这样我们在调用redis 的相关命令的时候可以不使用绝对路径.启动reids 有很多中方式,后台启动,脚本启动等.

  1. redis 后台启动: redis-server &

            此种方式没有指定配置文件,会使用默认的配置,并打印一个Warning: no config file ....

           

   按ctrl + C 可退出redis 启动窗口,此时redis 并不会关闭,而是会再后台运行,可通过命令查看: ps aux | grep redis

            

      

       2. 指定配置文件启动: redis-server  ***/redis.conf

           解压redis 的原文后, 目录中有一个redis 配置模板 redis.conf , 我们可以复制一份,然后修改成自己的redis配置文件. 此处笔者只修改一个端口号, 将端口号修改为8080, 然后使用 此配置文件启动redis 服务

         

   关闭使用命令: redis-cli -p 8080 shutdown 

     3. 设置开机启动:

四 redis 客户客户段连接:

  redis 安装成功之后,会生成redis-cli 客户端, 可以通过redis-cli 命令连接本地或者远程的redis服务器.redis-cli 命令有很多参数,常用的选项有-h -p -u -a , 对应于ip地址,端口号,用户名,密码,可通过 redis-cli --help 来查看redis-cli 的常用选项

  1. 连接本地redis 示例:

   

        2. 连接远程redis: 

           

五 关闭redis

       1. 正常关闭本地redis :  redis-cli shutdown, 默认关闭本地6379的redis

           

            如果正常关闭不了,可以通过杀死线程关闭:

   

 2. 远程关闭redis 服务器: redis-cli -h xxx.xxx.xxx.xxx  -p xxxx -u xxxx -a xxxx  shutdown

         




本文参考:http://blog.csdn.net/zgf19930504/article/details/51850594


http://www.cnblogs.com/yuanermen/p/5717885.html


这篇关于redis3.2.1集群安装部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1019650

相关文章

Win安装MySQL8全过程

《Win安装MySQL8全过程》:本文主要介绍Win安装MySQL8全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Win安装mysql81、下载MySQL2、解压文件3、新建文件夹data,用于保存数据库数据文件4、在mysql根目录下新建文件my.ini

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

如何在pycharm安装torch包

《如何在pycharm安装torch包》:本文主要介绍如何在pycharm安装torch包方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录在pycharm安装torch包适http://www.chinasem.cn配于我电脑的指令为适用的torch包为总结在p

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas