美文网首页Amazing ArchAmazing Redisjava 设计
Redis入门到高可用-8.Redis Cluster

Redis入门到高可用-8.Redis Cluster

作者: 笨鸡 | 来源:发表于2019-09-14 11:16 被阅读0次

    1.概要

    • 呼唤集群
    • 数据分布
    • 搭建集群
    • 集群伸缩
    • 客户端路由
    • 集群原理
    • 开发运维常见问题

    2.呼唤集群

    呼唤集群1.png
    呼唤集群2.png
    呼唤集群3.png
    呼唤集群4.png
    呼唤集群5.png

    3.数据分布

    数据分区1.png
    数据分区2.png
    数据分区3.png
    数据分区4.png

    4.节点取余

    节点取余1.png
    节点取余2.png
    节点取余3.png
    节点取余4.png
    节点取余5.png

    5.一致性哈希

    一致性哈希1.png
    一致性哈希2.png
    一致性哈希3.png
    一致性哈希4.png
    一致性哈希5.png

    6.虚拟槽分区

    虚拟槽分区1.png
    虚拟槽分区2.png

    7.基本架构

    Redis架构1.png
    Redis架构2.png
    Redis架构3.png
    Redis架构4.png
    Redis架构5.png
    Redis架构6.png
    Redis架构7.png
    Redis架构8.png
    Redis架构9.png

    8.安装

    Redis Cluster安装1.png
    Redis Cluster安装2.png
    Redis Cluster安装3.png
    Redis Cluster安装4.png
    Redis Cluster安装5.png
    Redis Cluster安装6.png
    Redis Cluster安装7.png
    Redis Cluster安装8.png
    • 配置Redis.conf
      port 7000
      daemonize yes
      pidfile /var/run/redis-7000.pid
      dbfilename "dump-7000.rdb"
      logfile "7000.log"
      dir "/opt/soft/redis/redis/data/"
      cluster-enabled yes
      cluster-config-file nodes-7000.conf
      cluster-require-full-coverage no
      
    • 搭建集群-meet
      [root@master redis-cluster-config]# redis-cli -p 7000 cluster meet 127.0.0.1 7001
      OK
      [root@master redis-cluster-config]# redis-cli -p 7000 cluster meet 127.0.0.1 7002
      OK
      [root@master redis-cluster-config]# redis-cli -p 7000 cluster meet 127.0.0.1 7003
      OK
      [root@master redis-cluster-config]# redis-cli -p 7000 cluster meet 127.0.0.1 7004
      OK
      [root@master redis-cluster-config]# redis-cli -p 7000 cluster meet 127.0.0.1 7005
      OK
      [root@master redis-cluster-config]# redis-cli -p 7000 cluster nodes
      c09e9379e37ee282219a07399bfb0dcbb933159a 127.0.0.1:7001@17001 master - 0 1567952635000 1 connected
      df740a3f64985bb4645c1f9fff276d29ad1bcb25 127.0.0.1:7000@17000 myself,master - 0 1567952636000 0 connected
      2e6827954a8dd1b7a1455e9aec057cb89fd56fa4 127.0.0.1:7003@17003 master - 0 1567952636853 3 connected
      0fee682eb0247d98bcffe694fe745af194f708dd 127.0.0.1:7005@17005 master - 0 1567952636000 5 connected
      97969f534d03b6c7c346df035e35b676c79e2d51 127.0.0.1:7004@17004 master - 0 1567952637000 4 connected
      80602baaf52498f27be91a8b9169dc78de6e6e07 127.0.0.1:7002@17002 master - 0 1567952637855 2 connected
      [root@master redis-cluster-config]# redis-cli -p 7000 cluster info
      cluster_state:fail
      cluster_slots_assigned:0
      cluster_slots_ok:0
      cluster_slots_pfail:0
      cluster_slots_fail:0
      cluster_known_nodes:6
      cluster_size:0
      cluster_current_epoch:5
      cluster_my_epoch:0
      cluster_stats_messages_ping_sent:208
      cluster_stats_messages_pong_sent:68
      cluster_stats_messages_meet_sent:6
      cluster_stats_messages_sent:282
      cluster_stats_messages_ping_received:68
      cluster_stats_messages_pong_received:64
      cluster_stats_messages_received:132
      
    • 分配槽

      vim addslots.sh

      start=$1
      end=$2
      port=$3
      for slot in `seq ${start} ${end}`
      do
          echo "port:${port},slot:${slot}"
          redis-cli -p ${port} cluster addslots ${slot}
      done
      
      [root@master redis-cluster-config]# sh addslots.sh 0 5461 7000
      [root@master redis-cluster-config]# sh addslots.sh 5462 10922 7001
      [root@master redis-cluster-config]# sh addslots.sh 10923 16383 7002
      [root@master redis-cluster-config]# redis-cli -p 7000 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:5
      cluster_my_epoch:0
      cluster_stats_messages_ping_sent:948
      cluster_stats_messages_pong_sent:830
      cluster_stats_messages_meet_sent:6
      cluster_stats_messages_sent:1784
      cluster_stats_messages_ping_received:830
      cluster_stats_messages_pong_received:804
      cluster_stats_messages_received:1634
      
    • 搭建集群-主从分配
      [root@master redis-cluster-config]# redis-cli -p 7004 cluster replicate c09e9379e37ee282219a07399bfb0dcbb933159a
      OK
      [root@master redis-cluster-config]# redis-cli -p 7005 cluster replicate 80602baaf52498f27be91a8b9169dc78de6e6e07
      OK
      [root@master redis-cluster-config]# redis-cli -p 7000 cluster nodes
      c09e9379e37ee282219a07399bfb0dcbb933159a 127.0.0.1:7001@17001 master - 0 1567953967031 1 connected 5462-10922
      df740a3f64985bb4645c1f9fff276d29ad1bcb25 127.0.0.1:7000@17000 myself,master - 0 1567953964000 0 connected 0-5461
      2e6827954a8dd1b7a1455e9aec057cb89fd56fa4 127.0.0.1:7003@17003 slave df740a3f64985bb4645c1f9fff276d29ad1bcb25 0 1567953966027 3 connected
      0fee682eb0247d98bcffe694fe745af194f708dd 127.0.0.1:7005@17005 slave 80602baaf52498f27be91a8b9169dc78de6e6e07 0 1567953965024 5 connected
      97969f534d03b6c7c346df035e35b676c79e2d51 127.0.0.1:7004@17004 slave c09e9379e37ee282219a07399bfb0dcbb933159a 0 1567953968035 4 connected
      80602baaf52498f27be91a8b9169dc78de6e6e07 127.0.0.1:7002@17002 master - 0 1567953966000 2 connected 10923-16383
      [root@master redis-cluster-config]# redis-cli -p 7000 cluster slots
      1) 1) (integer) 5462
         2) (integer) 10922
         3) 1) "127.0.0.1"
            2) (integer) 7001
            3) "c09e9379e37ee282219a07399bfb0dcbb933159a"
         4) 1) "127.0.0.1"
            2) (integer) 7004
            3) "97969f534d03b6c7c346df035e35b676c79e2d51"
      2) 1) (integer) 0
         2) (integer) 5461
         3) 1) "127.0.0.1"
            2) (integer) 7000
            3) "df740a3f64985bb4645c1f9fff276d29ad1bcb25"
         4) 1) "127.0.0.1"
            2) (integer) 7003
            3) "2e6827954a8dd1b7a1455e9aec057cb89fd56fa4"
      3) 1) (integer) 10923
         2) (integer) 16383
         3) 1) "127.0.0.1"
            2) (integer) 7002
            3) "80602baaf52498f27be91a8b9169dc78de6e6e07"
         4) 1) "127.0.0.1"
            2) (integer) 7005
            3) "0fee682eb0247d98bcffe694fe745af194f708dd"
      [root@master redis-cluster-config]# redis-cli -c -p 7000
      127.0.0.1:7000> set hello world
      OK
      127.0.0.1:7000> exit
      

    9.Ruby

    Ruby1.png
    Ruby2.png
    Ruby3.png
    Ruby4.png
    [root@master ~]# gem install redis-4.1.2.gem 
    ERROR:  Loading command: install (LoadError)
      cannot load such file -- zlib
    ERROR:  While executing gem ... (NoMethodError)
      undefined method `invoke_with_build_args' for nil:NilClass
    

    解决问题

    [root@master ~]# yum install zlib-devel
    [root@master ~]# cd /root/ruby-2.6.4/ext/zlib
    [root@master zlib]# ruby extconf.rb
    [root@master zlib]# vim Makefile 
    # 将 $(top_srcdir)/include/ruby.h 改为 ../../include/ruby.h
    [root@master zlib]# make && make install
    [root@master zlib]# yum install openssl-devel
    [root@master zlib]# cd ../openssl/
    [root@master openssl]# ruby extconf.rb 
    [root@master openssl]# vim Makefile 
    # 将 $(top_srcdir)/include/ruby.h 改为 ../../include/ruby.h
    [root@master openssl]# make && make install
    [root@master ~]# gem install redis-4.1.2.gem 
    Successfully installed redis-4.1.2
    Parsing documentation for redis-4.1.2
    Installing ri documentation for redis-4.1.2
    Done installing documentation for redis after 1 seconds
    1 gem installed
    
    [root@master src]# ./redis-trib.rb
    WARNING: redis-trib.rb is not longer available!
    You should use redis-cli instead.
    
    All commands and features belonging to redis-trib.rb have been moved
    to redis-cli.
    In order to use them you should call redis-cli with the --cluster
    option followed by the subcommand name, arguments and options.
    
    Use the following syntax:
    redis-cli --cluster SUBCOMMAND [ARGUMENTS] [OPTIONS]
    
    Example:
    redis-cli --cluster info 127.0.0.1:7000
    
    To get help about all subcommands, type:
    redis-cli --cluster help
    
    [root@master ~]# redis-cli –cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002
    

    10.原生命令与redis-trib.rb对比

    Redis Cluster总结.png

    emmm,Redis5.0 把redis-trib.rb集成到了redis-cli中

    相关文章

      网友评论

        本文标题:Redis入门到高可用-8.Redis Cluster

        本文链接:https://www.haomeiwen.com/subject/lskpyctx.html