您的位置:首页 > 数据库 > Redis

redis集群搭建详解

2017-12-03 18:47 731 查看

Redis集群简介

Redis是企业和个人很常用的缓存工具,面对大的并发,提高系统的健壮性,单个Redis实例是远远不够的。所以搭建Redis集群是很有必要的。

Redis 集群是一个在多个Redis节点间共享数据的集合。

Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令.

Redis 集群的优势:

自动分割数据到不同的节点上。

Redis 集群的数据分片,Redis 集群没有使用一致性hash, 而是引入了 哈希槽的概念.Redis 集群有16384个哈希槽,Redis-cluster将16384个哈希槽,根据策略分给所有的主节点。每个key通过CRC16校验后对16384取模来决定放置哪个槽,

本次测试的集群实例:

节点M:7000 包含[0,5460)

节点M:7001 包含[5460,10922]

节点M:7002 包含[10922,16383)

每个主节点都有N个从节点,如果主节点超过一段时间不可用,节点内部根据投票机制,如果确定该主节点不可到达,则failover,提升某个从节点,为主节点。如果该主节点和其所对应的从节点都被failover,该redis集群变得不可用。集群支持在运行中动态的增加和删除节点。Redis集群如果采用异步复制的话,虽然提高了其性能,但是会在某些情况下丢失数据。

Redis集群搭建

本次搭建采用的是centOs7,本人强烈建议在不要使用ubuntu搭建redis-cluster,因为搭建redis-cluster需要安装ruby,rubygems,rvm。我开始在ubuntu14下搭建环境碰到拿到了很多问题,由于ubuntu并不支持yum命令(即使你安装了yum,在ubuntu下也无法解决一大堆的依赖问题)。最后转战centOs发现yum命令真是太强大了,言归正传。

1,官网下载redis-3.2.11.tar.gz,至少要在3.x以上,附上官网下载链接

https://redis.io/download

以下操作都视为root用户

tar xzf redis-3.2.11.tar.gz
cd redis-3.2.11
make
make install PREFIX=/srv/software/redisCluster


进入redisClustermv bin 7000 #该修改bin文件为7000

cd 7000

touch redis.confi 命令将如下内容写入port 7000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yesedisCluster目录



将7000拷贝5份到,名字为7001-7005,当前目录下,分别进入各目录,修改redis.conf文件

vi redis.conf文件,i为插入,将端口和当前父目录相同,



改完后按ESc,再输入:wq保存退出。vi命令不熟的自行百度。

拷贝redis-3.2.11目录下src的目下的redis-trib.rb文件到redisCluster目录下。该脚本是用ruby编写的。




接下来需要安装ruby。

yum install ruby
yum install rubygems


切记检查自己的网络是否开启,我采用是的虚拟机的NAT模式,



也可用ifconfig检查是否网络开启了。

安装好ruby后,

gem install redis

此处需注意,我的yum默认帮我下载时ruby-2.0xx版本,然后提示我ruby至少需要2.2.2版本。

于是乎安装rvm,这是一个ruby的版本管理器。

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


这里建议大家翻墙安装,国内下载实在是慢。(翻墙软件推荐蓝灯)



一段时间后提示没有公钥啥的,



拷贝如上图中的 gpg2 – recv-keys 409B6B1…….执行,执行完,提示已导入,

再重新

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


等下载完成



出现complete就说明安装成功了。

rvm install ruby-2.2.4


安装好后,查看当前ruby版本。

rvm current


确保当前系统指定的ruby版本是2.2.4

然后继续安装gem install redis

它会提示默认的源不可用,这选用一个淘宝的源,要移除原先的源。

gem sources --remove https://rubygems.org/ gem sources --add https://gems.ruby-china.org/ $ gem sources -l https://gems.ruby-china.org[/code] 
确保只有 gems.ruby-china.org

然后继续安装

gem install redis




准备工作做好之后就开始启动redis集群了。

进入redisCluster目录写一个shell脚本启动redis集群。

touch start.sh

cd 7000
./redis-server redis.conf
cd ..
cd 7001
./r
4000
edis-server redis.conf
cd ..
cd 7002
./redis-server redis.conf
cd ..
cd 7003
./redis-server redis.conf
cd ..
cd 7004
./redis-server redis.conf
cd ..
cd 7005
./redis-server redis.conf
cd ..


运行脚本

chmod 777 start-all.sh #赋权

./start.sh

使用redis-trib.rb创建集群

./redis-trib.rb create --replicas 1 127.0.0.1:7000 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


出现如下图所示,即为成功



然后可以启动某个客户端进行测试





深入了解集群部署策略,和使用客户连接集群,看官方文档。

https://redis.io/topics/introduction
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis 集群 缓存 并发