Redis叢集部署

來源:互聯網
上載者:User

標籤:

1.1.1redis簡介

Redis 是一個開源的使用 ANSI C 語言編寫、支援網路、可基於記憶體亦可持久化的日誌 型、 Key-Value資料庫

1.1.2redis常見使用情境

1.會話緩衝(Session Cache

 

最常用的一種使用Redis的情景是會話緩衝(session cache)。用Redis緩衝會話比其他儲存(如Memcached)的優勢在於:Redis提供持久化。當維護一個不是嚴格要求一致性的緩衝時,如果使用者的購物車資訊全部丟失,大部分人都會不高興的,現在,他們還會這樣嗎?

 

幸運的是,隨著 Redis 這些年的改進,很容易找到怎麼恰當的使用Redis來緩衝會話的文檔。甚至廣為人知的商業平台Magento也提供Redis的外掛程式。

 

2.全頁緩衝(FPC

 

除基本的會話token之外,Redis還提供很簡便的FPC平台。回到一致性問題,即使重啟了Redis執行個體,因為有磁碟的持久化,使用者也不會看到頁面載入速度的下降,這是一個極大改進,類似PHP本地FPC。

 

再次以Magento為例,Magento提供一個外掛程式來使用Redis作為全頁緩衝後端。

 

此外,對WordPress的使用者來說,Pantheon有一個非常好的外掛程式  wp-redis,這個外掛程式能協助你以最快速度載入你曾瀏覽過的頁面。

 

3.隊列

 

Reids在記憶體儲存引擎領域的一大優點是提供 list 和 set 操作,這使得Redis能作為一個很好的訊息佇列平台來使用。Redis作為隊列使用的操作,就類似於本地程式語言(如Python)對 list 的 push/pop 操作。

 

如果你快速的在Google中搜尋“Redis queues”,你馬上就能找到大量的開源項目,這些項目的目的就是利用Redis建立非常好的後端工具,以滿足各種隊列需求。例如,Celery有一個後台就是使用Redis作為broker,你可以從這裡去查看。

 

 

 

 

 1.1.4 redis版本

   redis版本:2.8.6

   作業系統centos6.5

2.0.0 單機模式安裝2.1.1軟體下載

wget http://download.redis.io/releases/redis-2.8.6.tar.gz

2.1.2安裝指令碼

以上每台機器分別按照單機版安裝redis執行指令碼redis_install.sh

指令碼如下

 

#!/bin/bashyum -y install gcc make tcl;cp redis-2.8.6.tar.gz /usr/local/redis-2.8.6.tar.gz;cd /usr/local/;tar -xvf redis-2.8.6.tar.gz;cd redis-2.8.6;make;make test;mkdir  -p  /bestpayserver/data/redis;mkdir  -p  /bestpayserver/log/;sed -i ‘s/^daemonize no/daemonize yes/g‘  redis.confsed -i ‘s/^port 6379/port 16379/g‘ redis.confsed -i ‘s/^logfile ""/logfile \/bestpayserver\/log\/redis.log/g‘ redis.confsed -i ‘s/^dir .\//dir \/bestpayserver\/data\/redis/g‘ redis.conf

  

 

 

2.1.3 軟體啟動
   # cd  /usr/local/redis-2.8.6/src   # ./redis-server  /usr/local/redis-2.8.6/redis.conf

  

2.1.4 查看redis進程
# ps -aux |grep redisWarning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQroot     14134  0.0  0.9 137348  9544 ?        Ssl  10:18   0:18 ./redis-server *:16379                         root     25042  0.0  0.0 103256   828 pts/0    S+   20:35   0:00 grep redis

  

 

2.1.5 命令測試

         進入用戶端:

         # cd  /usr/local/redis-2.8.6/src         # ./redis-cli –p 16379         set 測試         redis 127.0.0.1:16379> set hello world         OK <---成功         get 測試         redis 127.0.0.1:16379> get hello         "world" <---成功

  

 

2.2 叢集監控搭建2.2.1. 機器準備

   主master:192.168.161.233

   從1slave:192.168.161.234

   從2slave:192.168.161.235

   監控機sentinel:192.168.161.236

 

2.2.2拓撲圖

2.2.3 slave 配置
# cd  /usr/local/redis-2.8.6# echo "slaveof 192.168.161.233 16379" >> redis.conf

  

Master上查看叢集狀態

[[email protected] src]# ./redis-cli -h 192.168.161.233 -p 16379 info Replicatio

Slave上查看叢集狀態

[[email protected] src]# ./redis-cli -h 192.168.161.235 -p 16379 info Replication

2.2.4sentinel監控機配置
# cd  /usr/local/redis-2.8.6# vim sentinel.conf

  

修改一下配置

sentinel monitor mymaster  192.168.161.233  16379  1

  

其中mymaster為自訂的master名稱,後面為master的IP,連接埠號碼,最後面的1表示有一個sentinel監控。

   Redis主從系統,除了做資料冗餘,開可以做高可用性災備。Reids提供了Sentinel工具來監控各Master的狀態,如果Master異常,則會做主從切換,將slave作為master,將master作為slave。主從切換之後,master_redis.conf、slave_redis.conf和sentinel.conf的內容都會發生改變。master_redis.conf中會多了一句slaveof的配置,sentinel.conf的監控目標也隨之調換,這一點要注意。

啟動監控機:

#./redis-server /usr/local/redis-2.8.6/sentinel.conf --sentinel &

效果如下:

在master上查看監控狀態

# ./redis-cli -h 192.168.161.236 -p 26379 info Sentinel

  

效果如下:

 

在master  用redis客戶斷 上查看監控機上 slave狀態  

# ./redis-cli -h 192.168.161.236 -p 26379  sentinel slaves mymaster

3.0.0總結3.0.1 主要功能

Redis-Sentinel是Redis官方推薦的高可用性(HA)解決方案,當用Redis做Master-slave的高可用方案時,假如master宕機了,Redis本身(包括它的很多用戶端)都沒有實現自動進行主備切換,而Redis-sentinel本身也是一個獨立啟動並執行進程,它能監控多個master-slave叢集,發現master宕機後能進行自懂切換。

它的主要功能有以下幾點

不時地監控redis是否按照預期良好地運行;

如果發現某個redis節點運行出現狀況,能夠通知另外一個進程(例如它的用戶端);

能夠進行自動切換。當一個master節點不可用時,能夠選舉出master的多個slave(如果有超過一個slave的話)中的一個來作為新的master,其它的slave節點會將它所追隨的master的地址改為被提升為master的slave的新地址

 

3.0.2 Sentinel支援叢集

很顯然,只使用單個sentinel進程來監控redis叢集是不可靠的,當sentinel進程宕掉後(sentinel本身也有單點問題,single-point-of-failure)整個叢集系統將無法按照預期的方式運行。所以有必要將sentinel叢集,這樣有幾個好處:

即使有一些sentinel進程宕掉了,依然可以進行redis叢集的主備切換;

如果只有一個sentinel進程,如果這個進程運行出錯,或者是網路堵塞,那麼將無法實現redis叢集的主備切換(單點問題);

如果有多個sentinel,redis的用戶端可以隨意地串連任意一個sentinel來獲得關於redis叢集中的資訊。

 

Redis叢集部署

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.