目錄
?一、實驗
1.環境
2. 啟動Redis服務
3.Predixy 升級代理 Redis-cluster 集群
二、問題
1.?Predixy進行set操作報錯
2.如何創建腳本啟動predixy
3.Redis代理對比
?一、實驗
1.環境
(1)主機
表1? 主機
系統 | 版本 | 節點 | 軟件 | IP | 備注 |
CentOS | 7.9 | Redis0 | Predixy | 192.168.204.40 | ? ?Redis代理 |
Redis | 第一個Redis實例 | ||||
Redis1 | Redis | 192.168.204.41 | 第二個Redis實例 | ||
Redis2 | Redis | 192.168.204.42 | 第三個Redis實例 | ||
Redis3 | Redis | 192.168.204.43 | 第四個Redis實例 | ||
Redis4 | Redis | 192.168.204.44 | 第五個Redis實例 | ||
Redis5 | Redis | 192.168.204.45 | 第六個Redis實例 |
?(2)Termius連接
主機
列表
2. 啟動Redis服務
(1)Redis集群部署
可以參考本人博客:
數據庫應用:Redis主從復制、哨兵、cluster集群-CSDN博客
(2)所有節點啟動Redis服務
cd /opt/redis-5.0.7/
redis-server redis.conf #啟動redis節點
Redis0
Redis1
Redis2
Redis3
Redis4
Redis5
(3)策略
Redis0部署Predixy,以下操作均在Redis0上操作。
(4)配置編譯環境
yum install libstdc++-static -y
yum -y install gcc automake autoconf libtool make
yum install gcc gcc-c++
(4)下載wget工具
yum install wget -y
3.Predixy 升級代理 Redis-cluster 集群
(1) 查閱
https://github.com/joyieldInc/predixy
最新版為7.0.1
https://github.com/joyieldInc/predixy/releases/download/7.0.1/predixyFreeEdition-7.0.1-amd64-linux.tar.gz
1.0.5版本:
https://github.com/joyieldInc/predixy/releases/download/1.0.5/predixy-1.0.5-bin-amd64-linux.tar.gz
(3)下載
wget https://github.com/joyieldInc/predixy/archive/1.0.5.tar.gz
(4)解壓
tar -zxvf 1.0.5.tar.gz
(5)查看
cd predixy-1.0.5/
ls
(6)移動目錄
mv predixy-1.0.5/ /usr/local/src
查看
cd /usr/local/src;ls
(7) 編譯
cd predixy-1.0.5/
make -j4
(8)復制編譯文件
進入src目錄,把編譯好的predixy拷貝到/usr/local/bin下
cd src && cp predixy /usr/local/bin/
查看
ls
(9)復制配置文件
把src下的predixy-1.0.5/conf/下的所有配置文件拷貝/usr/local/bin下
cp /usr/local/src/predixy-1.0.5/conf/* /usr/local/bin
(10)修改cluster.conf?配置文件
修改 /usr/local/bin 目錄下cluster.conf?
vim /usr/local/bin/cluster.conf
修改前:
修改后:
ClusterServerPool {# 連接集群中redis的密碼Password 123456789MasterReadPriority 60StaticSlaveReadPriority 50DynamicSlaveReadPriority 50RefreshInterval 1ServerTimeout 1ServerFailureLimit 10ServerRetryTimeout 1KeepAlive 120Servers {+ 192.168.204.40:6379+ 192.168.204.41:6379+ 192.168.204.42:6379+ 192.168.204.43:6379+ 192.168.204.44:6379+ 192.168.204.45:6379}
}
(11)修改predixy.conf 配置文件
修改 /usr/local/bin 目錄下predixy.conf 文件
vim /usr/local/bin/predixy.conf
修改前:(默認predixy代理連接端口號7617)
修改后:(放開Cluster注釋)
找到SERVERS模塊,選用其中一種放開注釋(Sentinel和Cluster只能選其一),放開sentinel的同時還要注釋掉try
(12)修改auth.conf配置文件
修改 /usr/local/bin 目錄下auth.conf 文件,predixy代理連接密碼為 123456789
vim /usr/local/bin/auth.conf
修改前:
修改后:
Authority {# 連接代理的密碼Auth "123456789" {Mode write}
}
(13)啟動predixy
1)首先進入目錄
cd /usr/local/bin2)啟動
nohup predixy predixy.conf > /tmp/predixy.log 2>&1 &;3)查看日志:tail -f /tmp/predixy.log
進入目錄啟動
連接代理
(14)連接predixy 代理,進行第一批次操作redis數據
redis-cli -h 192.168.204.40 -p 7617 -a 123456789#執行set操作(寫入鍵值對)
127.0.0.1:7617> set cicd 123
OK
127.0.0.1:7617> set devops 123
OK
127.0.0.1:7617> set kubernetes 123
OK
(15)分別進入Redis實例
redis-cli -p 6379
keys *
exit
Redis0
Redis1? (name為之前數據,后續出現可忽略)
Redis2?
Redis3
Redis4
Redis5
(16)連接predixy 代理,進行第二批次操作redis數據
redis-cli -h 192.168.204.40 -p 7617 -a 123456789#執行set操作(寫入鍵值對)
127.0.0.1:7617> set jenkins 123
OK
127.0.0.1:7617> set gitlab 123
OK
127.0.0.1:7617> set nexus 123
OK
127.0.0.1:7617> set sonarqube 123
OK
127.0.0.1:7617> set harbor 123
OK
127.0.0.1:7617> set argocd 123
OK
(17)分別進入Redis實例
redis-cli -p 6379
keys *
exit
?Redis0
Redis1?
Redis2?
Redis3
Redis4
Redis5
(17)連接predixy 代理,進行第三批次操作redis數據
redis-cli -h 192.168.204.40 -p 7617 -a 123456789#執行set操作(寫入鍵值對)
127.0.0.1:7617> set one 1
OK
127.0.0.1:7617> set two 2
OK
127.0.0.1:7617> set three 3
OK
127.0.0.1:7617> set four 4
OK
127.0.0.1:7617> set five 5
OK
127.0.0.1:7617> set six 6
OK
(18)分別進入Redis實例
redis-cli -p 6379
keys *
exit
?Redis0
Redis1?
Redis2?
Redis3
Redis4
Redis5
(19)統計
表2 寫入鍵值對分布情況統計
批次 | Redis0 | Redis1 | Redis2 | Redis3 | Redis4 | Redis5 |
第一批次 (分布) | devops | cicd | cicd | kubernetes | ||
第二批次 (分布) | jenkins | jenkins gitlab nexus sonarqube | arogcd | harbor | ||
第三批次 (分布) | three | four | one four? five six | two |
二、問題
1.?Predixy進行set操作報錯
(1)報錯
READONLY You can't write against a read only replica
(2)原因分析
查看日志
(3)解決方法
1)第一種方法:修改 redis.conf 配置文件(永久生效)
修改 redis.conf 配置文件中的參數 slave-read-only yes ,將 yes 修改為 no ;
然后保存并重啟 redis 服務,此刻從服務器就具備了 讀寫權限。(注意:此方法必須重啟 Redis 服務,才能使配置生效。)2)第二種方法:redis-cli 命令行中使用 config set 命令修改
在從Redis從服務器客戶端命令行中 (redis-cli),通過 config set slave-read-only no 進行設置,立即生效,不需要重啟 Redis 服務。(注意:若Redis從服務器重新啟動,之前的設置參數就會失效,又會出現 redis 從服務器只有讀權限。)
這里采用第二種方法:
redis-cli -p 6379127.0.0.1:6379> config get slave-read-only
1) "slave-read-only"
2) "yes"
127.0.0.1:6379> config set slave-read-only no
OK
127.0.0.1:6379> config get slave-read-only
1) "slave-read-only"
2) "no"
127.0.0.1:6379>
2.如何創建腳本啟動predixy
(1)命令
#!/bin/bash
cd /usr/local/bin
nohup predixy predixy.conf > /tmp/predixy.log 2>&1 &
echo "======== success ========"
3.Redis代理對比
(1)對比