Twemproxyは、MemcachedまたはRedisプロキシ・サーバーです。
プロキシとして機能し、キャッシュサーバーへの接続数を減らせる
データを自動的に複数のキャッシュサーバー間に分散する
異なる戦略よる一貫したハッシュとハッシュ機能をサポートする
複数のインスタンスで走り、クライアントが最初に利用できるプロキシサーバーに接続できる
リクエストのパイプラインとバッチ化ができるのでラウンドトリップを減らせる
Install and Build on ubuntu
パッケージがないのでソースからコンパイルさせ、serviceコマンドで実行できる様にします。
### src install ### $ sudo apt-get install automake $ sudo apt-get install libtool $ cd /opt $ git clone git://github.com/twitter/twemproxy.git $ cd twemproxy $ sudo autoreconf -fvi $ sudo ./configure $ sudo make && make install ### create init & log file for ubuntu ### $ sudo mv ${NUTCRACKER_INIT} /etc/init.d/nutcracker $ sudo chmod 755 /etc/init.d/nutcracker $ sudo mkdir -p /etc/nutcracker $ sudo mkdir -p /var/log/nutcracker $ sudo cp /opt/twemproxy/conf/nutcracker.yml /etc/nutcracker/nutcracker.yml # config services $ sudo update-rc.d nutcracker defaults
${NUTCRACKER_INIT}はtwemproxyで用意されているinitファイルが環境に合わないため、自作しています。
Configuration(nutcracker.yml)
redisを使用し、master × 1 slave × 2で行った場合の設定です。
redis_write: listen: 127.0.0.1:22121 hash: fnv1a_64 distribution: ketama timeout: 3000 preconnect: true auto_eject_hosts: true redis: true server_connections: 50 server_retry_timeout: 30000 server_failure_limit: 1 servers: - master.sample.0001.apne1.cache.amazonaws.com:6379:1 redis_read: listen: 127.0.0.1:22122 hash: fnv1a_64 distribution: random timeout: 3000 preconnect: true auto_eject_hosts: true redis: true server_connections: 100 server_retry_timeout: 5000 server_failure_limit: 1 servers: - slave1.sample.0001.apne1.cache.amazonaws.com:6379:1 - slave2.sample.0002.apne1.cache.amazonaws.com:6379:1
distribution: 分散方法を指定する。randomを指定すれば文字通りの結果が出る。他はよくわからん...
auto_eject_hosts: server_failure_limitで設定した回数分連続してエラーが発生した場合、nodeから切り離される。
servers: host:port:weightを設定する。redisではweightは意味がないようです。