文章目錄
- 前言
- 準備工作
- 安裝步驟
-
- 下載下傳解壓
- 配置環境變量
-
- 修改配置
- 啟動/停止
- 測試
- 參考
前言
本文以predixy-1.0.5為例,講述 Redis 代理 Predixy 安裝過程。
Predixy 是一款高性能全特征 Redis 代理,支援 Redis-sentinel 和 Redis-cluster。作者拿其它常用代理做了 性能測評,Predixy 在各個次元性能都是最優的,與其他代理的 功能對比。
我們可以通過取模、随機、一緻性哈希等算法将資料分散在多個 Redis 服務來實作水準擴充。但是用戶端直連就需要跟每個 Redis 服務産生連接配接,而代理的主要作用就是為了避免這一問題。用戶端連接配接代理進行操作,讓代理通過分片算法來操作對應的 Redis 服務。
準備工作
本文伺服器 Linux CentOS 64 7.5 版本。
開始前已經準備好了兩套主從叢集,可以參考 在Linux部署Redis主從和哨兵叢集:
- mymaster【6380(從),6381(從),6382(從)】
- mymaster2【6383(主),6384(從),6384(從)】
以及同時監控這兩套主從叢集的哨兵【26380,26381,26382】
安裝步驟
下載下傳解壓
由于 Predixy 需要 C++11 編譯器支援,這裡選擇跳過編譯,直接在 GitHub Predixy Releases 頁面下載下傳最新編譯後的包。
echo "建立單獨目錄" > /dev/null
mkdir -p ~/soft/redis/
echo "下載下傳包,如果太慢其他方式下載下傳後上傳到這裡也可以" > /dev/null
wget -P ~/soft/redis/ https://github.com/joyieldInc/predixy/releases/download/1.0.5/predixy-1.0.5-bin-amd64-linux.tar.gz
echo "解壓到自己指定目錄" > /dev/null
tar -xf ~/soft/redis/predixy-1.0.5-bin-amd64-linux.tar.gz -C /opt/soft/
配置環境變量
echo "追加PREDIXY_HOME環境變量" > /dev/null
echo '
export PREDIXY_HOME=/opt/soft/predixy-1.0.5
export PATH=$PATH:$PREDIXY_HOME/bin' >> /etc/profile
echo "使環境變量生效" > /dev/null
source /etc/profile
修改配置
編輯主配置修改下面資訊,詳細配置方式可以參考 GitHub Predixy 中文配置文檔。
vim /opt/soft/predixy-1.0.5/conf/predixy.conf
- 讓 Predixy 綁定本機 7617 端口
- 使用 sentinel.conf 配置
編輯引入的配置追加下面内容(其實是複制配置中注釋的模闆進行了修改):
vim /opt/soft/predixy-1.0.5/conf/sentinel.conf
SentinelServerPool {
Databases 16
Hash crc16
HashTag "{}"
Distribution modula
MasterReadPriority 60
StaticSlaveReadPriority 50
DynamicSlaveReadPriority 50
RefreshInterval 1
ServerTimeout 1
ServerFailureLimit 10
ServerRetryTimeout 1
KeepAlive 120
Sentinels {
+ 127.0.0.1:26380
+ 127.0.0.1:26381
+ 127.0.0.1:26382
}
Group mymaster {
}
Group mymaster2 {
}
}
上面 Sentinels 是哨兵服務;Group 後面對應的是哨兵配置裡的 <主節點别名>,因為哨兵監控了兩套主從叢集,這裡配置兩個 Group 代表會根據算法将操作分散到兩套叢集中。下面是 Sentinel 跟上面相關的 Sentinel 監控主節點的配置:
# sentinel monitor <主節點别名> <主節點IP> <主節點端口号> <n個哨兵認為主節點主觀下線,才會将主節點标記為客觀下線>
sentinel monitor mymaster 127.0.0.1 6380 2
sentinel monitor mymaster2 127.0.0.1 6383 2
啟動/停止
啟動 Predixy,通過後面的啟動日志可以看到代理擷取到了哨兵和主從節點位址。
predixy /opt/soft/predixy-1.0.5/conf/predixy.conf
Predixy 隻負責一套主從叢集可以使用 KEYS、WATCH、MULTI 等聚合操作,讓 Group 配置隻有一個就可以了,這樣資料也會分片到統一個主從叢集;但是負責多個主從叢集的時候不支援聚合操作,使用會報錯。
測試
# 連接配接 Predixy
redis-cli -p 7617
# 通過代理寫入兩個資料
set k5 k5
set key5 key5
然後可以看到資料分散到了兩個不同主從叢集。
# redis-cli -p 6380
redis-cli -p 6380
keys *
通過 key 前加個 {tag} 可以讓資料分片到同一個 Redis 服務。
set {test}k6 k6
set {test}key6 key6
參考
GitHub Twemproxy
GitHub Predixy
在Linux部署Redis主從和哨兵叢集