Redis集群环境之linux搭建单机版

时间:2022-09-05 17:38:16

Redis解决的问题是:作为一个缓存nosql数据库,能够支持高并发,关系型数据库是存储在磁盘中,通过io读写,而redis是存储在内存中,因此,能够实现高可用,他主要是解决数据库性能瓶颈而产生的。

当单机版redis在访问量高的时候,可能出现承载的性能问题,于是对他进行扩容就产生了多机版,多机版有一个同步问题,为了解决该问题应用了集群,集群是有一个master和多个slave之间进行同步,Redis3.0之后的Redis cluster集群更便捷,为此本篇主要是讲Redis cluster-slaver集群。

现在开始搞集群

集群之前先用大白话简单说一下自己的理解

根据学习知识,总结为比较简单的大白话来说其集群就是将几台redis服务器连接在一起,他们之间彼此连接,当客户对任何一台服务器发起请求的时候 ,其效果都是一样的,有点工厂模式的意思,工厂模式是问工厂要东西就成,这个就是有点像是存储数据到工厂,给工厂以后,不用管为什么我请求的是存储到集群中a服务器的,但是当我再次从集群中b服务器读取刚在a上存储的数据竟然能读取到,这里面的原理在集群以后,应用端是不需要关注的,所以集群后的服务器可以看作是一个整体的更大的服务器,这个大整体中的任何节点服务器一致对外提供一样的服务,彼此之间信息共享,所以当这个集群中一些服务宕机后(只要不超过一半)仍然不受影响。

经过多次失败尝试,多次修改

首先说明,Redis集群需要依赖ruby环境,我的安装环境是linux centOS6.7,他直接采用 yum install ruby 安装的只是1.8.7版本的,版本过低,redis cluster集群需要的ruby版本要高于2.2.2故而,在安装匹配的ruby环境时候折腾了好久,而管理ruby版本采用rvm比较好,姑且可以认为ruby依赖rvm吧并不准确。

官网上说:To create a cluster, the first thing we need is to have a few empty Redis instances running in cluster mode.

要创建集群,首先需要创建几个空的redis实例运行,也就是几个节点的意思。

集群的大体思路就是:

1.先安装好一个redis

2.解压的redis目录下创建节点

3.拷贝相关配置文件到各个节点并修改端口号

4.安装集群环境

这里坑比较多大家一定要看好了,redis集群需要依赖ruby2.2.2以上版本,而ruby版本需要rvm来管理,同时ruby需要集成zlib和openssl库(并需要配置Makefile文件)

所以安装集成环境需要:

  • rvm
  • ruby2.2.2以上版本
  • zlib(并需要配置Makefile文件)
  • openssl(并需要配置Makefile文件)
  • redis-4.0.1.gem文件

5.进行集群

一、安装第一个redis

Redis的安装见之前的博客。安装的是4.0.9 make后在本目录下安装

Redis集群环境之linux搭建单机版

进入安装目录查看,如下有bin目录表示安装成功

Redis集群环境之linux搭建单机版

进入bin目录启动

Redis集群环境之linux搭建单机版

./redis-server 启动后如下成功

Redis集群环境之linux搭建单机版

启动成功后,不能再进行其他操作,此时可以拷贝redis.conf到刚才的user/local/redis/bin目录中,并修改其中的配置

Redis集群环境之linux搭建单机版

编辑daemonize设置为yes如下:(尤其是节点中如果没有设置就会出现问题,后面有介绍,主要是无法编辑容易导致刚刚启动的服务关闭)

Redis集群环境之linux搭建单机版

二、创建节点

按照官网来,

The following is a minimal Redis cluster configuration file:

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

就是说如果进行集群,在redis.conf中必须至少配置上如上的信息(这里建议加上daemonize=yes 主要是启动服务后服务在前台还是后台进行的区别,yes有助于操作)

Note that the minimal cluster that works as expected requires to contain at least three master nodes. For your first tests it is strongly suggested to start a six nodes cluster with three masters and three slaves.

To do so, enter a new directory, and create the following directories named after the port number of the instance we'll run inside any given directory.

官网强烈建议6个节点,3个主节点和3个从节点,并且节点的命令以端口号命名

mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005

Redis集群环境之linux搭建单机版

三、在新建的节点文件夹700~7005中新建配置redis.conf文件将官网要求的至少配置信息配置在里面,可以配置一个后拷贝修改端口号就成

cd 7000 ------>touch redis.conf----->vim redis.conf------>写入配置信息

Redis集群环境之linux搭建单机版

退出,然后拷贝到其他5个节点文件夹下,并修改配置文件中端口号与各节点名相同即可。

分别启动

Redis集群环境之linux搭建单机版

启动各个服务启动命令为

