外网安装redis集群

应用场景介绍
  本文主要是介绍Redis集群在Linux环境下的安装讲解,其中主要包括在联网的Linux环境和脱机的Linux环境下是如何安装的。因为大多数时候,公司的生产环境是在内网环境下,无外网,服务器处于脱机状态(最近公司要上线项目,就是无外网环境的Linux,被离线安装坑惨了,走了很多弯路,说多了都是血泪史啊%>_<%)。这也是笔者写本文的初衷,希望其他人少走弯路,下面就介绍如何在Linux安装部署Redis集群。
二、安装环境及工具
系统:Red Hat Enterprise Linux Server release 6.6
  工具:XShell6及Xftp6
  安装包:GCC-7.1.0
      Ruby-2.4.1
      Rubygems-2.6.12
      Redis-5.0.7(3.x版本才开始支持集群功能)
三、安装步骤
要搭建一个最简单的Redis集群,我们至少需要6个节点:3个Master和3个Slave。那为什么需要3个Master呢?其实就是一个“铁三角”的关系,当1个Master下线的时候,其他2个Master和对应的Salve立马就能顶替上去,确保集群能够正常使用,如果你之前了解Mongodb/Hadoop/Strom这些的话,你就很容易目标一般分布式的最低要求基数个数节点,这样便于选举(少数服从多数的原则)。本文当中,我们就偷下懒,在一台Linux虚拟机上搭建6个节点的Redis集群(实际真正生产环境,需要3台Linux服务器分布存放3个Master)
1、安装GCC环境
安装Redis需要依托GCC环境,先检查Linux是否已经安装了GCC,如果没有安装,则需要进行安装
检查GCC是否安装,可以看看版本号
$ gcc -v
如果已经安装了GCC,则会显示以下信息
在这里插入图片描述
如果没有任何信息,则我们需要切换 root用户安装 通过命令yum install gcc-c++进行在线安装
$ yum install gcc-c++

2、安装Ruby和Rubygems
如果有网的话,则通过yum命令进行安装,自动将关联的依赖包全部安装
$ yum install ruby
$ yum install rubygems

