鯤鵬服務(wù)器Redis集群搭建
Redis是一個使用ANSI C語言編寫的開源key-value內(nèi)存數(shù)據(jù)庫系統(tǒng),Redis支持字符串(String),?哈希(Hash),?列表(list),?集合(sets)?和 有序集合(sorted sets)等數(shù)據(jù)結(jié)構(gòu)類型,并提供多種語言的API。
Redis 在3.0版本前只支持單實例模式,雖然支持主從模式、哨兵模式部署來解決單點故障,但是現(xiàn)在互聯(lián)網(wǎng)企業(yè)動輒大幾百G的數(shù)據(jù),可完全是沒法滿足業(yè)務(wù)的需求,所以,Redis 在 3.0 版本以后就推出了集群模式。
Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 個 slot,每個 Redis 實例負責其中一部分 slot 。集群中的所有信息(節(jié)點、端口、slot等),都通過節(jié)點之間定期的數(shù)據(jù)交換而更新。Redis 客戶端可以在任意一個 Redis 實例發(fā)出請求,如果所需數(shù)據(jù)不在該實例中,通過重定向命令引導(dǎo)客戶端訪問所需的實例。
由于集群至少需要6個節(jié)點(3主3從模式),為了節(jié)約服務(wù)器資源,本文只用了一臺鯤鵬服務(wù)器進行模擬演示,和實際生產(chǎn)環(huán)境的集群搭建沒本質(zhì)區(qū)別。本文采用Redis-5.0.5版本進行,安裝指導(dǎo)參考:https://support.huaweicloud.com/prtg-kunpengmdw/redis_01_0001.html
1? ? ? ?搭建準備
華為云購買一臺鯤鵬服務(wù)器
本文以云服務(wù)器KC1實例搭建,云服務(wù)器配置如表1-1所示。
表1-1?云服務(wù)器配置
項目
說明
規(guī)格
kc1.large.2 | 2vCPUs | 4GB
磁盤
系統(tǒng)盤:高IO(40GB)
表1-2?CentOS操作系統(tǒng)要求
項目
說明
-
CentOS
7.6
在公共鏡像中已提供。
Kernel
4.14.0-115
在公共鏡像中已提供。
2?????? 安裝Redis
cd?/opt wget?http://download.redis.io/releases/redis-4.0.9.tar.gz tar?-zxvf?redis-4.0.9.tar.gz cd?redis-4.0.9 make?-j4 make?install
3?????? 創(chuàng)建和啟動多個Redis節(jié)點
Redis要求 一主一從的搭配至少要 六個節(jié)點,形成三對主從,我們需要修改配置文件,然后分別用不同的Redis配置文件啟動Redis即可。
1)?? 創(chuàng)建文件夾
計劃集群中 Redis 節(jié)點的端口號為?9001-9006?,端口號即集群下各實例文件夾。數(shù)據(jù)存放在?端口號/data?文件夾中
mkdir?/opt/redis-cluster cd?redis-cluster/ mkdir?-p?9001/data?9002/data?9003/data?9004/data?9005/data?9006/data
2)?? 拷貝和修改配置文件
如下操作節(jié)點9001,其他幾個節(jié)點做類似操作。
cp?/opt/redis-4.0.9/redis.conf?/opt/redis-cluster/9001
修改?redis.conf?配置和單點唯一區(qū)別是下圖部分,其余還是常規(guī)的這幾項:
port?9001?????????????#每個節(jié)點的端口號 daemonize?yes???????????#?redis后臺運行 bind?127.0.0.1???????????#默認綁定本地地址,導(dǎo)致其它地方不可遠程訪問? bind?xx.xx.xx.xx??????????#修改為局域網(wǎng)中的IP地址,其他節(jié)點可通過局域網(wǎng)IP訪問 dir?/opt/redis-cluster/9001/data/?#數(shù)據(jù)文件存放位置 pidfile?/var/run/redis_9001.pid??#pid?9001和port要對應(yīng) cluster-enabled?yes????????#啟動集群模式 cluster-config-file?nodes9001.conf????#9001和port要對應(yīng) cluster-node-timeout?15000???????#超時時間 appendonly?yes?????????????#開啟AOF日志
3)?? 啟動各個Redis節(jié)點
redis-server?/opt/redis-cluster/9001/redis.conf redis-server?/opt/redis-cluster/9002/redis.conf redis-server?/opt/redis-cluster/9003/redis.conf redis-server?/opt/redis-cluster/9004/redis.conf redis-server?/opt/redis-cluster/9005/redis.conf redis-server?/opt/redis-cluster/9006/redis.conf
可以檢查一下是否啟動成功:ps -el | grep redis
4?????? 搭建集群
redis-cli?–cluster?create?xx.xx.xx.xx:9001?xx.xx.xx.xx:9002?xx.xx.xx.xx:9003?xx.xx.xx.xx:9004?xx.xx.xx.xx:9005?xx.xx.xx.xx:9006?--cluster-replicas?1 redis-cli?--cluster?help?#查看操作集群的命令幫助
說明:
(1)--replicas 1?表示主從復(fù)制比例為 1:1,即一個主節(jié)點對應(yīng)一個從節(jié)點;然后,默認給我們分配好了每個主節(jié)點和對應(yīng)從節(jié)點服務(wù),以及 solt 的大小,因為在 Redis 集群中有且僅有 16383 個 solt ,默認情況會給我們平均分配,當然你可以指定,后續(xù)的增減節(jié)點也可以重新分配。
(2) 搭建Redis集群的教程很多,介紹的也很全面,但是大多數(shù) 還是使用Ruby腳本的版本,安裝Ruby本身也不是一件簡單的事情,redis-5.0.0之后已經(jīng)將?redis-trib.rb 腳本的功能全部集成到 redis-cli之中了
5?????? 測試集群
1)???????? 依然是通過客戶端命令連接上,通過集群命令看一下狀態(tài)和節(jié)點信息等。
/usr/local/redis-cluster/bin/redis-cli?-c?-h?192.168.119.131?-p?9001 cluster?info cluster?nodes
通過命令,可以詳細的看出集群信息和各個節(jié)點狀態(tài),主從信息以及連接數(shù)、槽信息等。
2)???????? 設(shè)置操作
當我們?set a hello時,出現(xiàn)了?Redirected to slot?信息并自動連接到了9003節(jié)點。這也是集群的一個數(shù)據(jù)分配特性
進行 讀寫操作時會根據(jù)?key計算出的slot,重新定位到 擁有該slot的節(jié)點,執(zhí)行對應(yīng)的命令。只有 Master節(jié)點擁有 slot,讀寫都在 Master 節(jié)點進行
鯤鵬 Redis
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。