./+redis-4.0.9下src下的路径/server-redis 节点路径   (需要注意的是这些路径都是相对当前文件夹下的,一定要注意,否则启动不起来)

Redis集群环境之linux搭建单机版

启动方式二,写个启动脚本start-all.sh

Redis集群环境之linux搭建单机版

内容为:

Redis集群环境之linux搭建单机版

修改这个命令的权限

Redis集群环境之linux搭建单机版

此时启动发现一个问题,全部没有在后台启动,当我ctrl+c一次就会关闭一个服务,导致在我最后能够写查看命令

ps aux|grep redis的时候只有一个显示出来如图红框中,因为其他四个被关闭了,解决办法是,在7000~7005目录下的redis.conf中都添加daemonize yes 的参数设置,再次启动,就OK 了,如下图全部

Redis集群环境之linux搭建单机版

四、搭建集群

使用ruby脚本搭建集群,需要ruby的运行环境

运行命令yum install ruby

Redis集群环境之linux搭建单机版

查看状态

Redis集群环境之linux搭建单机版

安装gem组件  yum install rubygems

Redis集群环境之linux搭建单机版

检查安装情况

Redis集群环境之linux搭建单机版

执行集群命令

Redis集群环境之linux搭建单机版

出错了

Redis集群环境之linux搭建单机版

ruby版本太低,明天在搞吧

现在我们来换一种安装方法

在网上下载ruby高版本的源码网址是:下载ruby,我下载的是2.5.1

Redis集群环境之linux搭建单机版

然后将其拷贝到linux相应的文件夹下,既然是redis的依赖,我就放在local下面redis里面把

Redis集群环境之linux搭建单机版

解压 tar -xzvf ruby-2.5.1.tar.gz

cd ruby-2.5.1

之后配置并编译源代码执行命令

./configure

make

sudo make install

上述命令完成后

Redis集群环境之linux搭建单机版

Redis集群环境之linux搭建单机版

安装RVM管理ruby

如下gpg --keyserver hkp://.......................................的命令

Redis集群环境之linux搭建单机版

然后执行curl -sSL https://get.rvm.io | bash -sstable,执行后如下:

Redis集群环境之linux搭建单机版

开启一个新终端或者重启虚拟机查看rvm -v是否安装成功(可以免去source 命令去载入rvm环境的命令,因为会自动载入)

下面是重新打开终端:

Redis集群环境之linux搭建单机版

如下是重启后:

Redis集群环境之linux搭建单机版

同时发现ruby已经变成2.5.1版本了,没按装rvm之前我运行查看的时候是1.8.7版本的ruby。

接下来个进行gem install redis时有如下问题(可以参考参考解决1,参考参考解决2)代码也贴出来

  1. ERROR:  Loading command: install (LoadError)
  2. cannot load such file -- zlib
  3. ERROR:  While executing gem ... (NoMethodError)
  4. undefined method `invoke_with_build_args' for nil:NilClass

先解决错误一,解决办法分为两步:

一、安装zlib库,如果已经安装,跳过,直接进入第二步。本博主是下载的zlib解压安装的

Redis集群环境之linux搭建单机版

因为本centos是32位的所以采用的是如上的zlib-devel  rpm文件

 
  1. yum install zlib-devel

二、集成zlib库到ruby环境

cd /你对应的文件夹/ruby-2.4.2
cd ext/zlib
ruby extconf.rb
//在操作下一步之前需要修改Makefile文件中的zlib.o: $(top_srcdir)/include/ruby.h,将$(top_srcdir)修改为../..如下
//zlib.o: ../../include/ruby.h
//这一步如果不修改,make时会爆出另外一个错误
//make:*** No rule to make target `/include/ruby.h', needed by `zlib.o'.  Stop
make && make install

之后如果直接运行gem install redis会报错如下:

  1. ERROR:  While executing gem ... (Gem::Exception)
  2. Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources

提示缺少openssl库,这两个库可以通过yum安装,但是安装了需要集成到ruby中。

一、安装openssl库,如果已经安装可以跳过,直接进入第二步。

[java] view plain copy
 
 
  1. yum install openssl-devel

不要只用yum install openssl来安装,否则会缺少pcre等相关库,执行ruby extconf.rb会提示找不到ssl.h文件。

[java] view plain copy
 
 
  1. checking for t_open() in -lnsl... no
  2. checking for socket() in -lsocket... no
  3. checking for openssl/ssl.h... no

第二步、集成openssl库到ruby

cd /data/ruby-2.4.2
cd ext/openssl
ruby extconf.rb
//同样修改Makefile中的$(top_srcdir)为../..
make && make install

成功之后,再次运行gem install redis,本博主运行后的界面贴出来如下:

Redis集群环境之linux搭建单机版

集群