四、安装Redis
1、到官网(https://redis.io/download)下载Redis,现在最新的版本为:5.0.7 ,将下载好的压缩包上传到服务器当中。如图所示,我是新建了一个Redis临时目录存放,偷懒我就用xftp6手动创建一个目录存放(也可以写命令创建文件夹 $ makdir redis)

2、安装Redis
转到Redis的存放目录,然后通过命令解压Redis压缩包
$ cd /home/cmfchina/redis
$ tar -zxvf redis-5.0.7.tar.gz

通过make命令进行安装Redis
$ cd /home/cmfchina/redis/redis-5.0.7
$ make
$ make PREFIX=~/redis install

如果只是想要单机,不存在集群功能,我们现在就可以将Redis运行起来,我们直接在刚刚解压的Redis目录下运行命令就可以将单机的Redis 运行起来

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

五、配置Redis集群
  需要使用到集群功能的,进行容错。
  之前讲到是我们需要6个节点的Redis作为集群,所以我们需要创建6个文件夹,分别存放6个节点的配置信息,6个节点需要对应6个端口号,比如7001~7006,这个端口号我们自行定义。

第一步、我们也可以通过命令mkdir批量创建,,命令可能会更快点。
$ mkdir redis{1,2,3,4,5,6}

下面重点来了,需要6个节点,所有我们需要配置各自的redis.conf配置文件。到我们Redis的安装目录usr/local/bin,将redis-cli、redis-server、redis.conf(没有conf文件,可以从压缩包里拷个出来,或者自己直接新建一个空的conf文件,后面再配置相关信息),分别复制到刚刚创建的6个文件夹当中。

第二步、接下来,我们需要配置redis.conf文件,如果你是从压缩包拷贝出来,你会发现特别多的备注,这些是都是官网的备注讲解,你可以全部删除,只配置你想配置的信息就行。我们主要配置相对应的端口信息和集群配置信息

我们分别配置相对应的6个redis.conf信息。

分别将这6个redis服务启动起来(命令redis-server redis.conf),一个一个去启动有点复杂,在redis目录创建一个sh脚本来启动6个实例

第三步、我们到之前解压的文件redis-5.0.7目录下找到文件为:redis-cli,如图所示

将该文件拷贝到与6个文件夹的同级目录下

第六步、启动Redis集群
完成以上步骤之后,我们再回到第三步执行命令
在redis目录下执行命令:
./redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1

我们选择yes,意思是服从这种主从分配方式

Performing hash slots allocation on 6 nodes…
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.0.2:7004 to 192.168.0.2:7001
Adding replica 192.168.0.2:7005 to 192.168.0.2:7002
Adding replica 192.168.0.2:7006 to 192.168.0.2:7003

Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 26e122abaece6999ab1b483986ea67fdacd318a8 192.168.0.2:7001
slots:[0-5460] (5461 slots) master
M: ce0ec5a1b10eca668d9dccf3525a2c508ad8ca16 192.168.0.2:7002
slots:[5461-10922] (5462 slots) master
M: 0b7743a9971fdd541375a9f3c387c6de7087f619 192.168.0.2:7003
slots:[10923-16383] (5461 slots) master
S: 9939b985f82e8309521ed4d5746d4bd8e2ccd33b 192.168.0.2:7004
replicates 0b7743a9971fdd541375a9f3c387c6de7087f619
S: bec194c20d1184e457a2c436d4cdd1db4b750dda 192.168.0.2:7005
replicates 26e122abaece6999ab1b483986ea67fdacd318a8
S: a85f85b046eb930b2de1c5ef0673c3927e34c804 192.168.0.2:7006
replicates ce0ec5a1b10eca668d9dccf3525a2c508ad8ca16
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.0.2:7001)
M: 26e122abaece6999ab1b483986ea67fdacd318a8 192.168.0.2:7001
slots:[0-5460] (5461 slots) master
13810273933615693825 additional replica(s)
S: 9939b985f82e8309521ed4d5746d4bd8e2ccd33b 192.168.0.2:7004
slots: (0 slots) slave
replicates 0b7743a9971fdd541375a9f3c387c6de7087f619
M: ce0ec5a1b10eca668d9dccf3525a2c508ad8ca16 192.168.0.2:7002
slots:[5461-10922] (5462 slots) master
597568115676545025 additional replica(s)
S: bec194c20d1184e457a2c436d4cdd1db4b750dda 192.168.0.2:7005
slots: (0 slots) slave
replicates 26e122abaece6999ab1b483986ea67fdacd318a8
M: 0b7743a9971fdd541375a9f3c387c6de7087f619 192.168.0.2:7003
slots:[10923-16383] (5461 slots) master
597571895247765505 additional replica(s)
S: a85f85b046eb930b2de1c5ef0673c3927e34c804 192.168.0.2:7006
slots: (0 slots) slave
replicates ce0ec5a1b10eca668d9dccf3525a2c508ad8ca16
[OK] All nodes agree about slots configuration.

Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.

第六、Redis集群测试
我们来测试一下Redis集群,通过连接任一redis端口,添加数据
[root@localhost redis7001]# redis-cli -p 7001 -c
[root@localhost redis7001]# redis-cli -c -h 127.0.0.1 -p 7001 shutdown //关闭集群,如果没有-h参数,默认连接127.0.0.1,如果没有-p参数,默认连接6370端口(所有如果用默认的,就没有-h -p)
说明:-h+host –p+端口号 –c 是要连接集群,注意坑,不加会报错的

可以看到连接的是7001的节点,set name的时候计算了存在哪个hash槽上,会跳转到那个槽对应的节点
结束语:至此,Redis的集群配置的前世今生已到此结束,在没有网络的环境下中途碰到了很多坑,现在我们可以尽情享受Redis,纵使虐我千百遍,我待它如初恋

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值