twemproxyに基づくredisクラスタスキームの実践

5753 ワード

Twemproxyはnutcrakerとも呼ばれ、Twtterによってオープンソースであり、mycatと同様のエージェントスライスメカニズムのミドルウェアであり、主にRedis Memcachedクラスタを管理するために使用され、複数のクライアントからの要求を受け入れることができ、ルーティング規則に従ってバックエンドcacheノードに転送され、クライアントとcacheサーバの直接接続数を減少させる.
一、twemproxy特性
1、メリット
  • 快速です.
  • 軽量級.
  • は、サーバとの長い接続を維持します.
  • キャッシュサーバに直接接続する接続数を減らす
  • .
  • パイプpipeliningリクエストと応答を有効にします.
  • は、複数のサーバへのプロキシをサポートします.
  • は、複数のサーバプールを同時にサポートします.
  • は、複数のサーバにわたってデータを自動的に共有します.
  • は、完全なmemcached asciiおよびredisプロトコルを実現する.
  • yamlファイルでサーバプールを簡単に構成できます.
  • は、一貫したハッシュおよび分布を含む複数のハッシュ・モードをサポートする.
  • は、障害時にノードを無効にするように構成することができる.
  • は、ポートを介してステータスを監視することができる.
  • は、Linux、*BSD、OS X、およびSmartOS(Solaris)
  • で実行することができる.
    2、短所
  • は、setsのサブ交差補完などの
  • の複数の値に対する動作をサポートしない.
  • Redisのトランザクション操作はサポートされていません
  • エラーメッセージ、ログ情報が不足し、問題の調査が困難
  • 友好的な管理インタフェースがなく、メンテナンス操作が困難である
  • は拡張をスムーズにできません.新しいノードを追加するには、サービス
  • を再起動する必要があります.
    二、twemproxyインストール
    Autoconfは、複数のUNIXクラスシステムに適応するためのソフトウェアソースパッケージを自動的に構成できるshellスクリプトを生成するためのツールであるため、autoconfをインストールする.
    1、autoconfをチェックする
    Autoconf:rpm-qa|grep-i autoconfがインストールされているかどうかを確認します.autoconf-2.63-5.1が表示されます.el6.noarch
    インストール済みバージョンが2.64未満の場合は、rpm-e--nodeps autoconf-*をアンインストールします.
    インストールされていない場合は、http://ftp.gnu.org/gnu/autoconf/現在の最新バージョンautoconf-2.69をダウンロードします.tar.gzインストール
    tar-zxvf autoconf-2.69を解凍する.tar.gz後ルートディレクトリcd autoconf-2.69構成:./configure  
    コンパイル:make
    インストール:make install
    ステップごとにエラーが発生しないことを確認
    2、twemproxyインストール
    行くhttps://github.com/twitter/twemproxyソースパッケージのダウンロード、wgethttps://codeload.github.com/twitter/twemproxy/zip/master
    解凍:unzip master,
    解凍ディレクトリへのアクセス:cd twemproxy-master
    ソースパケットの生成:autoreconf-fvi
    構成:./configure --prefix=/usr/local/twemproxy
    コンパイル:make
    インストール:make install
    三、nutcrackerの構成
    1、パラメータの意味
  • listen:サーバプールのアドレスとポートまたはsockファイルの絶対的な回路力(例えば/var/run/nutcracker.sock)
  • を傍受する.
  • client_connections:Redisクライアントから取得できる最大接続数.デフォルトは制限されません.オペレーティングシステムが強制する制限
  • にも適用されます.
  • hash:ハッシュ関数名.値は次の
  • です.
  • one_at_a_time
  • md5
  • crc16
  • crc32 (crc32 implementation compatible with libmemcached)
  • crc32a (correct crc32 implementation as per the spec)
  • fnv1_64
  • fnv1a_64
  • fnv1_32
  • fnv1a_32
  • hsieh
  • murmur
  • jenkins
  • hash_tag:ハッシュに使用するkey部分を指定する2文字の文字列.たとえば、「{}」または「$$」です.ハッシュタグは、タグ内の鍵部分が同じ
  • である限り、異なる鍵を同じサーバにマッピングすることを可能にする.
  • distribution:keyの配布モード.可能な値は次のとおりです:
  • ketama
  • modula
  • random
  • timeout:サーバとの接続またはサーバからの応答の受信を待つタイムアウト値(ミリ秒).デフォルトは
  • まで待機しています.
  • backlog:tcp backlogパラメータ.デフォルトは512です.
  • preconnect:twemproxyがプロセスの開始時にこのプールにプリ接続するすべてのサーバを制御します.デフォルトはfalse
  • redis:サーバプールがredisまたはmemcachedプロトコルを使用するかどうか.デフォルトはfalseです.
  • redis_auth:接続時にredisサーバを認証する.
  • redis_db:プール・サーバで使用するデータベース番号.既定値は0です.twemproxyは、クライアント
  • に常にdb 0として提示される.
  • server_connections:各サーバに開く最大接続数.デフォルトでは、最大1つのサーバ接続を開く
  • auto_eject_hosts:サーバの連続要求が制限回数を超えた場合にサーバを無効にするかどうかを指定します.デフォルトはfalse
  • server_retry_timeout:auto_eject_hostsがtrueの場合、サーバでの再試行を無効にする前に待機するタイムアウト値(ミリ秒).デフォルトは30000ミリ秒です.
  • server_failure_Limit:auto_eject_hostsがtrueの場合、連続要求に失敗した超過回数は、そのredisノードが無効になります.既定値は2です.
  • servers:サーバプールのサーバアドレス、ポート、ウェイト.

  • 2、nutcrackerを配置する.yml
    インストール後、/usr/local/twemproxyでsbin share、sbinでnutcrakerコマンド、shareでnutcrakerが生成されます.8コマンド
    twemproxy-master下confの構成nutcrackerが必要です.ymlを/usr/local/twemproxyにコピー
    vim/usr/local/twemproxy/conf/nutcrackerを編集ymlプロファイルは次のとおりです.
    alpha:
      listen: 192.168.172.71:22121
      hash: fnv1a_64
      distribution: ketama
      auto_eject_hosts: true
      redis: true
      server_retry_timeout: 3000
      server_failure_limit: 3
      servers:
       - 192.168.172.72:6379:1
       - 192.168.172.73:6379:1
       - 192.168.172.74:6379:1

    Listenの後はtwmeproxyが存在するノード、serversはredisノードごと、distributionはコンシステンシハッシュアルゴリズムketamaを採用する
    3、テスト構成
    構成が完了しましたnutcracker.をテストします.yml文法に間違いはないか
    /usr/local/twemproxy/sbin/nutcracker -t/usr/local/twemproxy/conf/nutcracker.yml
    次のように正しく表示されます.
    nutcracker: configuration file 'conf/nutcracker.yml' syntax is ok
    四、nutcrackerを起動する
    インストールパス/usr/local/twemproxyの下に進みます
    起動コマンド:sbin/nutcracker-d-c conf/nutcracker.yml  -o logs/log.log -p ./twemproxy.pid
    -dデーモンが起動し、-cはプロファイルを指定し、oはログファイルのパスを指定し、ログは自分で作成する必要があります.-pはpid保存パスを指定します.
    /usr/local/twemproxy/sbin/nutcracker--helpコマンド詳細パラメータは次のとおりです.
    This is nutcracker-0.4.1
    
    Usage: nutcracker [-?hVdDt] [-v verbosity level] [-o output file]
                      [-c conf file] [-s stats port] [-a stats addr]
                      [-i stats interval] [-p pid file] [-m mbuf size]
    
    Options:
      -h, --help             : this help
      -V, --version          : show version and exit
      -t, --test-conf        : test configuration for syntax errors and exit
      -d, --daemonize        : run as a daemon
      -D, --describe-stats   : print stats description and exit
      -v, --verbose=N        : set logging level (default: 5, min: 0, max: 11)
      -o, --output=S         : set logging file (default: stderr)
      -c, --conf-file=S      : set configuration file (default: conf/nutcracker.yml)
      -s, --stats-port=N     : set stats monitoring port (default: 22222)
      -a, --stats-addr=S     : set stats monitoring ip (default: 0.0.0.0)
      -i, --stats-interval=N : set stats aggregation interval in msec (default: 30000 msec)
      -p, --pid-file=S       : set pid file (default: off)
      -m, --mbuf-size=N      : set size of mbuf chunk in bytes (default: 16384 bytes)

    参照先:https://github.com/twitter/twemproxy