Redis集羣--Redis集羣之哨兵模式

echo編輯整理,歡迎轉載,轉載請聲明文章來源。歡迎添加echo微信(微信號:t2421499075)交流學習。 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這纔是真正的堪稱強大!!!redis

搭建Redis集羣以前請準備好3臺已經安裝好Redis的服務器,CentOS7下安裝Redis請閱讀:https://blog.csdn.net/xlecho/article/details/102975520算法

爲何須要Redis集羣

  • Redis 自己的 QPS 已經很高了,可是若是在一些併發量很是高的狀況下,性能仍是會受到影響。這個時候咱們但願有更多的 Redis 服務來完成工做。
  • 第二個是出於存儲的考慮。由於Redis全部的數據都放在內存中,若是數據量大,很容易受到硬件的限制。升級硬件收效和成本比過低,因此咱們須要有一種橫向擴展的方法。
  • 第三個是可用性和安全的問題。若是隻有一個Redis服務,一旦服務宕機,那麼全部的客戶端都沒法訪問,會對業務形成很大的影響。另外一個,若是硬件發生故障,而單機的數據沒法恢復的話,帶來的影響也是災難性的。可用性、數據安全、性能均可以經過搭建多個 Reids 服務實現。其中有一個是主節點(master),能夠有多個從節點(slave)。主從之間經過數據同步,存儲徹底相同的數據。若是主節點發生故障,則把某個從節點改爲主節點,訪問新的主節點。

Redis集羣的安裝環境準備

在slave中的redis.con配置以下代碼

slaveof 192.168.222.135 6379
# 注意,若是你的節點設置了密碼訪問,你須要配置下面這個配置
masterauth master密碼複製代碼

這裏沒有將slave設置成爲‘只讀’,若是實際生產環境若是不設置這個集羣就會出現重大問題。安全

配置完成以後重啓Redis

service redis start複製代碼

查看主節點的集羣狀態

# 啓動redis
redis-server redis.conf
# 鏈接redis
redis-cli -h 192.168.222.135 -p 6379
# 查看狀態
info replication複製代碼

配置若是成功咱們能夠看到以下信息:image.png服務器

退出集羣

退出集羣比較簡單,能夠直接刪除掉上面的配置,也能夠執行如下命令微信

slaveof no one複製代碼

看到這個信息咱們就已經完成了咱們的主從配置。可是什麼是哨兵模式?哨兵模式是基於咱們集羣的,咱們有了集羣以後,咱們就要來配置咱們的哨兵模式了併發

什麼是哨兵模式

哨兵模式英文名Sentinel,它是爲了解決Redis集羣的高可用應運而生的。Redis集羣,通常來講只會有一個master服務,當master掛掉以後,之能手動切換master就會形成一段時間內的服務不可用。sentinel就是專門針對這種狀況而產生的一個監聽服務。它主要負責監聽咱們一個組內全部Redis,當咱們的master掛掉以後,它就會根據Raft算法進行選舉一臺新的leader出來,而後將選舉出來的leader當成咱們的master。性能

搭建哨兵模式

哨兵模式的主要做用就是監控弄Redis集羣,因此咱們搭建哨兵模式以前要確認咱們的Redis集羣已經成功搭建了。哨兵模式的搭建其實也相對比較簡單,只須要配置主節點監控便可。學習

# 找到redis根目錄下面的sentinel.conf的配置文件,修改以下配置
daemonize yes
port 26379
protected-mode no
dir /usr/local/redis/redis-5.0.1/sentinel-tmp
sentinel monitor mymaster 192.168.222.135 6379 2
sentinel auth-pass mymaster 48835a9c-7a5a-4ec8-af6a-80af3e87b194
# 若是哨兵3s內沒有收到主節點的心跳,哨兵就認爲主節點宕機了,默認是30秒
sentinel down-after-milliseconds mymaster 3000
# 若是10秒後,master仍沒活過來,則啓動failover,默認180s
sentinel failover-timeout mymaster 10000複製代碼

  • 先啓動Redis服務,而後在啓動sentinel服務
# 啓動redis服務 
redis-server redis.conf
# 啓動sentinel
redis-sentinel sentinel.conf複製代碼

模擬master宕機,檢測sentinel服務是否成功

模擬以前確保咱們的redis、sentinel服務都啓動了,登陸master,直接在master上面進行shutdown。操做完成以後等待一會,而後使用登陸咱們的從服務器,鏈接上從服務的redis以後,咱們使用命令info replication 查看當前節點是否成爲了masterspa

  • 我這裏原本135是master,使用info replication能夠看到以下結果

在這裏插入圖片描述

  • 135使用shutdown以後,分別查看134/133兩臺服務器

注意:採坑

在這裏插入圖片描述這是因爲咱們的下面兩行配置的位置放反了引發的。正確順序按照下面的順序便可.net

sentinel monitor mymaster 192.168.222.135 6379 2
sentinel auth-pass mymaster 48835a9c-7a5a-4ec8-af6a-80af3e87b194複製代碼

作一個有底線的博客主

相關文章
相關標籤/搜索