Redis的使用:叢集的搭建詳情,redis叢集搭建詳情
主題詞:負載平衡高可用、redis叢集
需求:負載平衡高可用的概念
什麼是負載平衡高可用
Nginx一般用作負載平衡伺服器,可見處於網路中非常重要的位置,一旦Nginx伺服器宕機無法提供服務,那麼將影響嚴重。所以需要負載平衡高可用。
高可用——主從備份
keepalived+nginx實現主從備份
Keepalived的作用是檢測伺服器的狀態,如果有一台web伺服器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的伺服器從系統中剔除,同時使用其他伺服器代替該伺服器的工作,當伺服器工作正常後Keepalived自動將伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工幹涉,需要人工做的只是修複故障的伺服器。
keepalived工作原理
keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。
虛擬路由冗餘協議,可以認為是實現路由器高可用的協議,即將N台提供相同功能的路由器組成一個路由器組,這個組裡面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在區域網路內其他機器的預設路由為該vip),master會發組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據VRRP的優先順序來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。
keepalived主要有三個模組,分別是core、check和vrrp。core模組為keepalived的核心,負責主進程的啟動、維護以及全域設定檔的載入和解析。check負責健全狀態檢查,包括常見的各種檢查方式。vrrp模組是來實現VRRP協議的。
需求:完成redis叢集的搭建
瞭解叢集和主從的區別
redis叢集基本概念
redis叢集中至少應該有三個節點。要保證叢集的高可用,每個節點需要有一個備份機。因此redis叢集至少需要六台伺服器
這裡搭建的是偽分布模式,可以使用一台伺服器運行6個redis執行個體,修改redis的連接埠號碼為7001-7006
redis叢集的搭建
安裝ruby環境
yum install rubyyum install rubygems
安裝ruby指令碼運行使用的包
# 離線安裝gem install redis-3.0.7.gem
# 線上安裝gem install redis -v 3.0.7
建立6台伺服器,將6台的連接埠號碼修改7001——7006
1、將連接埠修改為7001-70062、將叢集前面#注釋去除 cluster-enabled yes3、如果是雲端服務器,例如連接埠是7001,則將7001和17001加入安全性群組
清除每一個節點的快取資料
bin/redis-cli -p 7002 -c127.0.0.1:7002> flushallOK127.0.0.1:7002> cluster resetOK127.0.0.1:7002> quit[root@VM_241_143_centos redis02]# cd ..[root@VM_241_143_centos redis-cluster]# cd redis03[root@VM_241_143_centos redis03]# bin/redis-cli -p 7003 -c127.0.0.1:7003> flushallOK127.0.0.1:7003> cluster resetOK127.0.0.1:7003> quit
自訂shell指令碼啟動6台伺服器
cd /usr/local/redis-cluster/redis01bin/redis-server redis.confcd ../redis02bin/redis-server redis.confcd ../redis03bin/redis-server redis.confcd ../redis04bin/redis-server redis.confcd ../redis05bin/redis-server redis.confcd ../redis06bin/redis-server redis.conf
自訂shell指令碼關閉6台伺服器交給大家來做
運行如下代碼搭建叢集環境
./redis-trib.rb create --replicas 1 10.31.152.30:7001 10.31.152.30:7002 10.31.152.30:7003 10.31.152.30:7004 10.31.152.30:7005 10.31.152.30:7006
./redis-trib.rb create --replicas 1 10.31.166.22:9001 10.31.166.22:9002 10.31.166.22:9003 10.31.166.22:9004 10.31.166.22:9005 10.31.166.22:9006
./redis-trib.rb create --replicas 1 119.29.181.95:7001 119.29.181.95:7002 119.29.181.95:7003 119.29.181.95:7004 119.29.181.95:7005 119.29.181.95:7006
叢集建立成功的兩張
用戶端如何串連叢集中的機器
# -p 連接埠號碼# -c 開啟reidis cluster模式,串連redis cluster節點時候使用bin/redis-cli -p 7004 -c
往叢集節點存入資料進行測試,查看資料到底存入到哪個節點
redis叢集中內建了16384個雜湊槽,當需要往叢集中存放索引值對的時候,redis先對key使用CRC16演算法算出一個結果,然後拿這個結果對16384求餘,這樣每個key都會對應一個編號為0-16383之間的雜湊槽,redis會根據節點數量大致均等的將雜湊槽映射到不同的節點上