NoSQLのRedisクラスタ構築——6台のサーバー、3台のメインサーバー、3台のスレーブサーバー

10456 ワード

Redisクラスタ構築
  • 一、シングルノードRedisサーバによる問題
  • 二、Redisクラスタ紹介
  • 2.1、Redisクラスタの利点
  • 2.2、Redisクラスタの実現方法
  • 2.3、Redis-CRusterデータスライス
  • 2.4、Redis-CRusterのマスターコピーモデル
  • 三、Reidsクラスタ実験
  • 一、単一ノードRedisサーバーによる問題
  • 単点故障
  • 大量データ同時データ要求
  • を処理できない.
  • データ損失
  • 解決策:Redisクラスタを構築する必要があります
    二、Redisクラスタの紹介
  • Redisクラスタは、複数のRedis間ノード間で共有するデータを提供するプログラムセット
  • である.
  • Redisクラスタでは、複数のkeysを処理するコマンドはサポートされていません.これは、異なるノード間でデータを移動する必要があるため、Redisのような性能に達しず、高負荷の場合、予想できないエラーを引き起こす可能性があります.
  • Redisクラスタは、パーティション化によってある程度の可用性を提供する、実際の環境において、あるノードがダウンタイムである場合、またはそれに達しない場合、コマンド
  • の処理を継続することができる.
    2.1、Redisクラスタの優勢
  • は、異なるノード上の
  • にデータを自動的に分割する.
  • クラスタ全体の一部のノードが失敗する、または到達できない場合、コマンド
  • の処理を継続することができる.
    2.2.Redisクラスタの実現方法
  • クライアントスライス
  • エージェントスライス
  • サーバ側スライス
  • 2.3.Redis-CRusterデータスライス
  • Redisクラスタはコンシステンシhashを用いずハッシュスロット概念
  • を導入した.
  • Redisクラスタは16384個のハッシュスロット
  • を有する
  • 各keyは、CRC 16の検査後に16384を型抜きすることにより、載置溝
  • を決定する.
  • クラスタの各ノードは、ハッシュスロット
  • の一部を担当する
  • 3ノードからなるクラスタを例1)ノードAは0から5500番のハッシュスロット2を含む)ノードBは5501から11000番のハッシュスロット3を含む)ノードCは11001から16384番のハッシュスロット
  • を含む.
  • は、ノード1の追加または削除をサポートする)削除ノードの追加サービスを停止する必要はない2)例えばA)ノードDを新たに追加するには、ノードA,B,Cの一部のスロットをD上のBに移動する必要がある)ノードAを削除するには、AのスロットをBおよびCノードに移動し、スロットのないAノードをクラスタから
  • を除去する必要がある.
    2.4.Redis-CRusterのマスターコピーモデル
  • クラスタにはA,B,Cの3つのノードがあり、ノードBが失敗すると、クラスタ全体に5501-1000という範囲のスロットが欠け、
  • は使用できない.
  • ノードごとに1つのスレーブノードA 1,B 1,C 1が追加され、クラスタ全体に3つのmasterノードと3つのsalveノードが構成され、ノードBが失敗すると、クラスタはB 1を新しいプライマリノードとして選択して
  • サービスを継続する.
  • BとB 1の両方が失敗すると、クラスタは
  • を使用できなくなる.
    三、Reidsクラスター実験
    CentOS 7
    master1
    20.0.0.11
    CentOS 7
    master2
    20.0.0.12
    CentOS 7
    master3
    20.0.0.21
    CentOS 7
    slave1
    20.0.0.22
    CentOS 7
    slave2
    20.0.0.31
    CentOS 7
    slave3
    20.0.0.32
  • 導入環境
  • [root@localhost ~]# systemctl stop firewalld.service 
    [root@localhost ~]# setenforce 0
    [root@localhost ~]# hostnamectl set-hostname master1
    [root@master1 ~]# yum install gcc gcc-c++ y
    

    6台の仮想マシンにRedisをインストールします
    ここはRedisをインストールするブログのパスです
  • ここで6台のRedisにプロファイルを作成する操作
  • [root@master1 utils]# vim /etc/redis/6379.conf 
      70/ # bind 127.0.0.1		#bind           
      89/ protected-mode no		#      
      93/ port 6379
     137/ daemonize yes		#       
     833/  cluster-enabled yes		#      
     841/  cluster-config-file nodes-6379.conf	#        (841,841 s/# //g)
     847/  cluster-node-timeout 15000		#        
     700/ appendonly yes			#  aof   
    
     ##   6        Redis
     [root@master1 utils]# /etc/init.d/redis_6379 restart
    

    正常に起動すると、/var/lib/redis/6379/ディレクトリに2つのファイルが追加されます.1つは永続化appendonlyです.aofファイル、もう1つはノードが初めて生成を開始するnodes-6379である.confプロファイル.
  • 現在は3台のMasterで行われている操作
  •   key  
    gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
    
      rvm,   rvm
    tar zvxf rvm-master.tar\(1\).gz 
    ./install 
    
          
    source /etc/profile.d/rvm.sh 
    
      Ruby      
    rvm list known
    
      Ruby2.4.1  
    rvm install 2.4.1
    
      Ruby2.4.1  
    rvm use 2.4.1
    
        Ruby2.4.1  
    ruby -v
    
        Redis
    gem install redis
    
  • クラスタ
  • を作成
    redis-cli --cluster create 20.0.0.11:6379 20.0.0.12:6379 20.0.0.21:6379 20.0.0.22:6379 20.0.0.31:6379 20.0.0.32:6379 --cluster-replicas 1
    
    >>> Performing hash slots allocation on 6 nodes...
    Master[0] -> Slots 0 - 5460
    Master[1] -> Slots 5461 - 10922
    Master[2] -> Slots 10923 - 16383
    Adding replica 20.0.0.31:6379 to 20.0.0.11:6379
    Adding replica 20.0.0.32:6379 to 20.0.0.12:6379
    Adding replica 20.0.0.22:6379 to 20.0.0.21:6379