CentOS6.5安裝Twemproxy叢集

獵手家園發表於2016-05-02

Twemproxy,也叫Nutcraker。是一個Twtter開源的一個Redis和Memcache代理伺服器。 Redis作為一個高效的快取伺服器,非常具有應用價值。但是當使用比較多的時候,就希望可以透過某種方式 統一進行管理。避免每個應用每個客戶端管理連線的鬆散性,同時在一定程度上變得可以控制。 搜尋了不少的開源代理專案,知乎實現的Python分片客戶端。Node的代理中間層,還有各種Restfull的開源代理。

 

Twemproxy是一個代理伺服器,可以透過它減少Memcached或Redis伺服器所開啟的連線數。

優點:

1、透過代理的方式減少快取伺服器的連線數

2、自動在多臺快取伺服器間共享資料

3、透過不同的策略與雜湊函式支援一致性雜湊

4、透過配置的方式禁用失敗的結點

5、執行在多個例項上,客戶端可以連線到首個可用的代理伺服器

6、支援請求的流式與批處理,因而能夠降低來回的消耗

 

一、安裝依賴項

yum install automake
yum install libtool

二、更新Autoconf版本。

Twemproxy需要2.64或更高版本。否則編譯的時候報錯:

autoreconf: Entering directory `.'

autoreconf: configure.ac: not using Gettext

autoreconf: running: aclocal --force -I m4

configure.ac:8: error: Autoconf version 2.64 or higher is required

configure.ac:8: the top level

autom4te: /usr/bin/m4 failed with exit status: 63

aclocal: autom4te failed with exit status: 63

autoreconf: aclocal failed with exit status: 63

 

下載新版本:  #wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz

rpm -qf /usr/bin/autoconf
autoconf-2.63-5.1.el6.noarch

rpm -e --nodeps autoconf-2.63        #解除安裝當前版本

tar zxvf autoconf-2.69.tar.gz        #解壓安裝
cd autoconf-2.69
./configure --prefix=/usr            #編譯
make && make install                 #安裝
/usr/bin/autoconf -V #檢視是否安裝成功

三、安裝Twemproxy

1、 安裝git命令

yum install git -y

2、 下載

git clone https://github.com/twitter/twemproxy.git

3、 安裝

cd twemproxy
autoreconf -fvi
./configure --prefix=/usr/local/twemproxy
make -j 8
make install

4、 配置檔案

新增pid檔案目錄和配置檔案conf目錄

cd /usr/local/twemproxy
mkdir run conf

新增proxy配置檔案

cd conf
vim nutcracker.yml

alpha:
    listen: 127.0.0.1:22222       #使用哪個埠啟動Twemproxy
    hash: fnv1a_64                #指定具體的hash函式
    distribution: ketama          #具體的hash演算法
    auto_eject_hosts: true        #是否在結點無法響應的時候臨時摘除結點
    timeout: 400                  #超時時間(毫秒)
    redis: true                   #是否是Redis的proxy
    server_retry_timeout: 3000    #重試的時間(毫秒)
    server_failure_limit: 1       #結點故障多少次就算摘除掉
    servers:                      #下面表示所有的Redis節點(IP:埠號:權重  別名)
      - 192.168.1.10:6379:1 master0
      - 192.168.1.7:6379:1  master1

5、 啟動twemproxy服務

nutcracker -t 測試配置檔案

nutcracker: configuration file 'conf/nutcracker.yml' syntax is ok

啟動服務:

nutcracker -d -c /usr/local/twemproxy/conf/nutcracker.yml -p /usr/local/twemproxy/run/redisproxy.pid -o /usr/local/twemproxy/run/redisproxy.log

6nutcracker用法與命令選項

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              : 檢視幫助文件,顯示命令選項

-V, –version           : 檢視nutcracker版本

-t, –test-conf         : 測試配置指令碼的正確性

-d, –daemonize           : 以守護程式執行

-D, –describe-stats : 列印狀態描述

-v, –verbosity=N   : 設定日誌級別 (default: 5, min: 0, max: 11)

-o, –output=S        : 設定日誌輸出路徑,預設為標準錯誤輸出 (default: stderr)

-c, –conf-file=S     : 指定配置檔案路徑 (default: conf/nutcracker.yml)

-s, –stats-port=N   : 設定狀態監控埠,預設22222 (default: 22222)

-a, –stats-addr=S  : 設定狀態監控IP,預設0.0.0.0 (default: 0.0.0.0)

-i, –stats-interval=N    : 設定狀態聚合間隔 (default: 30000 msec)

-p, –pid-file=S         : 指定程式pid檔案路徑,預設關閉 (default: off)

-m, –mbuf-size=N      : 設定mbuf塊大小,以bytes單位 (default: 16384 bytes)

7、最近在新的公司要上twemproxy方案了,使用過程中出現了一下小問題:

1).yml配置檔案中每個引數值對分隔符”:”後需要有一個空格

2)不同層次的引數需要縮排區分,最好使用tab鍵縮排,否則nutcracker程式不能啟動。

3)在auto_eject_hosts: true的時候,關閉一個redis例項後,寫入資料還是提示“(error) ERR Connection refused”。這個與server_retry_timeout引數設定太小有關,預設值30000msec是一個很好的選擇。

相關文章