Linux服務升級:Predixy 升級代理 Redis-cluster 集群

目錄

?一、實驗

1.環境

2. 啟動Redis服務

3.Predixy 升級代理 Redis-cluster 集群

二、問題

1.?Predixy進行set操作報錯

2.如何創建腳本啟動predixy

3.Redis代理對比


?一、實驗

1.環境

(1)主機

表1? 主機

系統版本節點軟件IP備注
CentOS7.9Redis0Predixy192.168.204.40

? ?Redis代理

Redis第一個Redis實例
Redis1Redis192.168.204.41第二個Redis實例
Redis2Redis192.168.204.42第三個Redis實例
Redis3Redis192.168.204.43第四個Redis實例
Redis4Redis192.168.204.44第五個Redis實例
Redis5Redis192.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

Redis1Redis2Redis3Redis4Redis5

第一批次

(分布)

devopscicdcicdkubernetes

第二批次

(分布)

jenkins

jenkins

gitlab

nexus

sonarqube

arogcdharbor

第三批次

(分布)

threefour

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)對比

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15972.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15972.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15972.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Springboot開發 -- Postman 調試類型詳解

引言 在 Spring Boot 應用開發過程中,接口測試是必不可少的一環。Postman 作為一款強大的 API 開發和測試工具,可以幫助開發者輕松構建、測試和管理 HTTP 請求。本文將為大家介紹如何在 Spring Boot 開發中使用 Postman 進行接口測試。 一、準備工作 安…

C/C++|malloc分配內存詳解

看本節前,希望讀者有linux內存分布的基本概念,可以閱讀這篇文章: 進程虛擬地址空間和函數調用棧 在本節中希望讀者可以一口氣閱讀完所有內容。 本博客內容全部來自小林coding:malloc 是如何分配內存的? 這里僅為筆記記…

Python-圖片旋轉360,保存對應圖片

#Author :susocool #Creattime:2024/5/25 #FileName:turn360 #Description: 會旋轉指定的圖像文件360度,并將每個旋轉后的圖像保存到指定目錄,文件名以旋轉角度命名。 from PIL import Imagedef rotate_and_save(image_path, output_dir) :# …

Linux/Ubuntu 中安裝 ZeroTier,實現內網穿透,2分鐘搞定

相信很多人都有遠程連接家中設備的需求,如遠程連接家中的NAS、Windows等服務,所以會涉及到一個內網穿透工具的使用,如果沒有公網IP的情況下,推薦大家使用ZeroTier,這是一款強大的內網穿透工具。 mac和windows版的操作…

Nginx-狂神說

Nginx概述 公司產品出現瓶頸? 我們公司項目剛剛上線的時候,并發量小,用戶使用的少,所以在低并發的情況下,一個jar包啟動應用就夠了,然后內部tomcat返回內容給用戶。 但是慢慢的,使用我們平臺…

HTTP 各版本差異

http1.0 它的特點是每次請球和響應完畢后都會銷毀TCP 連接。同時規走前一個響應完成后才發送下一個請求。這樣做有兩個問題: 無法復用連接了。 每次請求都要創建新的TCP連接,完成三次握手和四次揮手。網絡利用率低 隊頭阻塞 如果前一個請求被某種原因阻…

K8S認證|CKA題庫+答案| 13. sidecar 代理容器日志

目錄 13、使用 sidecar 代理容器日志 CKA v1.29.0模擬系統免費下載試用: 題目: 開始操作: 1)、切換集群 2)、生成yaml文件 3)、官網找模板 4)、編輯yaml文件 5)、應用yaml…

車載電子電器架構 —— 智能座艙技術

車載電子電器架構 —— 智能座艙技術 我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 屏蔽力是信息過載時代一個人的特殊競爭力,任何消耗你的…

qt multiple definition of 報錯解決

qt編譯報了很多錯, multiple definition of xxx 原來一維設計文件ui 的問題 后來發現是pro中頭文件和cpp文件重寫了,導致重復編譯報的錯 解決方法:把重復的頭文件和cpp文件刪了就可以了。

