欢迎光临
我们一直在努力

使用三台云服务器搭建真正的Redis集群

三台云服务器搭建redis集群#

今天花了一天的时间弄集群redis;遇到了很多坑,从头开始吧

环境讲解:

两台配置:1核2G,另一台:1核1G; 操作系统:Centos 7.6 Redis:3.2.12 Ruby:2.3.4 

由于是云服务器所以默认安装了JDK1.8和yum以及gcc,如果不是云服务器的用户请试试云服务器吧!还是很方便的

了解什么是Redis集群(可跳过):

答:集群,即Redis Cluster,是Redis 3.0开始引入的分布式存储方案。
集群由多个节点(Node)组成,Redis的数据分布在这些节点中。集群中的节点分为主节点和从节点:只有主节点负责读写请求和集群信息的维护;从节点只进行主节点数据和状态信息的复制。
集群的作用,可以归纳为两点:

  1. 数据分区:数据分区(或称数据分片)是集群最核心的功能。
    集群将数据分散到多个节点,一方面突破了Redis单机内存大小的限制,存储容量大大增加;另一方面每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力。
    Redis单机内存大小受限问题,在介绍持久化和主从复制时都有提及;例如,如果单机内存太大,bgsave和bgrewriteaof的fork操作可能导致主进程阻塞,主从环境下主机切换时可能导致从节点长时间无法提供服务,全量复制阶段主节点的复制缓冲区可能溢出……。

  2. 高可用:集群支持主从复制和主节点的自动故障转移(与哨兵类似);当任一节点发生故障时,集群仍然可以对外提供服务。


值得一提的是这几天的面试遇到一个很有意思的问题(本人亲身经历):

面试官:让你设计一个抢票或者秒杀或者红包系统你该如何实现?

我:首先应该加锁,然后加redis的缓存和预热。。。

面试官:没了?

我:我只知道这么多。

面试官:那如果是在多个集群下呢?

我:分布式锁!

面试官欣慰的点头说:那你知道分布式锁的实现方式吗?

我:zookeeper和redis的redisson。

面试官:redis的分布式集群玩过吗?

我:没有。。。

面试官:有空去玩玩吧,既然你没玩过那我也不必要和你啰嗦了。

到此我的奇怪的经历又上涨了!于是今天买了两个测试服务器来玩玩redis的集群;

这是我的使用场景,但是现实中和面试的例子差不多,都是有需求才去接触,(可能我比较懒~haha)
当然今天并不是说面试,我们言归正传;

搭建,启动redis集群#

1、安装Redis(三台服务器都需要安装)

方式一:

一台全新的服务器首先需要配置密码和SSH登录此处我跳过;
接着可以更新yum(服务器的yum都是安装好的)

yum update 

在云服务器中的安装则是很简单的;

yum install redis 

安装需要提示输入y直接输入!

接着安装完成后查看安装情况:

redis-server -v 

或者

redis-server --version 

都可以查看当前安装的redis版本

方式二:

直接从官网下载gz文件

redis旧版本下载地址

一般都是3.2.12版本。所以此处以3.2.12版本为例;

下载好后上传到云服务器,并且解压后,make Install 安装

redis安装好后,有五个文件在linux文件系统的/usr/bin中

  • redis-benchmark
  • redis-check-aof
  • redis-check-rdb
  • redis-cli
  • redis-sentinel
  • redis-server

还有一个配置文件在/etc中:

  • redis.conf

现在我们在/usr/local下创建一个文件名叫redis

cd /usr/local mkdir redis 

接着创建两个文件夹:

cd redis mkdir redis-01 mkdir redis-02 

接着将上述的文件分别复制到这两个01和02文件内,
这是为了方便我们更好的在本机调用:

2、安装Ruby(只需要一台安装即可)

很多小伙伴会有疑问说为什么需要ruby呢?

因为在redis/src中有一个文件叫做redis-trib.rb,这个文件就是作者用Ruby写的,用来搭建redis集群(redis3.0版本时才开始支持集群),redis-trib.rb的后缀就是Ruby的简写,所以想要搭建redis集群需要有一个能执行.rb这种文件的运行环境,这个环境就是Ruby。

