redis3.0.3 installation and configuration

Seeing that the redis3 version has been released the latest 3.0.3 and tested its cluster function.

 

 


1. Installation:

    $ wget http://download.redis.io/releases/redis-3.0.3.tar.gz
    $ tar xzf redis-3.0.3.tar.gz
    $ cd redis-3.0.3 #support

    package no , there are so many problems, gcc is installed, tcl

    [root@t1 redis-3.0.3]# ./runtest
    You need tcl 8.5 or newer in order to run the Redis test

    [root@t1 redis-3.0.3]# yum install tcl
    has loaded plugins: fastestmirror, product-id, subscription-manager
    Updating certificate-based repositories.
    Unable to read consumer identity
    set installation process
    Loading mirror speeds from cached hostfile
    base                                    

    ......

    [root@t2 redis-3.0.3 ]# make
    cd src && make all
    make[1]: Entering directory `/opt/redis-3.0.3/src'
    rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-dump redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html
    (cd ../deps && make distclean)
    make[2]: Entering directory `/opt/redis-3.0.3/deps'
    (cd hiredis && make clean) > /dev/null || true
    (cd linenoise && make clean) > /dev/null || true
    (cd lua && make clean) > /dev/null || true
    (cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
    (rm -f .make-*)
    make[2]: Leaving directory `/opt/redis-3.0.3/deps'
    (rm -f .make-*)
    echo STD=-std=c99 -pedantic >> .make-settings
    echo WARN=-Wall -W >> .make-settings
    echo OPT=-O2 >> .make-settings
    echo MALLOC=jemalloc >> .make-settings
    echo CFLAGS= >> .make-settings
    echo LDFLAGS= >> .make-settings
    echo REDIS_CFLAGS= >> .make-settings
    echo REDIS_LDFLAGS= >> .make-settings
    echo PREV_FINAL_CFLAGS=-std=c99 -pedantic -Wall -W -O2 -g -ggdb   -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include >> .make-settings
    echo PREV_FINAL_LDFLAGS=  -g -ggdb -rdynamic >> .make-settings
    (cd ../deps && make hiredis linenoise lua jemalloc)
    make[2]: Entering directory `/opt/redis-3.0.3/deps'
    (cd hiredis && make clean) > /dev/null || true
    (cd linenoise && make clean) > /dev/null || true
    (cd lua && make clean) > /dev/null || true
    (cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
    (rm -f .make-*)
    (echo "" > .make-ldflags)
    (echo "" > .make-cflags)
    MAKE hiredis
    cd hiredis && make static
    make[3]: Entering directory `/opt/redis-3.0.3/deps/hiredis'
    gcc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  net.c
    make[3]: gcc:命令未找到
    make[3]: *** [net.o] 错误 127
    make[3]: Leaving directory `/opt/redis-3.0.3/deps/hiredis'
    make[2]: *** [hiredis] 错误 2
    make[2]: Leaving directory `/opt/redis-3.0.3/deps'
    make[1]: [persist-settings] 错误 2 (忽略)
            CC adlist.o
    /bin/sh: cc: command not found
    make[1]: *** [adlist.o] 错误 127
    make[1]: Leaving directory `/opt/redis-3.0.3/src'
    make: *** [all] 错误 2


        [root@t2 redis-3.0.3]# yum install gcc
        已加载插件:fastestmirror, product-id, subscription-manager
        Updating certificate-based repositories.
        Unable to read consumer identity
        设置安装进程
        Repository base is listed more than once in the configuration
        Repository updates is listed more than once in the configuration
        Repository extras is listed more than once in the configuration
        Repository centosplus is listed more than once in the configuration
        Repository contrib is listed more than once in the configuration
        Loading mirror speeds from cached hostfile
         * base: ftp.sjtu.edu.cn
         * extras: mirrors .163.com
         * updates: centos.ustc.edu.cn

    $ make

    error:
        [root@t1 redis-3.0.3]# make
        cd src && make all
        make[1]: Entering directory `/opt/redis-3.0. 3/src'
            CC adlist.o
        in file included from adlist.c:34:
        zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
        zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
        make[1]: *** [adlist.o] error 1
        make[1]: Leaving directory `/opt/redis-3.0.3 /src'
        make: *** [all] Error 2


        resolution:
            To force compiling against libc malloc, use:  
            
                % make MALLOC=libc  

        (error resolution URL: http://www.phperz.com/article/14/1219/ 42002.html)



2. Configure

    2.1, create 6 instances, 3 masters, and 3 slaves;


    1. 192.168.2.188:6379        
    2. 192.168.2.188:6380
    3. 192.168.2.132:6379        
    4. 192.168.2.132:6380
    5. 192.168.2.134:6379        
    6. 192.168.2.134:6380



    新建实例之前要改一下redis.conf的内容,先改端口号,再改下面的cluster配置项


    # Accept connections on the specified port, default is 6379.
    # If port 0 is specified Redis will not listen on a TCP socket.
    port 6379

    ################################ REDIS CLUSTER ###############################
    #
    # Normal Redis instances can't be part of a Redis Cluster;only nodes that are
    # started as cluster nodes can. In order to start a Redisinstance as a
    # cluster node enable the cluster support uncommenting thefollowing:
    #
    cluster-enabled yes
    # Every cluster node has a cluster configuration file. Thisfile is not
    # intended to be edited by hand. It is created and updated byRedis nodes.
    # Every Redis Cluster node requires a different clusterconfiguration file.
    # Make sure that instances running in the same system does nothave
    # overlapping cluster configuration file names.
    #
    cluster-config-file nodes-6379.conf
    # Cluster node timeout is the amount of seconds a node must beunreachable
    # for it to be considered in failure state.
    # Most other internal time limits are multiplicators of thenode timeout.
    #
    cluster-node-timeout 15
    # In order to setup your cluster make sure to read thedocumentation
    # available at http://redis.io web site.

    #Copy the configuration file and modify port: 6380, cluster-config-file nodes-6380.conf
    cp redis.conf redis2.conf


    start 6 instances:

    [root@t1 redis-3.0.3]# src/redis-server redis .conf &
    [root@t1 redis-3.0.3]# src/redis-server redis2.conf &

    [root@t1 redis-3.0.3]# ps -ef|grep redis
    root 3105 2024 0 14:36 ​​pts/0 00:00:02 src/redis-server *:6379 [cluster]
    root 3191 2024 0 15:04 pts/0 00:00:00 src/redis-server *:6380 [cluster]
    root 3197 2024 0 15:04 pts /0 00:00:00 grep redis


    [root@t2 redis-3.0.3]# src/redis-server redis.conf &
    [root@t2 redis-3.0.3]# src/redis-server redis2.conf &
    [ root@t2 redis-3.0.3]# ps -ef|grep redis
    root 26035 17602 0 15:05 pts/2 00:00:00 src/redis-server *:6379 [cluster]
    root 26043 17602 0 15:05 pts/2 00:00:00 src/redis-server *:6380 [ cluster]
    root 26057 17602 0 15:06 pts/2 00:00:00 grep redis


    [root@localhost redis-3.0.3]# src/redis-server redis.conf &
    [root@localhost redis-3.0.3]# src/redis-server redis2.conf &
    [root@localhost redis-3.0.3]# ps -ef|grep redis
    root 5689 1249 0 15:08 pts/0 00:00:00 src/redis-server *:6379 [ cluster]
    root 5692 1249 0 15:08 pts/0 00:00:00 src/redis-server *:6380 [cluster]
    root 5696 1249 0 15:08 pts/0 00:00:00 grep redis



    2.2 set up the cluster:
        2.2 .1 install ruby ​​and rubygems,
    [root@t1 redis-3.0.3]# yum install ruby
    ​​[root@t1 redis-3.0.3]# yum install rubygems
    [root@t1 redis-3.0.3]# gem install redis #Install ruby's redis interface support package

    2.2.2 Test whether the redis-server of other servers can be connected
    [root@t1 redis-3.0.3]# src/redis-cli -h 192.168.2.134 -p 6379
    Could not connect to Redis at 192.168.2.134:6379: No route to host
    not connected> exit
    
    2.2.3 Turn off firewalls in other servers
    [root@t2 redis-3.0.3]# chkconfig iptables off
    [root@t2 redis-3.0.3]# service iptables stop
    iptables: clear firewall rules : [ok]
    iptables: set chain to policy ACCEPT: filter [ok]
    iptables: unloading module: [ok]

    2.2.4 Clustering:

    [root@t1 redis-3.0.3]# src/redis-trib.rb create --replicas 1 192.168.2.188:6379 192.168.2.188:6380 192.168.2.132:6379 192.168.2.132:6380 192.168.2.134:6379 192.168.2.134:6380
    >>> Creating cluster
    Connecting to node 192.168.2.188:6379: OK
    Connecting to node 192.168.2.188:6380: OK
    Connecting to node 192.168.2.132:6379: OK
    Connecting to node 192.168.2.132:6380: OK
    Connecting to node 192.168.2.134:6379: OK
    Connecting to node 192.168.2.134:6380: OK
    >>> Performing hash slots allocation on 6 nodes...
    Using 3 masters:
    192.168.2.134:6379
    192.168.2.132:6379
    192.168.2.188:6379
    Adding replica 192.168.2.132:6380 to 192.168.2.134:6379
    Adding replica 192.168.2.134:6380 to 192.168.2.132:6379
    Adding replica 192.168.2.188:6380 to 192.168.2.188:6379
    M: 811daf9b3f895bf891c65cee5b8e70a9f8fd4c8a 192.168.2.188:6379
         slots:10923-16383 (5461 slots) master
    S: 902fd7e670ece8f4b993b930e1619d3e5ee89b0f 192.168.2.188:6380
         replicates 811daf9b3f895bf891c65cee5b8e70a9f8fd4c8a
    M: cc6c9301a0fc8e97ce7c00bb13529552323f6f60 192.168.2.132:6379
         slots:5461-10922 (5462 slots) master
    S: b55836ddfeb279b4cab60faec8ec53acf0da075e 192.168.2.132:6380
         replicates 9d296647ae6cac139a817d46ab3efef50290def8
    M: 9d296647ae6cac139a817d46ab3efef50290def8 192.168.2.134:6379
         slots:0-5460 (5461 slots) master
    S: 91cab39311b0bd69ccf5de9608778d271064e087 192.168.2.134:6380
         replicates cc6c9301a0fc8e97ce7c00bb13529552323f6f60
    Can I set the above configuration? (type 'yes' to accept): yes
    >>> Nodes configuration updated

    #查看 集群信息
    [root@t1 redis-3.0.3]# src/redis-cli -p 6379
    127.0.0.1:6379> cluster info
    cluster_state:ok
    cluster_slots_assigned:16384
    cluster_slots_ok:16384
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:6
    cluster_size:3
    cluster_current_epoch:6
    cluster_my_epoch:1
    cluster_stats_messages_sent:1305
    cluster_stats_messages_received:1305
    127.0.0.1:6379>

    
    127.0.0.1:6379> set hello tang
    OK
    127.0.0.1:6379> keys *
    1) "hello"
    127.0.0.1:6379> set user_id 1234
    OK
    127.0.0.1:6379> keys *
    1) "user_id"
    2) "hello"
    127.0.0.1:6379> get user_id
    "1234"

    127.0.0.1:6379>

 

 

 

 



    [root@t2 redis-3.0.3]# src/redis-cli -p 6380
    127.0.0.1:6380> keys *
    1) "user_id"
    2) "hello"
    127.0.0.1:6380> get user_id
    (error) MOVED 3139 192.168.2.134:6379
    127.0.0.1:6380> get hello
    (error) MOVED 866 192.168.2.134:6379
    127.0.0.1:6380> keys *
    1) "user_id"
    2) "hello"
    127.0.0.1:6380> exit

    #when After logging in with the parameter -c, the data in other nodes will be automatically obtained
    [root@t2 redis-3.0.3]# src/ redis-cli -c -p 6380
    127.0.0.1:6380> get user_id
    -> Redirected to slot [3139] located at 192.168.2.134:6379
    "1234"
    192.168.2.134:6379>get hello
    "tang"
    192.168.2.134:6379> keys *
    1) "user_id"
    2) "hello"
    192.168.2.134:6379> get year
    -> Redirected to slot [10071] located at 192.168.2.132:6379
    "2015"
    192.168.2.132:6379> get month
    "08"
    192.168.2.132:6379> get day
    -> Redirected to slot [4110] located at 192.168.2.134:6379
    (nil)
    192.168.2.134:6379>

Transfer: http://blog.csdn.net/miyatang/article/details/47257209

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326710592&siteId=291194637