redis的集群策略有三种,哨兵,主从复制,集群策略三种方式,这里,自己参考了网上的方法以及自己的实际操作进行了一下归纳,原博客链接博客结尾处给出。
开始给出一张网上的图片,用以形容redis的集群策略的。
集群就是将redis中的需要存储的所有数据进行垂直方向上的延伸,将数据分解成不同的小部分部署在不同的redis服务器上,这样就可以有效的缓解单一的redis服务器的压力。这是一种在垂直的角度来进行分解,而主从复制则是从水平的角度进行延伸,即将每个节点进行赋值,使得几个节点具有相同的数据,这样,同样也能够很有效的进行缓解单一服务器的压力,实现分布式的结构,从而应对高流量的用户访问。
接下来就开始集群环境的搭建吧。
我自己是在linux上面搭建的集群环境。搭建环境还需要下载一些工具,这样才能够完成集群环境的搭建。
工具:GCC、Ruby、Ruby、Rubygems、Redis(3.x版本以上)
个人建议安装这些工具可以使用命令行在线安装,这样感觉坑会少些,包括openssl、ruby、rubygems等。
步骤:
(1)安装GCC环境
这个一般刚开始的linux系统是不带这个的,可以检查下自己的linux系统是否自带GCC环境,如果没有安装就需要进行安装。检查方法:命令行输入gcc -v查看是否有相应的信息,没有的话就需要进行在线安装,安装方法:yum install gcc-c++
安装GCC环境网上也有很多教程。
(2)安装redis
其实安装redis的步骤也是比较简单的,安装这个的时候多半不会出什么问题,因此可以在百度安装教程。
(3)搭建集群坏境
redis集群至少需要三个节点,即最少需要三个redis-server,因为redis集群内部的投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以两个节点无法构成集群。而后面还会构造主从节点,因此最好构建六个节点。
下载好redis后,在redis文件夹的同级目录新建一个redis-clusters 文件夹,将redis文件夹复制6份到该文件夹中,分别命名为redis01-redis06,代表6个不同的服务器,然后依次修改文件夹中的redis.conf配置文件。配置文件需要修改两个位置,一个是端口的设置,一个是开启集群创建模式的设置。进入redis.conf,然后底下输入/port回车,就会定位到port的位置,这时就可以修改port的端口,六个文件一次修改为7001-7006。如图:
回车键就可以定位到相应的位置,因为配置文件内容很多,一个个找回很麻烦,因此可以直接以这种方式进行查询。同理集群设置搜索cluster-enabled 回车就可以找到相应的位置,一般redis默认是将这里注释掉的,取消注释,将其值设置为yes即可,然后退出保存即可。
一次修改六个文件下的redis.conf 文件的端口和集群设置后,六个redis服务器就差不多设置完成了。
接下来可以新建一个.sh文件,如start-all.sh文件,这个文件的作用就是让启动这六个redis服务器。这个.sh文件内容可以为:
cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..
但是这样的.sh文件还是无法执行,需要赋予该文件可执行的权限。方法:以管理员权限执行chmod +x start-all.sh,这样就可以执行该文件了,然后执行该文件,这样就可以启动这六个redis服务器。
如图:
接下来就需要进行安装ruby进行集群的管理了。
(2)安装ruby
下载了redis后,redis文件夹下的src中有一个文件叫做redis-trib.rb,
这个使用ruby脚本来下的,用来搭建redis集群用的,因此搭建redis集群的话就需要执行这个文件,因此就需要ruby环境。
安装方法:yum install ruby
这样就可以进行在线安装,安装完成后,还需要暗黄ruby的相关的包。
(3)安装rubygems
rubygems是一个ruby程序包管理器,具体的作用什么的可以自行百度。
安装方法:在线安装,yum install rubygems
还可以直接在官网上下载(我的做法),我下载的是4.1.0版本的。然后将其解压到和redis一个目录下吧,这样方便后面的操作。解压后安装:gem install redis-4.1.0.gem,但是我当时在处理这个的时候出现了问题,就是openssl安装的问题。(openssl具体作用可以自行百度)
我安装的cenos系统原本是不带openssl的,使用命令openssl version显示没有openssl命令的,然后后面出现了问题就到处百度,也尝试了很多教程上面的方法,最终都是没有解决,最终找到了一个很简单的方法就可以实现openssl的安装并且建立与redis,ruby的连接。
直接在命令行中在线安装:1、 yum install openssl 2、 yum install openssl-devel
这样就可以安装成功openssl。
安装成功后需要让openssl与ruby建立连接:
进入安装好的ruby的ext/openssl目录下,输入命令: ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib
然后执行make && make install安装
这样环境就可以安装成功了,再执行 gem install redis-4.1.0.gem 这样ruby环境就全部搭建完成了。
可以三者一起直接安装:yum install -y ruby ruby-devel rubygems openssl
亲测有效,这样就不用自己去官网下载,而且这样还简单。
(4)启动集群
将redis/src/redis-trib.rb赋值到redis文件同级目录下,然后执行命令: ./redis-trib.rb create --replicas 1 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。这样,集群的环境就搭建完成。这一步是分配三个节点为主节点,三个节点为从节点。
(5) 测试
进入一个redis文件中(例如redis01),启动该服务器的客户端:./redis-cli -p 7001 -c,这样就可以进入该客户端。这里的-p当然就是端口的意思,-c是指的要连接集群,不加这个就会报errorMOVED 错误。然后设置一个key-value,进入其他端口的客户端,依然能够访问到该值,即实现了redis缓存的集群。
参考链接:https://blog.csdn.net/banqgg/article/details/79309636(推荐)