最近專案即將上線,由於人手問題,各種研究運維相關知識,這兩天剛弄完redis叢集部署的問題,跟大家嘮嘮。
一、Redis安裝
*以下均是在Linux環境下執行,系統ubuntu16.04
1. 下載穩定版
sudo wget http://download.redis.io/redis-stable.tar.gz
複製程式碼
2. 解壓
sudo tar -zxvf redis-stable.tar.gz
複製程式碼
3. 如果沒有GCC編輯器就裝一下
sudo apt-get install gcc
複製程式碼
4. 編輯、安裝
cd redis-stable
make
make install PREFIX=安裝目錄
複製程式碼
5. Redis配置
cd 步驟4安裝目錄/bin
cp redis-stable目錄/redis.conf ./
# 如果就是想起個簡單的redis服務,到這裡就結束了
針對redis cluster需要修改的配置(實際使用去掉註釋):
bind IP地址 # 為了外網訪問,原為127.0.0.1
port 6379 # 埠號
daemonize yes # 後臺模式
# 如果要設定密碼的話,masterauth和requirepass都要設定,否則主從切換時,會有授權問題
masterauth 密碼
requirepass 密碼(必須一致)
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
複製程式碼
6. 啟服務
如果想在一臺機器上啟多個服務,可以複製多個reids.conf,修改port,並且要修改日誌檔名稱
也可以粗暴的複製多個bin資料夾,只改port就行了
./redis-server redis.conf
複製程式碼
二、Redis叢集
目前,redis叢集解決方案有兩個:
1. Twemproxy
這是Twitter推出的解決方案,簡單的說就是上層加個代理負責分發,屬於client端叢集方案,目前大多數應用者都在採用的解決方案。
會用到LVS、Twemproxy、Keepalived、Redis主從模式,感覺太麻煩了,而且沒有線上擴容節點能力,公司經濟能力有限,沒法一開始就預留出足夠的節點,後來發現了官推的redis cluster方案,就放棄了Twemproxy。
2. Redis Cluster
Redis3.0之後,官方推出的server端叢集方案
優點:
(1) 官方解決方案
(2) 可以線上水平擴充套件(Twemproxy的一大弊端就是不支援線上擴容節點)
(3) 客戶端直連,系統瓶頸更少
(4) 無中心架構
(5) 支援資料分片
複製程式碼
根據需求,最終解決方案選擇:redis cluster +主從模式
下面介紹一下配置
1. 安裝ruby環境
sudo apt-get install ruby
sudo apt-get install rubygems
sudo gem install redis # ruby的redis客戶端
複製程式碼
2. 如果要設定密碼,這裡要修改一些配置
執行 gem environment 找到 INSTALLATION DIRECTORY
cd到上面路徑+/gems/redis-xxx/lib/redis/
vim client.rb
password => "密碼" #修改password為指定密碼
複製程式碼
3. 還有另一種設定密碼的方式
最開始redis不要設定密碼,待叢集起來之後,通過config命令挨個redis服務修改配置
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表示一從,本案例三主三從
複製程式碼
可以通過如下檢查各節點情況:
./redis-trib.rb check 192.168.1.222:6379
複製程式碼
三、Redis效能監控
redis-cli本身提供monitor功能,且功能強大,不過monitor效能消耗很大,只應該短期開啟除錯,不能作為長期效能監控解決方案
這裡選用了redis-monitor,支援叢集,python編寫,有web端
1. 安裝python環境(redis-monitor是基於python2.7的)
sudo apt-get install python2.7 python2.7-dev
複製程式碼
2. 安裝build依賴包-有些pip安裝的包需要libssl和libevent編譯環境
sudo apt-get install build-essential libssl-dev libevent-dev libjpeg-devlibxml2-dev libxslt-dev
複製程式碼
3. 安裝pip–包管理工具
sudo apt-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. 後臺模式啟服務
cd redis-monitor/src
pythonredis_monitor_daemon.py # 資訊收集
python redis_live_daemon.py # web,port:8888
訪問:127.0.0.1:8888/index.html
複製程式碼