zoukankan      html  css  js  c++  java
  • redis集群安装

    安装方法摘自 http://www.redis.cn/topics/cluster-tutorial.html

    这个方法为简单版的方法,在原文的基础上,我加了一点参数,其他参数配置可以请教其他大神

    搭建并使用Redis集群

    搭建集群的第一件事情我们需要一些运行在 集群模式的Redis实例. 这意味这集群并不是由一些普通的Redis实例组成的,集群模式需要通过配置启用,开启集群模式后的Redis实例便可以使用集群特有的命令和特性了.

    下面是一个最少选项的集群的配置文件:

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

    PS:bind可不写,默认127.0.0.1

    文件中的 cluster-enabled 选项用于开实例的集群模式, 而 cluster-conf-file 选项则设定了保存节点配置文件的路径, 默认值为 nodes.conf.节点配置文件无须人为修改, 它由 Redis 集群在启动时创建, 并在有需要时自动进行更新。

    demonize为线程守护,设为yes

    要让集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。

    首先, 让我们进入一个新目录, 并创建六个以端口号为名字的子目录, 稍后我们在将每个目录中运行一个 Redis 实例: 命令如下:

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

    在文件夹 7000 至 7005 中, 各创建一个 redis.conf 文件, 文件的内容可以使用上面的示例配置文件, 但记得将配置中的端口号从 7000 改为与文件夹名字相同的号码。

    从 Redis Github 页面 的 unstable 分支中取出最新的 Redis 源码, 编译出可执行文件 redis-server , 并将文件复制到 cluster-test 文件夹, 然后使用类似以下命令, 在每个标签页中打开一个实例:

    cd 7000
    ../redis-server ./redis.conf
    

    PS:执行redis-server的命令时,必须进入对应的cluster文件夹里面执行

    实例打印的日志显示, 因为 nodes.conf 文件不存在, 所以每个节点都为它自身指定了一个新的 ID :

    [82462] 26 Nov 11:56:55.329 * No cluster configuration found, I'm 97a3a64667477371c4479320d683e4c8db5858b1
    

    实例会一直使用同一个 ID , 从而在集群中保持一个独一无二(unique)的名字。

    搭建集群

    现在我们已经有了六个正在运行中的 Redis 实例, 接下来我们需要使用这些实例来创建集群, 并为每个节点编写配置文件。

    通过使用 Redis 集群命令行工具 redis-trib , 编写节点配置文件的工作可以非常容易地完成: redis-trib 位于 Redis 源码的 src 文件夹中, 它是一个 Ruby 程序, 这个程序通过向实例发送特殊命令来完成创建新集群, 检查集群, 或者对集群进行重新分片(reshared)等工作。

    ./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

    (如果redis.conf里的bind不为空,则此处为ip:port)
    这一步可能出现

    /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- redis (LoadError)

    from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'

    类似的错误,这是因为没有安装ruby(https://www.cnblogs.com/ytfcz/p/5275633.html)

    yum install gem 
    gem install redis 
    wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.gz
    tar xf ruby-2.2.7.tar.gz
    cd ruby-2.2.7
    ./configure --prefix=/usr/local/ruby-2.2.7
    make && make install

    #yum install rubygems这个命令没试过不知道行不行
    ln -s /usr/local/ruby-2.2.7/bin/ruby /usr/bin/ruby
    ruby -v
    ruby 2.2.7p470 (2017-03-28 revision 58194) [x86_64-linux]

    这个命令在这里用于创建一个新的集群, 选项–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。

    之后跟着的其他参数则是这个集群实例的地址列表,3个master3个slave redis-trib 会打印出一份预想中的配置给你看, 如果你觉得没问题的话, 就可以输入 yes , redis-trib 就会将这份配置应用到集群当中,让各个节点开始互相通讯,最后可以得到如下信息:

    [OK] All 16384 slots covered

    连接集群:
    redis-cli -c -p 7000
    -c为必须选择,否则可能操作时出现 (error) MOVED

  • 相关阅读:
    最近工作状态异常的原因追寻。
    当“逻辑”与“UE”冲突时
    面对一个“丢失了与用户“签订”的协议的修改”时进行的思考。
    如果公司的需求总是让研发部门有怨言…
    安装sybase12.0,运行时报错异常。
    你看到这份文档,我就想摔鼠标!
    对于研发组长的责任产生了疑惑。
    关于html中空格导致的排版问题
    如何配置你的工作环境。
    今天的笔记:2014年6月3日
  • 原文地址:https://www.cnblogs.com/jaxlove-it/p/8337528.html
Copyright © 2011-2022 走看看