真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Twemproxy測試Redis分片主從架構(gòu)-創(chuàng)新互聯(lián)

Twemproxy 測試架構(gòu)

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供定結(jié)網(wǎng)站建設(shè)、定結(jié)做網(wǎng)站、定結(jié)網(wǎng)站設(shè)計、定結(jié)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、定結(jié)企業(yè)網(wǎng)站模板建站服務(wù),十余年定結(jié)做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

 1、twemproxy是twitter開發(fā)的一個redis代理proxy。通過Twemproxy可以使用多臺服務(wù)器來水平擴張redis服務(wù),可以有效的避免redis單點故障問題。

使用Twemproxy 對硬件資源配置較高;在redis性能有一定的損失(twitter測試約20%)用于提高整個系統(tǒng)的HA;

  2、twemproxy部署簡單快捷;可以直接在proxy進(jìn)行讀寫、并轉(zhuǎn)發(fā)請求給后端的redis;但是不適合超大流量系統(tǒng)。做的時候把應(yīng)用分開、使用LVS集群:實現(xiàn)twemproxy的負(fù)載均衡,提高proxy的可用性和可擴張能力;

    優(yōu)點:

    輕量級的Redis和memcached代理。使用它可以減少緩存服務(wù)器的連接數(shù),并且利用它來作分片,性能損耗不會多于20%。其實是因為用了pipeline.首先redis是支持使用pipeline批處理的。

    twemproxy與每個redis服務(wù)器都會建立一個連接,每個連接實現(xiàn)了兩個FIFO的隊列,通過這兩個隊列實現(xiàn)對redis的pipeline訪問。將多個客戶端的訪問合并到一個連接,這樣既減少了redis服務(wù)器的連接數(shù),又提高了訪問性能。

    缺點:

    雖然可以動態(tài)移除節(jié)點,但該移除節(jié)點的數(shù)據(jù)就丟失了。redis集群動態(tài)增加節(jié)點的時候,twemproxy不會對已有數(shù)據(jù)做重分布.maillist里面作者說這個需要自己寫個腳本實現(xiàn)性能上的損耗.

twemproxy- nutcracker:

ip:10.207.101.101

ip:10.207.101.102

VIP:10.207.101.100

HA- keepalived

ip:10.207.101.101

ip:10.207.101.102

VIP:10.207.101.100

Redis

IP: 10.207.101.101

Port:6001/6002/6003

IP: 10.207.101.102

Port:6001/6002/6003

  3、部署

wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz

wget https://codeload.github.com/twitter/twemproxy/zip/master

yum install gcc gcc-c++ tcl ruby -y

tar -xf autoconf-2.69.tar.gz

cd autoconf-2.69/

./configure

make &&make install

unzip unzip master.zip

cd twemproxy-master

autoreconf -fvi

./configure --enable-debug=full

make

make install

  4、配置示例:

# vim /etc/nutcracker.yml

alpha:

 listen: 0.0.0.0:22121

 hash: fnv1a_64

 distribution: ketama

 auto_eject_hosts: true

 redis: true

 server_retry_timeout: 2000

 server_failure_limit: 1

 servers: --兩臺redis服務(wù)器的地址和端口

  - 10.207.101.101:6001:1

  - 10.207.101.102:6001:1

#配置都是redis master地址

    注意:

    1. .yml 配置文件中每個參數(shù)值對分隔符”:”后需要有一個空格

    2. 不同層次的參數(shù)需要縮進(jìn)區(qū)分,最好使用tab鍵縮進(jìn),否則nutcracker進(jìn)程不能啟動。

    3. 在auto_eject_hosts: true的時候,關(guān)閉一個redis實例后,寫入數(shù)據(jù)還是提示“(error) ERR Connection refused”。這個與server_retry_timeout參數(shù)設(shè)置太小有關(guān),默認(rèn)值30000msec是一個很好的選擇。

  5、啟動Twemproxy服務(wù)

nutcracker -t nutcracker.yml

檢測配置語法真確會顯示OK .

# nutcracker -t twemproxy/conf/nutcracker.yml

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

