文档章节

搭建Redis集群

最王座
 最王座
发布于 2017/09/05 14:36
字数 1339
阅读 59
收藏 2

Redis集群
一、简况
    一台虚拟机,六个redis实例,三主三从,版本号:redis-3.2.9.tar.gz

二、安装流程

1.上传redis-3.2.9.tar.gz到虚拟机目录:/opt/software    

2.直接解压redis-3.2.9.tar.gz
    tar -zxvf redis-3.2.9.tar.gz
    
3.详细步骤
    3.1 进入到加压后的文件夹
        cd redis-3.2.9
    3.2 执行编译安装命令
        yum -y install gcc gcc-c++ [如果本来没有的话]
        make && make install
        
    3.3 进入到redis-3.2.9/src目录,看到如下文件
        adlist.c     cluster.h     geo.o            networking.o       redis-check-aof.c  sds.o           t_hash.o
        adlist.h     cluster.o     help.h           notify.c           redis-check-aof.o  sentinel.c      t_list.c
        adlist.o     config.c      hyperloglog.c    notify.o           redis-check-rdb    sentinel.o      t_list.o
        ae.c         config.h      hyperloglog.o    object.c           redis-check-rdb.c  server.c        t_set.c
        ae_epoll.c   config.o      intset.c         object.o           redis-check-rdb.o  server.h        t_set.o
        ae_evport.c  crc16.c       intset.h         pqsort.c           redis-cli          server.o        t_string.c
        ae.h         crc16.o       intset.o         pqsort.h           redis-cli.c        setproctitle.c  t_string.o
        ae_kqueue.c  crc64.c       latency.c        pqsort.o           redis-cli.o        setproctitle.o  t_zset.c
        ae.o         crc64.h       latency.h        pubsub.c           redis-sentinel     sha1.c          t_zset.o
        ae_select.c  crc64.o       latency.o        pubsub.o           redis-server       sha1.h          util.c
        anet.c       db.c          lzf_c.c          quicklist.c        redis-trib.rb      sha1.o          util.h
        anet.h       db.o          lzf_c.o          quicklist.h        release.c          slowlog.c       util.o
        anet.o       debug.c       lzf_d.c          quicklist.o        release.h          slowlog.h       valgrind.sup
        aof.c        debugmacro.h  lzf_d.o          rand.c             release.o          slowlog.o       version.h
        aof.o        debug.o       lzf.h            rand.h             replication.c      solarisfixes.h  ziplist.c
        asciilogo.h  dict.c        lzfP.h           rand.o             replication.o      sort.c          ziplist.h
        bio.c        dict.h        Makefile         rdb.c              rio.c              sort.o          ziplist.o
        bio.h        dict.o        Makefile.dep     rdb.h              rio.h              sparkline.c     zipmap.c
        bio.o        endianconv.c  memtest.c        rdb.o              rio.o              sparkline.h     zipmap.h
        bitops.c     endianconv.h  memtest.o        redisassert.h      scripting.c        sparkline.o     zipmap.o
        bitops.o     endianconv.o  mkreleasehdr.sh  redis-benchmark    scripting.o        syncio.c        zmalloc.c
        blocked.c    fmacros.h     multi.c          redis-benchmark.c  sdsalloc.h         syncio.o        zmalloc.h
        blocked.o    geo.c         multi.o          redis-benchmark.o  sds.c              testhelp.h      zmalloc.o
        cluster.c    geo.h         networking.c     redis-check-aof    sds.h              t_hash.c
    
    3.4 我们需要将redis-trib.rb 复制到 /usr/local/bin目录下
        cp redis-trib.rb /usr/local/bin/
        
    3.5 创建redis_cluster目录,并且在目录下建立6个节点文件夹,7001-7006
        mkdir -p /usr/local/redis-3.2.9/redis_cluster
        cd /usr/local/redis-3.2.9/redis_cluster
        mkdir 7001
        mkdir 7002
        mkdir 7003
        mkdir 7004
        mkdir 7005
        mkdir 7006
        
    3.5 将redis.conf文件拷贝至7001-7006文件夹下
        cp /opt/software/redis-3.2.9/redis.conf /usr/local/redis-3.2.9/redis_cluster/7001
        cp /opt/software/redis-3.2.9/redis.conf /usr/local/redis-3.2.9/redis_cluster/7002
        cp /opt/software/redis-3.2.9/redis.conf /usr/local/redis-3.2.9/redis_cluster/7003
        cp /opt/software/redis-3.2.9/redis.conf /usr/local/redis-3.2.9/redis_cluster/7004
        cp /opt/software/redis-3.2.9/redis.conf /usr/local/redis-3.2.9/redis_cluster/7005
        cp /opt/software/redis-3.2.9/redis.conf /usr/local/redis-3.2.9/redis_cluster/7006
        修改这六个配置文件,修改内容如下
            # bind 127.0.0.1
            port  7001    #依次为:7001, 7002, 7003, 7004, 7005, 7006
            daemonize    yes
            pidfile /var/run/redis_7001.pid    #依次为:redis_7001.pid, redis_7002.pid, redis_7003.pid, redis_7004.pid, redis_7005.pid, redis_7006.pid
            cluster-enabled yes
            cluster-config-file nodes-7001.conf    #依次为:nodes-7001.conf, nodes-7002.conf, nodes-7003.conf, nodes-7004.conf, nodes-7005.conf, nodes-7006.conf
            cluster-node-timeout 15000
            appendonly yes
            protected-mode no    #特别注意
    
    3.6 启动这六个节点
        进入cd /opt/software/redis-3.2.9/src,执行如下命令
            ./redis-server /usr/local/redis-3.2.9/redis_cluster/7001/redis.conf
            ./redis-server /usr/local/redis-3.2.9/redis_cluster/7002/redis.conf
            ./redis-server /usr/local/redis-3.2.9/redis_cluster/7003/redis.conf
            ./redis-server /usr/local/redis-3.2.9/redis_cluster/7004/redis.conf
            ./redis-server /usr/local/redis-3.2.9/redis_cluster/7005/redis.conf
            ./redis-server /usr/local/redis-3.2.9/redis_cluster/7006/redis.conf
    
    3.7 查看六个节点启动情况
        [root@redis-cluster src]# ps -ef | grep redis
        root       4703      1  0 18:44 ?        00:00:00 ./redis-server 127.0.0.1:7001 [cluster]                            
        root       4709      1  0 18:44 ?        00:00:00 ./redis-server 127.0.0.1:7002 [cluster]                            
        root       4713      1  0 18:44 ?        00:00:00 ./redis-server 127.0.0.1:7003 [cluster]                            
        root       4717      1  0 18:44 ?        00:00:00 ./redis-server 127.0.0.1:7004 [cluster]                            
        root       4721      1  0 18:44 ?        00:00:00 ./redis-server 127.0.0.1:7005 [cluster]                            
        root       4725      1  0 18:45 ?        00:00:00 ./redis-server 127.0.0.1:7006 [cluster]                            
        root       4729   1441  0 18:45 pts/0    00:00:00 grep redis
        
    3.8 redis官方提供了redis-trib.rb工具来创建集群,此工具是用ruby编写,所以需要先安装ruby
        yum install ruby
        yum install rubygems
        上传redis-3.0.0.gem到/opt/software
        gem install redis-3.0.0.gem
    
    3.9 执行redis-trib.rb,创建集群
        进入cd /opt/software/redis-3.2.9/src,执行如下命令
            ./redis-trib.rb create --replicas 1 192.168.1.76:7001 192.168.1.76:7002 192.168.1.76:7003 192.168.1.76:7004 192.168.1.76:7005  192.168.1.76:7006
        运行结果:
            >>> Creating cluster
            >>> Performing hash slots allocation on 6 nodes...
            Using 3 masters:
            192.168.1.76:7001
            192.168.1.76:7002
            192.168.1.76:7003
            Adding replica 192.168.1.76:7004 to 192.168.1.76:7001
            Adding replica 192.168.1.76:7005 to 192.168.1.76:7002
            Adding replica 192.168.1.76:7006 to 192.168.1.76:7003
            M: 49f9efa388837e6484f1ac9b2db5689b35df838d 192.168.1.76:7001
               slots:0-5460 (5461 slots) master
            M: 1a06750acd98c010f4afbddadb2a26628cf808c5 192.168.1.76:7002
               slots:5461-10922 (5462 slots) master
            M: 42a3d216c3f1e20bd038989301fdc8dfdbec392a 192.168.1.76:7003
               slots:10923-16383 (5461 slots) master
            S: 21dc028a6cd8b6ecbed677cbb3b66920eb7e37a7 192.168.1.76:7004
               replicates 49f9efa388837e6484f1ac9b2db5689b35df838d
            S: 6c6e563a121cfe3311e361cb0746d0fd438653b2 192.168.1.76:7005
               replicates 1a06750acd98c010f4afbddadb2a26628cf808c5
            S: 59820ac12500e6937e1c1ca222f70ec5964a96bf 192.168.1.76:7006
               replicates 42a3d216c3f1e20bd038989301fdc8dfdbec392a
            Can I set the above configuration? (type 'yes' to accept): yes
            >>> Nodes configuration updated
            >>> Assign a different config epoch to each node
            >>> Sending CLUSTER MEET messages to join the cluster
            Waiting for the cluster to join....
            >>> Performing Cluster Check (using node 192.168.1.76:7001)
            M: 49f9efa388837e6484f1ac9b2db5689b35df838d 192.168.1.76:7001
               slots:0-5460 (5461 slots) master
               1 additional replica(s)
            M: 1a06750acd98c010f4afbddadb2a26628cf808c5 192.168.1.76:7002
               slots:5461-10922 (5462 slots) master
               1 additional replica(s)
            M: 42a3d216c3f1e20bd038989301fdc8dfdbec392a 192.168.1.76:7003
               slots:10923-16383 (5461 slots) master
               1 additional replica(s)
            S: 21dc028a6cd8b6ecbed677cbb3b66920eb7e37a7 192.168.1.76:7004
               slots: (0 slots) slave
               replicates 49f9efa388837e6484f1ac9b2db5689b35df838d
            S: 6c6e563a121cfe3311e361cb0746d0fd438653b2 192.168.1.76:7005
               slots: (0 slots) slave
               replicates 1a06750acd98c010f4afbddadb2a26628cf808c5
            S: 59820ac12500e6937e1c1ca222f70ec5964a96bf 192.168.1.76:7006
               slots: (0 slots) slave
               replicates 42a3d216c3f1e20bd038989301fdc8dfdbec392a
            [OK] All nodes agree about slots configuration.
            >>> Check for open slots...
            >>> Check slots coverage...
            [OK] All 16384 slots covered.

