• [redis]redis-cluster搭建


    1、概述:

      redis是一种工作在内存里no-sql的非关系型数据库,广泛应用于缓存需求,以减少大量的数据访问对数据库的压力,还很适合用来充当整个互联网架构中各级之间的cache 比如lvs的4层转发层 nginx的7层代理层

      虽然是工作在内存中,但官方也提供了数据可持续化方案,目前有三种:aof dbpoint

      aof 就像是mysql数据库的binlog日志,将每一次写操作以追加的形式记录在其中以文件的形式刷到磁盘里

      rdb 则是一种快照机制,redis工作在内存中 rdb就是每隔一段时间,对内存中的数据做一次快照,保存在rdb文件中

      point 在redis4.0的新特性中 采用了aof-rdb的混合方案来保障数据的持久性 但是官方的说法是还不成熟

    2、安装

     下载redis,我这里使用的是redis-3.0.7.tar.gz,将它放在/usr/local/src下

    [root@CentOS7 redis-3.0.7]# make PREFIX=/usr/local/redis install

     解压redis-3.0.7.tar.gz进入解压目录运行redis-server,但这种运行方式是以前台的方式运行,运行后就不可以再输入其它的命令,将/usr/local/src/redis-3.0.7/redis.conf里的daemonize yes改为daemonize no

     然后再以这种方式进行运行

    [root@CentOS7 bin]# ./redis-server ../../src/redis-3.0.7/redis.conf 

      安装rubdy

    [root@CentOS7 src]# yum install ruby rubygems -y

      安装ruby和redis的接口程序

    [root@CentOS7 src]# gem install redis

    遇到报错信息

    Fetching: redis-4.0.2.gem (100%)
    ERROR:  Error installing redis:
        redis requires Ruby version >= 2.2.2.

    那么利用rvm来安装高版本的ruby

    [root@CentOS7 src]# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
    [root@CentOS7 src]# curl -sSL https://get.rvm.io | bash -s stable
    [root@CentOS7 src]# source /usr/local/rvm/scripts/rvm
    [root@CentOS7 src]# rvm install 2.4.4

    使用新版本ruby生效并安装ruby和redis的接口

    [root@CentOS7 src]# rvm use 2.4.4
    Using /usr/local/rvm/gems/ruby-2.4.4
    [root@CentOS7 src]# rvm use 2.4.4 --default
    Using /usr/local/rvm/gems/ruby-2.4.4
    [root@CentOS7 src]# ruby -v
    ruby 2.4.4p296 (2018-03-28 revision 63013) [x86_64-linux]
    [root@CentOS7 src]# gem install redis
    Fetching: redis-4.0.2.gem (100%)
    Successfully installed redis-4.0.2
    Parsing documentation for redis-4.0.2
    Installing ri documentation for redis-4.0.2
    Done installing documentation for redis after 0 seconds
    1 gem installed

    在/usr/local下创建redis-cluster文件夹,并在其文件夹下创建7001~7006的目录

    并将源码里的redis-trib.rb拷贝到此目录下

    [root@CentOS7 redis-cluster]# cp /usr/local/src/redis-3.0.7/src/redis-trib.rb /usr/local/redis-cluster/redis-trib.rb

    将之前安装redis的bin目录下的文件和配置文件分别拷贝到7001~7006,并修改配置

    port 7001
    cluster-enabled yes

    分别修改完成之后 ,分别至7001~7006的文件内,分另启动redis-cluster

    [root@CentOS7 redis-cluster]# cd 7001
    [root@CentOS7 7001]# ./redis-server redis.conf

    这样就可以执行集群的创建命令了,至/usr/local/redis-cluster下

    [root@CentOS7 redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.133.159:7001 192.168.133.159:7002 192.168.133.159:7003 192.168.133.159:7004 192.168.133.159:7005 192.168.133.159:7006

    其中的“1”代表的一主有一个从的节点,而集群最少要有三个节点,这样一主一从,即6台服务器了

    有其它博主遇到过以下的错误信息

    [ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0

    解决方案为(本人没有遇到类似的错误,但感觉遇到的人不少,记录在这里一下)

    解决方法是删除生成的配置文件nodes.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aof、dump.rdb 
  • 相关阅读:
    Mongodb--基础(连接,增删改查,数据类型)
    [初识]使用百度AI接口,图灵机器人实现简单语音对话
    python--Websocket实现, 加密 sha1,base64
    Flask系列10-- Flask请求上下文源码分析
    python--partial偏函数
    Flask系列09--Flask中WTForms插件,及自定义验证器
    Flask系列08--Flask中flask_session, redis插件
    Flask系列07--Flask中的CBV, 蓝图的CBV
    Flask系列06--(中间件)Flask的特殊装饰器 before_request,after_request, errorhandler
    Flask系列05--Flask的配置config
  • 原文地址:https://www.cnblogs.com/baylorqu/p/9543463.html
Copyright © 2020-2023  润新知