首先开启所有节点服务,./start.sh,然后

Redis集群环境之linux搭建单机版

注意选择yes

Redis集群环境之linux搭建单机版

注意地方,一个是需要绑定ip 另一个绑定的端口一个也不能写错。否则集群的时候就给你报sorry,连接不上XX节点

测试:

Redis集群环境之linux搭建单机版

至此Redis集群终于完成。

Redis集群环境之linux搭建单机版的更多相关文章

  1. Redis集群环境之linux搭建多机版---已完结,跟着一步一步来你就可以集群成功

    上一篇踩着各种坑写了Redis集群环境之linux搭建单机版,这一篇准备就多机版集群进行搭建,主要目的一来是在上一篇的基础上进行精华提粹总结,二来是把单机版与多机版的区别进行记录. 首先软硬件环境: ...

  2. 带你自行搭建虚拟机和Redis集群环境,值得收藏!

    前言: 我们看到分析 Redis 使用或原理的文章不少,但是完整搭建一套独立的 redis 集群环境的介绍,并不是很多或者说还不够详细. 那么,本文会手把手带着大家搭建一套 Redis 集群环境,Re ...

  3. redis集群环境的搭建和错误分析

    redis集群环境的搭建和错误分析 redis集群时,出现的几个异常问题 09 redis集群的搭建 以及遇到的问题

  4. Redis集群环境搭建实践

    0 Redis集群简介 Redis集群(Redis Cluster)是Redis提供的分布式数据库方案,通过分片(sharding)来进行数据共享,并提供复制和故障转移功能.相比于主从复制.哨兵模式, ...

  5. centos7 快速搭建redis集群环境

    本文主要是记录一下快速搭建redis集群环境的方式. 环境简介:centos 7  + redis-3.2.4 本次用两个服务6个节点来搭建:192.168.116.120  和  192.168.1 ...

  6. Redis 集群环境的搭建

    下载与解压 [root@localhost ~]# cd /usr/temp/ [root@localhost temp]# wget http://download.redis.io/release ...

  7. SpringBoot系列教程之Redis集群环境配置

    之前介绍的几篇redis的博文都是基于单机的redis基础上进行演示说明的,然而在实际的生产环境中,使用redis集群的可能性应该是大于单机版的redis的,那么集群的redis如何操作呢?它的配置和 ...

  8. Redis集群的原理和搭建(转载)

    转载来源:https://www.jianshu.com/p/c869feb5581d Redis集群的原理和搭建 前言 Redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得 ...

  9. redis集群环境配置

    为什么需要集群 redis是一个开源的 key->value 高速存储系统,但是由于redis单线程运行,在系统中,只能利用单核的性能 当redis的调用越来越频繁时,可能会出现redis过于繁 ...

随机推荐

  1. *按类的某一字段排序(Lv)

    给定一个student类,类中有两个属性ID,Score.对一组student类对象排序,写出方法.

  2. Java Web开发Tomcat中三种部署项目的方法

    第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/hello" docBase ...

  3. LeetCode 176 Second Highest Salary mysql&comma;select 嵌套 难度&colon;1

    https://leetcode.com/problems/second-highest-salary/ Write a SQL query to get the second highest sal ...

  4. 我的第一个jquery插件:下拉多选框

    <!DOCTYPE HTML> <html> <head> <title> New Document </title> <meta n ...

  5. 打死也不换系统?笑谈过气的Windows XP

    http://tech.qq.com/a/20131012/007336.htm 按照IT领域的“安迪-比尔定律”:软件和游戏不断生成过户需求,硬件则通过技术创新来消化这些需求,这个过程会刺激用户在电 ...

  6. 【CF521C】【排列组合】Pluses everywhere

    Vasya is sitting on an extremely boring math class. To have fun, he took a piece of paper and wrote ...

  7. Android写入文件操作权限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses- ...

  8. ubuntu下使用自带的openJDK查看java源码

    如题 Ubuntu自带的OpenJDK仅仅有jre环境,不提供源代码,所以我们还是须要去下载. JDK6:http://download.java.net/openjdk/jdk6/ JDK7:htt ...

  9. Java高级工程师——面试总结

    面试技巧 1.背熟你的简历 原因:面试的第一个问题,一般都是让你简单介绍下你自己,或者介绍一下你最近的项目,而一个面试者,如果连自己的简历都无法熟知,对里面提到的项目.技术都无法描述清楚的话,我想没有 ...

  10. 如何上传本地项目到gitHub解决方案

    最近有人有人问到我怎么将新创建的本地代码上传到github上,这里简单的记录一下,我喜欢使用命令行,这里全用命令行来实现,不了解Git命令的可以去了解下. 1.  建立本地仓库,cd到你想要上传文件的 ...