Redis之集群环境部署

Stella981
• 阅读 581

在进行redis集群部署之前,兄弟们最好先在自己的虚拟机上安装好单机版的redis,安装方法很简单,兄弟们可自行用度娘度一下,这里就不再赘述了,本人也是上班时间抽空偷偷写的该博文,也得处处小心被捉了!

好了,闲话少说,进入正题哈!

第一步 搭建ruby环境

        先来说说redis用啥来做集群,我们知道hadoop可以用ambari-server来做集群,那么Redis呢?

redis是用一个叫redis-trib.rbruby脚本。

redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下(/opt/redis/src/)。是基于redis提供的集群命令封装成简单、便捷、实用的操作工具。

redis-trib.rb是redis作者用ruby完成的。所以redis集群需要先安装ruby环境。

兄弟们,一起来看看redis-trib.rb脚本在哪里,如下图

Redis之集群环境部署

好了,了解了ruby脚本,下面,一起来看看过程吧!

需要ruby脚本,就的搭建ruby环境。

1 使用yum安装ruby 错误过程重现:

本来想用yum install ruby 来安装,结果

Redis之集群环境部署

本人的机子上居然没有ruby的yum源,怎奈,天无绝人之路,办法有的是,去官网下载一下ruby的安装包,老老实实的,用解压方式安装吧。

可是,又过了一会,貌似yum又可以用了,得嘞,yum又复活了,还是用yum安装吧,

Redis之集群环境部署

安静的等他下载完吧,,执行上述命令,结束之后,用rpm -qa | grep ruby 查看一下是否安装成功,如果出来如下图所示的信息,则说明ruby安装成功。

Redis之集群环境部署

然后输入命令,irb ,测试一下ruby是否可用,见如下图

Redis之集群环境部署

进入到redis 目录,输入命令 ll *.rb 查看一下 ruby 脚本,看看该脚本长啥样,

Redis之集群环境部署

哦,原来是这样,挺秀气的。

再执行一下./redis-trib help 命令,看看该工具包提供了哪些命令和功能,但执行该命令的时候,发现了如下问题,说明没有安装redis与ruby的调用接口,之前只是安装了ruby的包管理器

Redis之集群环境部署

输入命令 gem install redis 时候,又报出如下错误,查了资料发现是Centos默认支持ruby到2.0.0,可gem 安装redis需要最低是2.2.2 。

Redis之集群环境部署

我的解决方案是,只能重新安装ruby了,再重新安装之前,建议卸载掉原先通过yum 方式安装的软件包,卸载方式为 yum remove 软件包名

执行 yum list installed | grep ruby 查看一下,是否将yum源安装的ruby全部删除掉,包括ruby包管理器

Redis之集群环境部署

2 在线方法安装ruby

在上述步骤中,重现了使用yum 方法安装ruby的全过程,当然,也不能百分之百保证能安装正确,可能跟系统有关,不过最保险的安装方法,我建议还是采用在线安装

执行 : wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.gz 直接在线下载 ruby 安装包

在指定目录下 解压ruby (/usr/ruby)

tar -xvfz ruby-2.4.3 

然后 进入到 /usr/ruby/ 执行 ./configure --prefix =/usr/local/ruby (指定安装路径)

Redis之集群环境部署

在 /usr/ruby 目录下,直接编译安装,make && make install 

安装过程比较慢,慢慢等吧,,

安装完毕之后,进入到 $HOME/.bash_profile  配置一下ruby的全局命令

Redis之集群环境部署

Redis之集群环境部署

然后安装redis的gem包 :gem install redis-4.0.0.gem (redis-4.0.0.gem 可自行到网站下载

下载地址为: wget https://rubygems.global.ssl.fastly.net/gems/redis-4.0.0.gem)

至此,ruby环境搭建完毕

进入到redis的src目录,用ll  *.rb找到redis-trib.rb文件,

执行命令./redis-trib  help 可以查看该工具包提供的命令和功能

Redis之集群环境部署

第三步 搭建redis集群

这里搭建的是假分布式集群,也就是使用的6个redis实例来模拟,条件有限,没法构造六台虚拟机,电脑吃不消哈。

其实道理是一样的,,

1 创建 redis-cluster 目录

在 /usr/local/ 目录下,创建一个 redis-cluster 目录,今后准备把所有的redis子节点都存放在此目录中

Redis之集群环境部署

2 修改配置

在该目录下创建一个子目录 mkdir redis8001 ,并将 redis-cli redis-server redis-conf 分别复制到该目录下

Redis之集群环境部署

Redis之集群环境部署

修改 redis.conf 文件,分别修改 port=8001 daemonize=yes  cluster-enabled yes  appendable yes 

Redis之集群环境部署

修改完毕,怎么样,兄弟们,是不是很简单?

3 复制目录

接下来再创建五个类似的文件夹,redis8002 redis8003 redis8004 redis8005 redis8006 ,

然后把端口分别改成对应的值 

Redis之集群环境部署

4 复制ruby脚本到redis-cluster目录

把创建集群的ruby脚本复制到redis-cluster目录下。

Redis之集群环境部署

修改完毕,编写启动脚本,除非你想一个一个启动,否则,最后写一个集群启动脚本

Redis之集群环境部署

5 创建集群

进入到 redis-cluster 目录,执行如下命令,创建集群,

./redis-trib.rb  create --replicas  1  127.0.0.1:8001  127.0.0.1:8002  127.0.0.1:8003  127.0.0.1:8004  127.0.0.1:8005   127.0.0.1:8006

如下图所示,执行结果

Redis之集群环境部署

6 测试集群

当我连接某一个节点,比如8004进行测试的时候,发现报如下错误,6个节点居然没有在同一个集群中,

error) CLUSTERDOWN Hash slot not served(不提供集群的散列槽)

有可能是我把所有的 127.0.0.1 替换成 192.168.1.101 导致的错误,

Redis之集群环境部署

所以,赶紧把所有节点都加到同一个集群中,,

重复操作步骤5 

Redis之集群环境部署

搞定,,哈哈!

测试一下,我连接的是8004节点,塞入一个值之后,redis通过哈希槽算法,将值放到了节点8002上,如图所示

Redis之集群环境部署

至此,集群部署成功 !

经过坎坎坷坷,总算把集群部署成功了,大家可以参考一下整个过程,欢迎各位兄弟,提出宝贵意见!

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Nginx + lua +[memcached,redis]
精品案例1、Nginxluamemcached,redis实现网站灰度发布2、分库分表/基于Leaf组件实现的全球唯一ID(非UUID)3、Redis独立数据监控,实现订单超时操作/MQ死信操作SelectPollEpollReactor模型4、分布式任务调试Quartz应用
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这