web界面運行啟動服務(wù)的http://ip:22222查看;

可以使用nc命令查看 Twemproxy 狀態(tài)語句:

# nc 10.207.101.101 22222|python -mjson.tool

  6、設(shè)置啟動

# cat start.sh

nutcracker -d -c /opt/twemproxy-master/conf/nutcracker.yml -p /opt/twemproxy-master/run/redisproxy.pid -o /opt/twemproxy-master/run/redisproxy.log

    nutcracker 用法與命令選項

Options:

-h, –help             : 查看幫助文檔,顯示命令選項

-V, –version          : 查看nutcracker版本

-t, –test-conf          : 測試配置腳本的正確性

-d, –daemonize        : 以守護進(jìn)程運行

-D, –describe-stats     : 打印狀態(tài)描述

-v, –verbosity=N       : 設(shè)置日志級別 (default: 5, min: 0, max: 11)

-o, –output=S         : 設(shè)置日志輸出路徑,默認(rèn)為標(biāo)準(zhǔn)錯誤輸出 (default: stderr)

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

-s, –stats-port=N       : 設(shè)置狀態(tài)監(jiān)控端口,默認(rèn)22222 (default: 22222)

-a, –stats-addr=S       : 設(shè)置狀態(tài)監(jiān)控IP,默認(rèn)0.0.0.0 (default: 0.0.0.0)

-i, –stats-interval=N    : 設(shè)置狀態(tài)聚合間隔 (default: 30000 msec)

-p, –pid-file=S         : 指定進(jìn)程pid文件路徑,默認(rèn)關(guān)閉 (default: off)

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

# cat stop.sh

ps -ef | grep redis | grep -v grep | awk '{print $2}'  | sed -e "s/^/kill -9 /g" | sh -

  7、檢測進(jìn)程

ps -ef | grep nutcracker | grep -v grep

  8、keepalived 部署 HA 靜態(tài)路由單點故障;

yum install keepalived -y

# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

  router_id LVS_DEVEL

}

vrrp_script check_twem {

#   script "killall -0 redis"

  script "/etc/keepalived/check_twem.sh"

  interval 2

  weight -3

  fall 3

  rise 2

}

vrrp_instance VI_1 {

  state MASTER

  interface eth0

  virtual_router_id 51

  priority 100

  advert_int 1

  authentication {

    auth_type PASS

    auth_pass 1111

  }

  virtual_ipaddress {

    172.27.101.100/24 dev eth0 label eth0:1

  }

   track_script {

    check_twem

  }

}

virtual_server 172.27.101.100 22121 {

  delay_loop 6

  protocol TCP

real_server 172.27.101.101 22121 {

    weight 1

    TCP_CHECK {

      connect_timeout 3

      nb_get_retry 3

      delay_before_retry 3

      connect_port 80

    }

real_server 172.27.101.102 22121 {

    weight 1

    TCP_CHECK {

      connect_timeout 3

      nb_get_retry 3

      delay_before_retry 3

      connect_port 80

    }

  }

}

 9、nutcracker 進(jìn)程檢測 - 腳本check_twem.sh

# cat /etc/keepalived/check_twem.sh

#!/bin/bash

twem=$(ps -C nutcracker --no-heading|wc -l)

if [ "${twem}" = "0" ]; then

  sh /opt/twemproxy-master/start.sh

  sleep 2

  twem=$(ps -C nutcracker --no-heading|wc -l)

  if [ "${twem}" = "0" ]; then

    /etc/init.d/keepalived stop

  fi

fi

  10、Set測試:

通過twemproxy測試:

# redis-cli -h 172.27.101.100 -p 22121 -c 11 -t set -d 11 -l –q

SET: 38167.94 requests per second

直接對后端redis測試:

# redis-cli -h 172.27.101.101 -p 6001 -c 11 -t set -d 11 -l –q

直接對后端redis測試

# redis-cli -h 172.27.101.102 -p 6001 -c 11 -t set -d 11 -l –q

SET: 53191.49 requests per second

 11、Get測試:

通過twemproxy測試:

# redis-cli -h 172.27.101.100 -p 22121 -c 11 -t get -d 11 -l -q

GET: 37453.18 requests per second

直接對后端redis測試:

# redis-cli -h 172.27.101.101 -p 22121 -c 11 -t get -d 11 -l -q

GET: 62111.80 requests per second

查看鍵值分布:

# redis-cli info|grep db0

db0:keys=51483,expires=0,avg_ttl=0

# redis-cli info|grep db0

db0:keys=48525,expires=0,avg_ttl=0

  12、redis-cli 基本操作;

Redis 模糊搜索

 keys *

 select 2

刪除所有以user開頭的key 可以這樣實現(xiàn):

# redis-cli keys "user*"

1) "user1"