4.查询集群节点信息和状态信息
    4.1 连接集群的某一个节点
        [root@redis-cluster src]# ./redis-cli -h 192.168.1.76 -p 7001 -c
        说明:
            -h表示ip地址
            -p表示端口号
            -c表示以集群方式连接redis
        
    4.2 查看集群的节点信息
        192.168.1.76:7001> cluster nodes
        1a06750acd98c010f4afbddadb2a26628cf808c5 192.168.1.76:7002 master - 0 1504621801582 2 connected 5461-10922
        42a3d216c3f1e20bd038989301fdc8dfdbec392a 192.168.1.76:7003 master - 0 1504621800577 3 connected 10923-16383
        21dc028a6cd8b6ecbed677cbb3b66920eb7e37a7 192.168.1.76:7004 slave 49f9efa388837e6484f1ac9b2db5689b35df838d 0 1504621798569 4 connected
        6c6e563a121cfe3311e361cb0746d0fd438653b2 192.168.1.76:7005 slave 1a06750acd98c010f4afbddadb2a26628cf808c5 0 1504621799573 5 connected
        59820ac12500e6937e1c1ca222f70ec5964a96bf 192.168.1.76:7006 slave 42a3d216c3f1e20bd038989301fdc8dfdbec392a 0 1504621794548 6 connected
        49f9efa388837e6484f1ac9b2db5689b35df838d 192.168.1.76:7001 myself,master - 0 0 1 connected 0-5460
    
    4.3 查看集群状态信息
        192.168.1.76:7001> 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:22424
        cluster_stats_messages_received:22424
        192.168.1.76:7001> 


    4.4 检查集群是否ok
        [root@redis-cluster src]# ./redis-trib.rb check 192.168.1.76:7001
        >>> Performing Cluster Check (using node 192.168.1.76:7001)
        M: 49f9efa388837e6484f1ac9b2db5689b35df838d 192.168.1.76:7001
           slots:0-5460 (5461 slots) master
           1 additional replica(s)
        M: 1a06750acd98c010f4afbddadb2a26628cf808c5 192.168.1.76:7002
           slots:5461-10922 (5462 slots) master
           1 additional replica(s)
        S: 21dc028a6cd8b6ecbed677cbb3b66920eb7e37a7 192.168.1.76:7004
           slots: (0 slots) slave
           replicates 49f9efa388837e6484f1ac9b2db5689b35df838d
        M: 42a3d216c3f1e20bd038989301fdc8dfdbec392a 192.168.1.76:7003
           slots:10923-16383 (5461 slots) master
           1 additional replica(s)
        S: 6c6e563a121cfe3311e361cb0746d0fd438653b2 192.168.1.76:7005
           slots: (0 slots) slave
           replicates 1a06750acd98c010f4afbddadb2a26628cf808c5
        S: 59820ac12500e6937e1c1ca222f70ec5964a96bf 192.168.1.76:7006
           slots: (0 slots) slave
           replicates 42a3d216c3f1e20bd038989301fdc8dfdbec392a
        [OK] All nodes agree about slots configuration.
        >>> Check for open slots...
        >>> Check slots coverage...
        [OK] All 16384 slots covered.    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
        

    