如何解決0.1+0.2!=0.3的問題

var x 0.1; var y 0.2; var z x y // z 的結果為 0.30000000000000004 if (z 0.3) // 返回 false 可以用整數的乘除法來解決 var z (x * 10 y * 10) / 10; // z 的結果為 0.3

GEO數據挖掘-GEO背景知識+表達芯片分析思路

From生物技能樹 GEO數據挖掘第一節 (pipeline) 文章目錄 1.圖表分析2.GEO背景介紹及分析思路3.代碼分析流程4.復雜數據分析理論知識1.數據從哪里來2.有什么類型的數據可挖掘3.如何篩選基因(分析方法)在這里插入圖片描述 圖表介紹1…

Jenkins + github 自動化部署配置

1 Jenkins安裝 AWS EC2安裝Jenkins:AWS EC2 JDK11 Jenkins-CSDN博客 AWS EC2上Docker安裝Jenkins:https://blog.csdn.net/hhujjj2005/article/details/139078402 2 登錄jenkins http://192.168.1.128:8080/ $ docker exec -it d1851d9e3386 /bin/ba…

Multi-objective reinforcement learning approach for trip recommendation

Multi-objective reinforcement learning approach for trip recommendation A B S T R A C T 行程推薦是一項智能服務,為游客在陌生的城市提供個性化的行程規劃。 它旨在構建一系列有序的 POI,在時間和空間限制下最大化用戶的旅行體驗。 將候選 POI 添…

【Shell】sed編輯器實例

sed是用來解析和轉換文本的工具,它使用簡單,是簡潔的程序設計語言。 sed編輯器 (一) sed編輯器基礎1. 簡介2. sed的模式空間 (二)基本的sed編輯命令(三)sed命令實例1. 向文件中添加或…

MFC GDI 繪圖模式、映射模式、畫筆、筆、字體

一 GDI 繪圖模式(RoP2 Mode) 在使用VC MFC進行圖形程序編程時,常會用到GDI繪圖指令,而要做到繪圖時有橡皮筋動態效果,就需設置GDI繪圖模式。GDI繪圖模式有多種,如下: 常用R2_NOT模式來實…

Linux|操作系統|如何下載各個版本的centos操作系統

前言: centos做為一個現在比較常用的Linux社區版本,還是比較受歡迎的,那么,如何下載centos的安裝包,也就是centos的操作系統呢? 首先,我們應該知道硬件底層有aarch64,ppc64&#x…

【限免】短時傅里葉變換時頻分析【附MATLAB代碼】

來源:微信公眾號:EW Frontier 簡介 一種能夠同時對信號時域和頻域分析的方法——短時傅里葉變換(STFT),可以在時頻二維角度準確地描述信號 的時間、頻域的局部特性,與其他算法不同,通過該算法可…

【Elasticsearch】Centos7安裝Elasticsearch、kibana、IK分詞

目錄 本文安裝包下載地址注意安裝elasticsearch1.上傳文件2.解壓elasticsearch-6.3.1.tar.gz3.開啟遠程連接權限4.修改其他配置[root用戶操作]5.重啟虛擬機6.啟動es7.外部訪問 安裝kibana-61.解壓2.配置3.啟動kibana4.訪問5.在開發工具中做數據的增刪改查操作 安裝IK分詞1.wind…

簡述什么是Vue的自定義指令

Vue的自定義指令是Vue框架提供的一種擴展機制,允許開發者注冊自己的指令,從而封裝一些DOM操作或添加額外的功能。這些自定義指令可以在Vue模板中像內置指令(如v-for、v-if等)一樣使用,但提供了更大的靈活性和自定義性。…

QML與C++交互的兩種注冊方法比較(rootContext 和 qmlRegisterType)

在main.cpp實例化對象調用的過程中&#xff0c;注冊是常見的操作之一&#xff0c;目前接觸到的方法有兩種&#xff0c;兩者的目的和使用方式是不同的&#xff0c;通過代碼可以直觀的 看出來&#xff1a; int main(int argc, char *argv[]) { #if QT_VERSION < QT_VERSION_C…