Redis的使用--(一)集群的搭建


主題詞:負載均衡高可用、redis集群
  • 需求:負載均衡高可用的概念

    1. 什么是負載均衡高可用

Nginx一般用作負載均衡服務器,可見處於網絡中非常重要的位置,一旦Nginx服務器宕機無法提供服務,那么將影響嚴重。所以需要負載均衡高可用。

高可用——主從備份

  1. keepalived+nginx實現主從備份

Keepalived的作用是檢測服務器的狀態,如果有一台web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常后Keepalived自動將服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的服務器。

  1. 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協議的。

  1. 搭建過程可參考《keepalived權威指南中文.pdf》

    • 需求:完成redis集群的搭建
  2. 了解集群和主從的區別

  3. redis集群基本概念

redis集群的詳細貼子:http://blog.csdn.net/sanwenyublog/article/details/52942236

redis集群中至少應該有三個節點。要保證集群的高可用,每個節點需要有一個備份機。因此redis集群至少需要六台服務器

這里搭建的是偽分布模式,可以使用一台服務器運行6個redis實例,修改redis的端口號為7001-7006

相關算法:http://blog.csdn.net/u014490157/article/details/52244378

  1. redis集群的搭建

    • 安裝ruby環境
yum install ruby
yum install rubygems
  • 安裝ruby腳本運行使用的包
# 離線安裝
gem install redis-3.0.7.gem
# 在線安裝
gem install redis -v 3.0.7
  • 創建6台服務器,將6台的端口號修改7001——7006
1、將端口修改為7001-7006
2、將集群前面#注釋去除 cluster-enabled yes
3、如果是雲服務器,例如端口是7001,則將700117001加入安全組
  • 清除每一個節點的緩存數據
bin/redis-cli -p 7002 -c
127.0.0.1:7002> flushall
OK
127.0.0.1:7002> cluster reset
OK
127.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 -c
127.0.0.1:7003> flushall
OK
127.0.0.1:7003> cluster reset
OK
127.0.0.1:7003> quit
  • 自定義shell腳本啟動6台服務器

cd /usr/local/redis-cluster/redis01
bin/redis-server redis.conf
cd ../redis02
bin/redis-server redis.conf
cd ../redis03
bin/redis-server redis.conf
cd ../redis04
bin/redis-server redis.conf
cd ../redis05
bin/redis-server redis.conf
cd ../redis06
bin/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
  • 集群創建成功的兩張截圖

image
image

  • 客戶端如何連接集群中的機器
# -p 端口號
# -c 開啟reidis cluster模式,連接redis cluster節點時候使用
bin/redis-cli -p 7004 -c
  • 往集群節點存入數據進行測試,查看數據到底存入到哪個節點

redis集群中內置了16384個哈希槽,當需要往集群中存放鍵值對的時候,redis先對key使用CRC16算法算出一個結果,然后拿這個結果對16384求余,這樣每個key都會對應一個編號為0-16383之間的哈希槽,redis會根據節點數量大致均等的將哈希槽映射到不同的節點上


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com