1. 程式人生 > >第一章:Redis+twemproxy+keepalive+ sentinel實現完整的redis叢集方案實驗

第一章:Redis+twemproxy+keepalive+ sentinel實現完整的redis叢集方案實驗

Redis叢集

1.  背景描述

Redis+twemproxy+keepalive+ sentinel實現完整的redis叢集方案

Redis:快取伺服器

Twemproxy:redis的負載均衡代理伺服器,主要對redis的多主從複製叢集進行負載均衡

Keepalive:主要作用是對twemproxy進行容災,實現twemproxy的高可用

Sentinel:主要作用於redis的主從複製叢集的master故障後從新選舉新的master

2.  環境

主從叢集

伺服器(redis)

146

147

148

149

Master(一)

-        Slave1(6479)

-        Slave2(6378)

Master(二)

-        Slave1(6379)

-        Slave2(6378)

Twemproxy

Keepalive

3.  安裝redis

1.     安裝

2.     缺少gcc編譯器


3.     依賴軟體

yum install wget make gcc gcc-c++

yum -y install tcl

4.     Make 編譯包不對

5.     安裝完測試

//安裝完成後,會/usr/local/redis/bin/目錄下生成5個可執行檔案,

. ls /usr/local/redis/bin/

– redis-benchmark redis-check-aof redis-check-dump redis-cliredis-server

– redis-server:Redis伺服器的daemon啟動程式

– redis-cli:Redis命令列操作工具。

– redis-benchmark:Redis效能測試工具,測試Redis在你的系統及你的配置下的讀寫性

– redis-benchmark -h 10.6.2.245 -p 6379 -q -d 500

– redis-check-dump: 檢查file.rdb 檔案

– redis-check-aof:檢查file.aof 檔案

--安裝完成後

上面的執行檔案,可能直接在redis/src下

6.     四臺伺服器全部安裝

4.  安裝twemproxy

1.     下載安裝包

git clonehttps://github.com/twitter/twemproxy.git

cd twemproxy/

CFLAGS="-ggdb3 -O0" autoreconf-fvi && ./configure --prefix=/usr/local/twemproxy  --enable-debug=log

2.     編譯的時候報錯

autoreconf: Entering directory `.'

autoreconf: configure.ac: not using Gettext

autoreconf: running: aclocal --force -I m4

configure.ac:8: error: Autoconf version2.64 or higher is required

configure.ac:8: the top level

autom4te: /usr/bin/m4 failed with exitstatus: 63

aclocal: autom4te failed with exit status:63

autoreconf: aclocal failed with exitstatus: 63

原因是autoconf版本過低 http://www.aiuxian.com/article/p-879159.html

3.     升級之後再次編譯安裝成功

# make & make test & make install

# /usr/local/twemproxy/sbin/nutcracker -t

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

cp conf/nutcracker.yml/usr/local/twemproxy/

4.     啟動命令

除錯啟動

/usr/local/twemproxy/sbin/nutcracker -c /usr/local/twemproxy/nutcracker.yml

以守護程序啟動

/usr/local/twemproxy/sbin/nutcracker -d -c/usr/local/twemproxy/nutcracker.yml

5.     編輯/usr/local/twemproxy/nutcracker.yml


5.  安裝keepalive

1.     yum -y installkeepalived ipvsadm

2.     配置/etc/keepalived/keepalived.conf檔案

! Configuration File for keepalived

global_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 eth3

   state MASTER #文件上說如果都改為BACKUP可以避免搶ip的問題

   virtual_router_id 55

   priority 100 #優先順序設定為不同

   virtual_ipaddress {

     192.168.118.100/24 dev eth3 label eth3:1

    }

}

virtual_server 192.168.118.100 6379 {

   delay_loop 3

   lb_algo wrr

   lb_kind DR

   protocol TCP

   sorry_server 127.0.0.1 22121

   real_server 192.168.118.148 22121 {

     TCP_CHECK {

       connect_timeout 3

       nb_get_retry 3

       delay_before_retry 3

     }

    }

   real_server 192.168.118.149 22121 {

     TCP_CHECK {

       connect_timeout 3

       nb_get_retry 3

       delay_before_retry 3

     }

    }

}

3.     啟動keepalived

/etc/init.d/keepalivedstart

4.      驗證keepalived 


6.  配置主從叢集

1.     所有redis啟動後配置slave

#在一臺slave伺服器上執行,以那臺伺服器為master

slaveof 192.168.146 6379

#將一臺slave伺服器還原為master

SLAVEOF NO ONE

2.     配置

#工作目錄

dir ./tmp

#配置主從服務叢集的名字,並且配置master地址,1為slave資料copy的數量,越大master壓力越大,但是同步的效果越差

sentinel monitor mymaster 192.168.118.1466379 1 

#master超時時間,則進行master選舉

sentinel down-after-milliseconds mymaster5000 

sentinel parallel-syncs mymaster 1 

#選舉時間

sentinel failover-timeout mymaster15000 

3.     參考檔案

4.     啟動命令

nohup redis-sentinel ../sentinel.conf >outputlog.txt 2>&1 &

5.     檢視資訊

Redis例項上檢視

– Info Replication

redis-cli -h 192.168.33.111 -p 26379

– info sentinel

– sentinel slaves mymaster(組名)

6.     參考文件

http://www.aiuxian.com/article/p-879159.html

http://www.aiuxian.com/article/p-879158.html

http://www.cnblogs.com/haoxinyue/p/redis.html

http://www.iyunv.com/thread-39985-1-1.html