第一章: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 {
}
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