接着又会有小伙伴说:这个安装简单!直接 yum install ruby!
你要是这么想的话,会浪费你将近5-10分钟的时间(取决你的网速)因为你需要安装后升级它!

升级的教程我直接用别人的了:[Ruby升级教程](https://www.cnblogs.com/qize/p/11394841.html](https://www.cnblogs.com/qize/p/11394841.html "Ruby升级教程") 在此也感谢这个博主所写的经验教程

一般云服务器如果安装的redis是3.2.12,那么你的ruby使用yum安装的话一定是2.0版本的!
这个和我们使用的ruby操作redis集群不适应!
所以人生苦短:

wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.gz 

接着解压下载好的ruby:

tar -xzvf ruby2.4.5 

接着cd ruby2.4.5执行下面的命令

./configure –-prefix=/usr/local/ruby -prefix 

是将ruby安装到指定目录,也可以自定义

make && make install 

检查Ruby安装情况:

ruby -v 

不出意外应该是可以显示版本的,之后安装这个gem的依赖

yum install rubygems 

接着我们需要继续安装Redis操作工具

gem install redis 

3、检查配置文件(三台服务器都需要)

上述说到我们有两个文件:redis-01和redis-02,应该是这样的
使用三台云服务器搭建真正的Redis集群

现在需要修改每一个配置文件:

daemonize yes port 6379(每台机器的端口可以指定为两个;比如6379和6380) dbfilename dump-此处添加你的端口.rdb pidfile /var/run/redis-此处添加你的端口.pid requirepass 在此输入你的密码 masterauth 输入和上述密码一样的 cluster-enabled yes 启用集群 cluster-config-file nodes-此处添加你的端口.conf cluster-node-timeout 15000(默认你过期时间15s) 

此处网上有很多提示说你的bind属性为什么不加呢?
很多小伙伴加了bind属性反而不能运行redis,刚开始我也犯了这样的错误,后来我发现,云服务器上的redis
其实不需要加bind属性绑定端口也可以跑集群。

现在我一共是三台机器:每台上面有两个redis实例,都分别绑定了6379和6380端口

至此我们的配置文件就结束了。

4、放行端口(三台服务器都需要)

根据不同云服务器供应商需要进入不同的控制台管理界面;

但是每台服务器的安全组都需要开放对应的端口:

我的三台服务器我就需要为每台服务器开启入口6379和6380端口;
但是千万不要以为这就结束了!

redis集群还需要一个总线端口,这个总线端口是你redis实例占用端口+10000;

比如我一台服务器开了两个redis实例:6379和6380,那么他的总线端口救为16379和16380;

需要在安全组同时开放这两个端口。

启动集群

回到我们刚刚安装redis的那台服务器,现在我们来试试启动redis集群

要启动redis;需要找到你的 redis-trib.rb 这个文件

一般云服务器的安装redis是没有这个文件的,但是如果你用解压安装的redis是有集群的文件

所以需要你自己从官网拷贝比如我的是3.2.12就需要从官网下载。

redis旧版本下载地址

具体安装见方式二

之后再redis/src下找到 redis-trib.rb 这个文件

把他复制到/usr/local/redis里面

接下来重中之重的是需要清空/var/lib/redis里面的所有rdb和conf文件!

之后就可以启动三个服务器上的redis了

启动完成可以用 ps -ef|grep redis 查看实例启动详情

一般启动成功是这个样子

使用三台云服务器搭建真正的Redis集群

之后回到安装了ruby的服务器:

cd /usr/local/redis 

执行下面命令

./redis-trib.rb create --replicas 1 第一台服务器公网IP地址:6379 第一台服务器公网IP地址:6380 第二台服务器公网IP地址:6379 第二台服务器公网IP地址:6380 第三台服务器公网IP地址:6379 第三台服务器公网IP地址:6380 

至此服务器应该是启动成功了。

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《使用三台云服务器搭建真正的Redis集群》
文章链接:https://www.456zj.com/3724.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址