© 著作权归作者所有

最王座
粉丝 2
博文 48
码字总数 28698
作品 0
杭州
程序员
私信 提问
Redis Cluster集群快速搭建

想在3分钟以内搭建一个Redis Cluster集群吗?说3分钟可能有点久,实际上好像不到一分钟就完成了Redis Cluster集群的搭建。 介绍 redis cluster是官方提供的一种集群方案,Redis-Cluster采用无...

艾贺521
2018/08/13
0
0
Redis Cluster集群部署搭建

在Oracle的路上走了许多年,换换感觉,尝试一下新的知识,也是一个不错的感觉。Redis,一个超轻量化的内存数据库,只做一小块数据库功能实现,却非常优秀的一个产品。今天,就分享一下安装R...

hsbxxl
2017/09/03
0
0
Redis Cluster(集群)的搭建

Redis Cluster(集群)的搭建 一、Redis的下载、安装、启动(单实例) 我们统一将Redis安装在/opt目录下,执行命令如下: 安装完成,下面我们启动Redis服务: Redis启动成功,将采用Redis的默...

Java同学会
2018/06/05
0
0
玩转Redis集群(上)

这是redis集群介绍的上篇,主要是关于Redis集群的搭建。后续将为大家介绍Redis集群的常用命令、Java操作Redis集群、以及与Spring/Spring MVC的整合等知识。 Redis集群搭建 要想搭建一个最简单...

zfz_linux_boy
2017/03/01
0
0
基于Docker的Redis高可用集群搭建(redis-sentinel)

前言   之前介绍了用docker来搭建redis主从环境,但这只是对数据添加了从库备份(主从复制),当主库down掉的时候,从库是不会自动升级为主库的,也就是说,该redis主从集群并非是高可用的。...

mario阿东
2018/07/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
15
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
15
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部