Centos 6.5 redis clusterクラスタ構築

7385 ワード

Centos 6.5 redis clusterクラスタ構築
参考文章:Redis学習ノート(十四)Redis Cluster紹介と構築
前言redisクラスタの作成には、全体的に2つの方法があります.
1. redis replication機能を使用してredisを複製し、同時に主従を読み書き分離する.redis sentinelを使用して、redisクラスタの高可用性を保証します.
この方法には、次のような利点があります.
  • は横方向の拡張をサポートすることができ、スループットのピークがより高い場合、拡張slaveノードによって、より高いリードQPS
  • をサポートすることができる.
    しかし、以下の欠点もあります.
  • は通常masterノードであり、読み書き分離を行っても最大数万の書き込みQPS(単純なデータ構造の場合、より複雑なデータはより低い可能性がある)
  • しかサポートできない.
  • が読み書き分離を行う場合、redisクライアント(例えばjedis)は、この点に対する読み書き分離のサポートが不足する.拡張およびパッケージングが必要な場合、またはソースコード
  • を修正する必要がある場合があります.
  • 横拡容を行う場合は、星状機構を取ることができないことに注意し、木状構造(星状構造はmasterノードにslaveノードを多く搭載し、データ複製を行う際にmasterノードに圧力が大きい)
  • をとる必要がある.
  • は、高可用性を達成するためにsentinelクラスタのセットを維持する必要がある
  • .
    2. redis 3.0バージョンではredis clusterがリリースされました.redisの分散型のニーズを効果的に解決しました.redis clusterreplication,sentinel機能を集合し、同時にmasterの横方向拡張をサポートする.トラフィックのボトルネックの問題をうまく解決することができます.redis clusterを使用すると、トラフィックのボトルネックを突破できます.
    対照的に、redis clusterは分散ソリューションである.ただし、以下の機能制限もあります.
  • keyバッチ操作サポートは限られています.現在、同じslotの値を有するkeyのみが一括動作
  • を実行することをサポートする.
  • keyトランザクション・オペレーションのサポートは限られており、同じノード上のトランザクション・オペレーションをサポートし、複数のノードのトランザクションをサポートしていません.

  • この記事では、redis clusterのいくつかの基礎知識について説明し、redis clusterクラスタを構築する方法について説明します.
    データぶんぷりろん
    分散型データベースは、データを何らかのルールに従って複数のノードにマッピングする問題を主に解決し、各ノードはデータのサブセット全体を担当します.一般的なパーティションには、ハッシュパーティションとシーケンスパーティションがあります.redis clusterは、ハッシュ・パーティション・ルールを採用する.一般的なハッシュ・パーティションには、次のものがあります.
  • ノード取り残しパーティション
  • コンシステンシハッシュパーティション
  • 仮想スロットパーティション
  • redis clusterは仮想スロットパーティションを採用し、すべてのキーはハッシュ関数に基づいて0-16383個のslotにマッピングされ、計算式はslot = CRC16(key)&16383である.各ノードは、slotおよびslotのマッピングされたキー値データの一部を維持する責任を負う.
    redis clusterの構築
    環境
  • CentOs 6.5
  • Redis 4.0.9(2018/4/10最新バージョン)
  • ノードredis clusterクラスタは一般に複数のノードから構成され、ノード数が6つ以上であれば、高可用性のクラスタを保証することができる.
    ここで、ノードの構成レプリケーションredisディレクトリのutils/redis_init_scriptredis_7000です.
    次の内容を変更します.
    REDISPORT=7000

    その後、このファイルを/etc/init.d/ディレクトリにコピーします.
    コピーredisディレクトリの下のredis.confから/etc/redis/7000.confまで、以下の内容を変更します.
    port 7000
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 15000
    daemonize yes
    pidfile  /var/run/redis_7000.pid
    dir      /var/reids/7000
    logfile  /var/log/redis/7000.log
    bind 192.168.1.103 //  IP  
    appendonly yes

    次のフォルダを作成します.
  • /var/redis/7000
  • /var/log/redis/

  • 次に、/etc/init.d/ディレクトリの下に行って、./redis_7000 startコマンドを実行してredisインスタンスを起動します./var/log/redis/7000.logを確認して、正常に起動したかどうかを確認します.
    上記の方法で6つのインスタンスを配置します.6つのインスタンスが異なるマシンにある場合は、プロファイルを直接コピーしてください.1台のマシンが2つ以上のインスタンスを走る場合は、ポート番号の変更に注意する必要があります.
    テストに使用すると、すべてのノードが同じマシンの上を走っています.プロファイルは次のように変更できます.
    port 7000
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 15000
    cluster-announce-ip 39.10X.XX.XX //     IP
    cluster-announce-port 7000
    cluster-announce-bus-port 17000
    daemonize yes
    pidfile  /var/run/redis_7000.pid
    dir      /var/reids/7000
    logfile  /var/log/redis/7000.log
    appendonly yes

    6つのredisの実例を走ってからでいいです.現在redisの集団はすでに走り出しているが、まだ仕事ができない.
    クラスタの作成
    クラスタの作成rubyに関連するツールを使用する場合は、次のコマンドを実行してrubyをインストールする必要があります.
    yum install -y ruby
    yum install -y rubygems
    gem install redis
    gem install redisが実行されている間に、次のエラーが発生した場合.
     gem install redis
    ERROR:  Error installing redis:
            redis requires Ruby version >= 2.2.2.
    

    これは、システムがcentos 6.5でデフォルトでインストールされているRubyバージョンが1.8.7であるため、2.2.2以上にアップグレードする必要があるためです.
    次のコマンドを実行します.
    gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
    
    curl -L get.rvm.io | bash -s stable
    
    source /usr/local/rvm/scripts/rvm
    
    #      ruby  
    rvm list known
    
    #   2.3.4  
    rvm install 2.3.4
    
    #       
    rvm use 2.3.4
    
    gem install redis

    これで正常にインストールできます.インストールが完了したら、redisディレクトリのsrc/redis-trib.rbファイルを/usr/local/binにコピーします.
    次に、次の方法でクラスタを作成します.
    redis-trib.rb create --replicas 1 192.168.1.103:7000 \
    192.168.1.103:7001 192.168.1.104:7002 192.168.1.104:7003 \
    192.168.1.105:7004 192.168.1.105:7005
    

    実行中にslotを割り当てることができるかどうかを尋ね、yesを入力します.
    このうちパラメータ--replicasは、masterごとにslaveがあることを示しており、意外なことがなければ、redisクラスタおよび構築が完了します.クラスタのステータスは、次のコマンドで確認できます.
    redis-trib.rb check 192.168.1.103:7001