天天看點

在Linux部署Redis代理Predixy實作資料分片前言準備工作安裝步驟配置環境變量啟動/停止測試參考

文章目錄

  • 前言
  • 準備工作
  • 安裝步驟
    • 下載下傳解壓
  • 配置環境變量
    • 修改配置
  • 啟動/停止
  • 測試
  • 參考

前言

本文以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 端口
在Linux部署Redis代理Predixy實作資料分片前言準備工作安裝步驟配置環境變量啟動/停止測試參考
  • 使用 sentinel.conf 配置
在Linux部署Redis代理Predixy實作資料分片前言準備工作安裝步驟配置環境變量啟動/停止測試參考

編輯引入的配置追加下面内容(其實是複制配置中注釋的模闆進行了修改):

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
           
在Linux部署Redis代理Predixy實作資料分片前言準備工作安裝步驟配置環境變量啟動/停止測試參考

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 *
           
在Linux部署Redis代理Predixy實作資料分片前言準備工作安裝步驟配置環境變量啟動/停止測試參考
在Linux部署Redis代理Predixy實作資料分片前言準備工作安裝步驟配置環境變量啟動/停止測試參考

通過 key 前加個 {tag} 可以讓資料分片到同一個 Redis 服務。

set {test}k6 k6
set {test}key6 key6
           

參考

GitHub Twemproxy

GitHub Predixy

在Linux部署Redis主從和哨兵叢集

繼續閱讀