2) "user2"

# redis-cli keys "user*" | xargs redis-cli del

(integer) 2

# 刪除成功

# 批量刪除匹配通配符的key用到了Linux中的管道和xargs參數(shù):

redis-cli keys "s*" | xargs redis-cli del

# 如果需要制定數(shù)據(jù)庫,需要用到 -n 數(shù)據(jù)庫編號  參數(shù),下面是刪除2數(shù)據(jù)庫中s開頭的鍵:

redis-cli -n 2 keys "s*" | xargs redis-cli -n 2 del

redis-cli keys "*" | xargs redis-cli del

# 如果redis-cli沒有設(shè)置成系統(tǒng)變量,需要指定redis-cli的完整路徑

?!∪纾?opt/redis/redis-cli keys "*" | xargs /opt/redis/redis-cli del

# 刪除當(dāng)前數(shù)據(jù)庫中的所有Key

flushdb

# 刪除所有數(shù)據(jù)庫中的key

flushall

    13、測試問題

    read, writev and mbuf

  所有的請求和響應(yīng)都在mbuf里面,mbuf默認(rèn)大小是16K(512b-16M),可以使用-m or -mbuf-size=N來配置,每一個連接都會獲得至少一個mbuf,這意味著nutcracker支持的并發(fā)的連接數(shù)依賴于mbuf的大小,小的mbuf可以控制更多的連接,大的mbuf可以讓我們讀或者寫更多的數(shù)據(jù)導(dǎo)socker buffer。如果并發(fā)量很大的場景,推薦使用比較小的mbuf(512 or 1K)

    mbuf-size=N

 每一個客戶端連接最好需要一個mbuf,一個服務(wù)請求最少是兩個連接(client->proxy、proxy->server)所以最少需要兩個mbufs 1000個客戶端連接的場景計算:1000*2*mbuf=32M,如果每個連接有10個操作,這個值將會是320M,假設(shè)連接是10000,那么將會消耗3.2G內(nèi)存!這種場景下最好調(diào)mbuf值比如512b,1000*2*512*10=10M 這個就是當(dāng)并發(fā)量高的場景下使用小的mbuf的原因

    key長度:

  memcached的長度上限是250, redis沒有類似限制,但是nutcracker需要key存儲在連續(xù)的內(nèi)存里面,而因為所有的請求和響應(yīng)都在mbuf中,所以redis key的長度將會受限制于mbuf,也就是說如果你的redis實例如果要操作超長的key,你必須把mbuf調(diào)大。

  14、簡單刪除

# 測試數(shù)據(jù)

redis> ZRANGE page_rank 0 -1 WITHSCORES

1) "bing.com"

2) "8"

3) "baidu.com"

4) "9"

5) "google.com"

6) "10"

# 移除單個元素

redis> ZREM page_rank google.com

(integer) 1

redis> ZRANGE page_rank 0 -1 WITHSCORES

1) "bing.com"

2) "8"

3) "baidu.com"

4) "9"

# 移除多個元素

redis> ZREM page_rank baidu.com bing.com

(integer) 2

redis> ZRANGE page_rank 0 -1 WITHSCORES

(empty list or set)

# 移除不存在元素

redis> ZREM page_rank non-exists-element

(integer) 0

  14、命令參考

http://doc.redisfans.com/

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


本文名稱:Twemproxy測試Redis分片主從架構(gòu)-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://weahome.cn/article/dspjpd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部