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


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


搭建Redis集群之前請准備好3台已經安裝好Redis的服務器,CentOS7下安裝Redis請閱讀:https://blog.csdn.net/xlecho/article/details/102975520

為什么需要Redis集群

  • Redis 本身的 QPS 已經很高了,但是如果在一些並發量非常高的情況下,性能還是會受到影響。這個時候我們希望有更多的 Redis 服務來完成工作。
  • 第二個是出於存儲的考慮。因為Redis所有的數據都放在內存中,如果數據量大,很容易受到硬件的限制。升級硬件收效和成本比太低,所以我們需要有一種橫向擴展的方法。
  • 第三個是可用性和安全的問題。如果只有一個Redis服務,一旦服務宕機,那么所有的客戶端都無法訪問,會對業務造成很大的影響。另一個,如果硬件發生故障,而單機的數據無法恢復的話,帶來的影響也是災難性的。可用性、數據安全、性能都可以通過搭建多個 Reids 服務實現。其中有一個是主節點(master),可以有多個從節點(slave)。主從之間通過數據同步,存儲完全相同的數據。如果主節點發生故障,則把某個從節點改成主節點,訪問新的主節點。

Redis集群的安裝環境准備

服務器地址 系統 Redis版本
192.168.222.133 CentOS7 5.0.1
192.168.222.134 CentOS7 5.0.1
192.168.222.135 CentOS7 5.0.1

我們以135作為master,其他兩個節點全部作為slave節點

在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 查看當前節點是否成為了master

  • 我這里本來135是master,使用info replication可以看到如下結果

在這里插入圖片描述

  • 135使用shutdown之后,分別查看134/133兩台服務器

注意:采坑

在這里插入圖片描述
這是由於我們的下面兩行配置的位置放反了引起的。正確順序按照下面的順序即可

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

做一個有底線的博客主


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM