在进行redis集群部署之前,兄弟们最好先在自己的虚拟机上安装好单机版的redis,安装方法很简单,兄弟们可自行用度娘度一下,这里就不再赘述了,本人也是上班时间抽空偷偷写的该博文,也得处处小心被捉了!
好了,闲话少说,进入正题哈!
第一步 搭建ruby环境
先来说说redis用啥来做集群,我们知道hadoop可以用ambari-server来做集群,那么Redis呢?
redis是用一个叫redis-trib.rb的ruby脚本。
redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下(/opt/redis/src/)。是基于redis提供的集群命令封装成简单、便捷、实用的操作工具。
redis-trib.rb是redis作者用ruby完成的。所以redis集群需要先安装ruby环境。
兄弟们,一起来看看redis-trib.rb脚本在哪里,如下图
好了,了解了ruby脚本,下面,一起来看看过程吧!
需要ruby脚本,就的搭建ruby环境。
1 使用yum安装ruby 错误过程重现:
本来想用yum install ruby 来安装,结果
本人的机子上居然没有ruby的yum源,怎奈,天无绝人之路,办法有的是,去官网下载一下ruby的安装包,老老实实的,用解压方式安装吧。
可是,又过了一会,貌似yum又可以用了,得嘞,yum又复活了,还是用yum安装吧,
安静的等他下载完吧,,执行上述命令,结束之后,用rpm -qa | grep ruby 查看一下是否安装成功,如果出来如下图所示的信息,则说明ruby安装成功。
然后输入命令,irb ,测试一下ruby是否可用,见如下图
进入到redis 目录,输入命令 ll *.rb 查看一下 ruby 脚本,看看该脚本长啥样,
哦,原来是这样,挺秀气的。
再执行一下./redis-trib help 命令,看看该工具包提供了哪些命令和功能,但执行该命令的时候,发现了如下问题,说明没有安装redis与ruby的调用接口,之前只是安装了ruby的包管理器
输入命令 gem install redis 时候,又报出如下错误,查了资料发现是Centos默认支持ruby到2.0.0,可gem 安装redis需要最低是2.2.2 。
我的解决方案是,只能重新安装ruby了,再重新安装之前,建议卸载掉原先通过yum 方式安装的软件包,卸载方式为 yum remove 软件包名
执行 yum list installed | grep ruby 查看一下,是否将yum源安装的ruby全部删除掉,包括ruby包管理器
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 (指定安装路径)
在 /usr/ruby 目录下,直接编译安装,make && make install
安装过程比较慢,慢慢等吧,,
安装完毕之后,进入到 $HOME/.bash_profile 配置一下ruby的全局命令
然后安装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集群
这里搭建的是假分布式集群,也就是使用的6个redis实例来模拟,条件有限,没法构造六台虚拟机,电脑吃不消哈。
其实道理是一样的,,
1 创建 redis-cluster 目录
在 /usr/local/ 目录下,创建一个 redis-cluster 目录,今后准备把所有的redis子节点都存放在此目录中
2 修改配置
在该目录下创建一个子目录 mkdir redis8001 ,并将 redis-cli redis-server redis-conf 分别复制到该目录下
修改 redis.conf 文件,分别修改 port=8001 daemonize=yes cluster-enabled yes appendable yes
修改完毕,怎么样,兄弟们,是不是很简单?
3 复制目录
接下来再创建五个类似的文件夹,redis8002 redis8003 redis8004 redis8005 redis8006 ,
然后把端口分别改成对应的值
4 复制ruby脚本到redis-cluster目录
把创建集群的ruby脚本复制到redis-cluster目录下。
修改完毕,编写启动脚本,除非你想一个一个启动,否则,最后写一个集群启动脚本
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
如下图所示,执行结果
6 测试集群
当我连接某一个节点,比如8004进行测试的时候,发现报如下错误,6个节点居然没有在同一个集群中,
error) CLUSTERDOWN Hash slot not served(不提供集群的散列槽)
有可能是我把所有的 127.0.0.1 替换成 192.168.1.101 导致的错误,
所以,赶紧把所有节点都加到同一个集群中,,
重复操作步骤5
搞定,,哈哈!
测试一下,我连接的是8004节点,塞入一个值之后,redis通过哈希槽算法,将值放到了节点8002上,如图所示
至此,集群部署成功 !
经过坎坎坷坷,总算把集群部署成功了,大家可以参考一下整个过程,欢迎各位兄弟,提出宝贵意见!