最近項(xiàng)目即將上線,由于人手問題,各種研究運(yùn)維相關(guān)知識,這兩天剛弄完redis集群部署的問題,跟大家嘮嘮。
一、Redis安裝
*以下均是在Linux環(huán)境下執(zhí)行,系統(tǒng)ubuntu16.04
1. 下載穩(wěn)定版
?? ?sudo wget?http://download.redis.io/redis-stable.tar.gz
2. 解壓
??? sudo?tar -zxvf redis-stable.tar.gz
3. 如果沒有GCC編輯器就裝一下
??? sudoapt-get install gcc
4. 編輯、安裝
??? cd redis-stable
? ? make
??? make install PREFIX=安裝目錄
5. Redis配置
??? cd步驟4安裝目錄/bin
??? cp redis-stable目錄/redis.conf ./
??? *如果就是想起個(gè)簡單的redis服務(wù),到這里就結(jié)束了
??? 針對rediscluster需要修改的配置(實(shí)際使用去掉注釋):
??? bind IP地址? #為了外網(wǎng)訪問,原為127.0.0.1
??? port 6379 #端口號
??? daemonize yes #后臺模式
??? # 如果要設(shè)置密碼的話,masterauth和requirepass都要設(shè)置,否則主從切換時(shí),會有授權(quán)問題
??? masterauth 密碼
??? requirepass 密碼(必須一致)
??? appendonly yes
??? cluster-enabled yes
??? cluster-config-file nodes.conf
??? cluster-node-timeout 15000
6. 啟服務(wù)
??? 如果想在一臺機(jī)器上啟多個(gè)服務(wù),可以復(fù)制多個(gè)reids.conf,修改port,并且要修改日志文件名稱
????也可以粗暴的復(fù)制多個(gè)bin文件夾,只改port就行了
??? ./redis-server redis.conf
二、Redis集群
? ? 目前,redis集群解決方案有兩個(gè):
1. Twemproxy
??? 這是Twitter推出的解決方案,簡單的說就是上層加個(gè)代理負(fù)責(zé)分發(fā),屬于client端集群方案,目前大多數(shù)應(yīng)用者都在采用的解決方案。
? ? 會用到LVS、Twemproxy、Keepalived、Redis主從模式,感覺太麻煩了,而且沒有在線擴(kuò)容節(jié)點(diǎn)能力,公司經(jīng)濟(jì)能力有限,沒法一開始就預(yù)留出足夠的節(jié)點(diǎn),后來發(fā)現(xiàn)了官推的redis cluster方案,就放棄了Twemproxy。
2. Redis Cluster
??? Redis3.0之后,官方推出的server端集群方案
??? 優(yōu)點(diǎn):(1)官方解決方案
?????????????? (2)可以在線水平擴(kuò)展(Twemproxy的一大弊端就是不支持在線擴(kuò)容節(jié)點(diǎn))
?????????????? (3)客戶端直連,系統(tǒng)瓶頸更少
?????????????? (4)無中心架構(gòu)
?????????????? (5)支持?jǐn)?shù)據(jù)分片
? ? 根據(jù)需求,最終解決方案選擇:redis cluster +主從模式
? ? 下面介紹一下配置
? ? 1. 安裝ruby環(huán)境
??? sudoapt-get install ruby
??? sudo apt-get install rubygems
??? sudo gem install redis? # ruby的redis客戶端
? ? 2. 如果要設(shè)置密碼,這里要修改一些配置
??? 執(zhí)行?gem environment?找到 INSTALLATION DIRECTORY

?? ?cd到上面路徑+/gems/redis-xxx/lib/redis/
?? ?vim?client.rb
?? ?password => "密碼"? #修改password為指定密碼

? ? 3. 還有另一種設(shè)置密碼的方式
??? 最開始redis不要設(shè)置密碼,待集群起來之后,通過config命令挨個(gè)redis服務(wù)修改配置
??? configset masterauth 密碼
?? ?config set requirepass 密碼
?? ?config rewrite
? ? 4. 配置集群
??? cd redis安裝目錄
??? cp redis-stable目錄/src/redis-trib.rb ./
???? ./redis-trib.rb create --replicas 1 192.168.1.222:6379 192.168.1.223:6379 192.168.1.224:6379 192.168.1.225:6379192.168.1.226:6379 192.168.1.227:6379? # replicas 1表示一從,本案例三主三從
??? 可以通過如下檢查各節(jié)點(diǎn)情況:
??? ./redis-trib.rb?check 192.168.1.222:6379
三、Redis性能監(jiān)控
redis-cli本身提供monitor功能,且功能強(qiáng)大,不過monitor性能消耗很大,只應(yīng)該短期開啟調(diào)試,不能作為長期性能監(jiān)控解決方案
這里選用了redis-monitor,支持集群,python編寫,有web端
1. 安裝python環(huán)境(redis-monitor是基于python2.7的)
?? sudoapt-get install python2.7 python2.7-dev
2. 安裝build依賴包-有些pip安裝的包需要libssl和libevent編譯環(huán)境
???sudo apt-get install build-essential libssl-dev libevent-dev libjpeg-devlibxml2-dev libxslt-dev
3. 安裝pip–包管理工具
??? sudoapt-get install python-pip
4. 下載redis-monitor
?? ?git?clone?https://github.com/LittlePeng/redis-monitor.git
5. 安裝依賴
?? ?cd redis-monitor
?? ?pip?install -r requirements.txt
6. 后臺模式啟服務(wù)
?? ?cd redis-monitor/src
? ??pythonredis_monitor_daemon.py?? # 信息收集
?? ?python redis_live_daemon.py?? # web,port:8888
?? ?訪問:127.0.0.1:8888/index.html
