redis+twemproxy+keepalive叢集搭建

來源:互聯網
上載者:User

標籤:redis   cache   web   

redis叢集簡介:


Redis叢集是一個實現分布式並且允許單點故障的Redis進階版本。


Redis叢集沒有最重要或者說中心節點,這個版本最主要的一個目標是設計一個線性可伸縮(可隨意增刪節點?)的功能。

Redis叢集為了資料的一致性可能犧牲部分允許單點故障的功能,所以當網路故障和節點發生故障時這個系統會儘力去保證資料的一致性和有效性。(這裡我們認為節點故障是網路故障的一種特殊情況)

為瞭解決單點故障的問題,我們同時需要masters 和 slaves。 即使主節點(master)和從節點(slave)在功能上是一致的,甚至說他們部署在同一台伺服器上,從節點也僅用以替代故障的主節點。 實際上應該說 如果對從節點沒有read-after-write(寫並立即讀取資料 以免在資料同步過程中無法擷取資料)的需求,那麼從節點僅接受唯讀操作。


twemproxy簡介:

twemproxy,也叫nutcraker。是一個twtter開源的一個redis和memcacheProxy 伺服器。 redis作為一個高效的快取服務器,非常具有應用價值。但是當使用比較多的時候,就希望可以通過某種方式 統一進行管理。避免每個應用每個用戶端管理串連的鬆散性。同時在一定程度上變得可以控制。 搜尋了不少的開源代理項目,知乎實現的python分區用戶端。node的代理中介層,還有各種restfull的開源代理。


伺服器系統:CentOS 6.5 x86_64
伺服器架構:

10.57.1.127 twemproxy master,redis master10.57.1.197 twemproxy slave,redis slave10.57.1.111 keepalived

服務版本:

redis: 2.4.10keepalived: 1.2.8autoconf: 2.69twemproxy: 0.4.0

一、redis
1、在redis master和redis slave主機上安裝redis
先安裝epel源

yum -y localinstall http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmyum -y install redis

redis master上修改/etc/redis.conf以下內容:

port 6379bind 0.0.0.0

redis slave上修改/etc/redis.conf以下內容:

port 6379bind 0.0.0.0slaveof 10.57.1.127 6379

2、啟動redis服務

/etc/init.d/redis restart

3、驗證redis服務
登入到redis master伺服器,執行

redis-cli -h 10.57.1.127 -p 6379 info|grep role

如果顯示

role:master

登入到redis slave伺服器,執行

redis-cli -h 10.57.1.197 -p 6379 info|grep role

如果顯示

role:slave

說明redis的master/slave已經完成配置

二、twemproxy
1、在redis master和redis slave主機上安裝twemproxy
首先去下載最新的twemproxy,在github上面找到最新版本

git clone https://github.com/twitter/twemproxy.git cd twemproxy/CFLAGS="-ggdb3 -O0" autoreconf -fvi && ./configure --prefix=/usr/local/twemproxy  --enable-debug=log make make install/usr/local/twemproxy/bin/nutcracker -t nutcracker: configuration file ‘conf/nutcracker.yml‘ syntax is okcp conf/nutcracker.yml /usr/local/twemproxy

2、配置twemproxy master

vim /usr/local/twemproxy/nutcracker.ymlredis1:  listen: 0.0.0.0:22122  hash: fnv1a_64  hash_tag: "{}"  distribution: ketama  auto_eject_hosts: true  timeout: 400  redis: true  servers:  - 10.57.1.127:6379:1 server1  # redis執行個體的ip,連接埠,權重  - 10.57.1.197:6379:1 server2

 
3、配置twemproxy slave

vim /usr/local/twemproxy/nutcracker.ymlredis2:   listen: 0.0.0.0:22122   hash: fnv1a_64   hash_tag: "{}"   distribution: ketama   auto_eject_hosts: true  timeout: 400   redis: true   servers:   - 10.57.1.127:6379:1 server1  # redis執行個體的ip,連接埠,權重  - 10.57.1.197:6379:1 server2

4、使用twemproxy啟動指令碼啟動twemproxy master、twemproxy slave

vim /etc/init.d/redis-twemproxy#!/bin/bashsource /etc/profile;function Stop(){/usr/bin/pkill nutcracker}function Start(){/usr/local/twemproxy/sbin/nutcracker -d -c /usr/local/twemproxy/nutcracker.yml}case $1 in         stop)            Stop            ;;        start)            Start            ;;        *)            echo "Usage: `basename $0` {stop|start}"            ;;esac

5、redis測試服務
執行

redis-cli -h 10.57.1.127 -p 22122redis-cli -h 10.57.1.197 -p 22122

如果沒有報錯,說明成功!

三、keepalived
1、在keepalived主機上安裝keepalived和ipvsadm

yum -y install keepalived ipvsadm

2、配置keepalived

vim /etc/keepalived/keepalived.conf ! Configuration File for keepalivedglobal_defs {   notification_email {    [email protected]   }   notification_email_from [email protected]   smtp_server smtp.yeah.net   smtp_connect_timeout 30   router_id redis_twemproxy}vrrp_instance VIP_1 {    interface eth0    state MASTER    virtual_router_id 55    priority 100    virtual_ipaddress {    10.57.1.101    }}virtual_server 10.57.1.101 6379 {    delay_loop 3    lb_algo wrr    lb_kind DR    protocol TCP    sorry_server 127.0.0.1 22122    real_server 10.57.1.127 22122 {    TCP_CHECK {    connect_timeout 3    nb_get_retry 3    delay_before_retry 3    }    }    real_server 10.57.1.197 22122 {    TCP_CHECK {    connect_timeout 3    nb_get_retry 3    delay_before_retry 3    }    }}

3、啟動keepalived

/etc/init.d/keepalived start

4、驗證keepalived

ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  10.57.1.101:6379 wrr  -> 10.57.1.127:22122            Route   1      0          0           -> 10.57.1.197:22122            Route   1      0          0

說明keepalived配置成功

5、測試一下10.57.1.101的6379連接埠是否暢通

nc -nvz -w 5 10.57.1.101 6379Connection to 10.57.1.101 6379 port [tcp/*] succeeded!

顯示succeeded表明已成功

redis叢集已經配置成功。





本文出自 “往事隨風” 部落格,謝絕轉載!

redis+twemproxy+keepalive叢集搭建

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.