1. Linux下安裝配置redis詳細教程,並配置哨兵模式
redis版本為redis-3.2.12,使用工具將安裝包上傳到data目錄。
在data目錄下創建文件夾redis,將redis安裝在此目錄。
第一步:解壓。
第二步:安裝,PREFIX=/data/redis用來設置安裝目錄。
到此,redis已經安裝完成,剩下就是配置和啟動服務。
進入redis目錄, 創建配置文件conf、日誌logs、資料庫mp、進程號pid四個目錄,用來存放對應的文件,這四個目錄也可以存放在其他文件夾,只要與配置文件中的配置一致即可,否則在啟動服務時會報錯。 其中bin目錄就是redis安裝成功後的一些命令文件。
redis服務配置一主二從,哨兵模式。注意:如果在實際開發中用不到哨兵模式,redis服務配置一主一從即可。
主Redis配置:redis_6379.conf
從Redis配置,redis_6380.conf和redis_6381.conf,與主Redis配置基本上一樣,不一樣的地方在於 埠、資料庫、日誌、pid文件名稱 ,都以6380或6381為標志, 最重要的地方是建立主從關系和同步驗證。
注意: 對只使用redis服務 ,只需要在主Redis裡面配置requirepass,在從Redis裡面配置masterauth,密碼保持一致,密碼盡可能復雜,以免被攻擊破解。
注意: 對只使用redis服務 ,如果從Redis也有必要加入訪問驗證,也可以設置requirepass,而且密碼可以與主Redis密碼不同。
將配置文件放置到/data/redis/conf目錄下,然後就可以啟動服務了。
啟動服務要按照主從順序依次啟動。
查看服務啟動情況:
也可以通過查看日誌文件來確認服務是否正常啟動。
通過客戶端登錄Redis驗證數據同步情況:
主Redis登錄驗證,設置數據:
從Redis登錄,獲取數據:從Redis並沒有設置密碼,所以無需驗證就可以操作。
配置哨兵模式:
Redis Sentinel集群通常由3到5個節點組成,如果個別節點掛了,集群還可以正常運作。Sentinel負責監控Redis集群的 健康 情況。
如果主Redis掛掉,Sentinel集群會通過投票選擇一個新的主Redis。 當原來的主Redis恢復時,它會被當做新的主Redis的從Redis重新加入Redis集群。
設置連接master和slave的密碼,需要注意的是sentinel不能分別為master和slave設置不同的密碼,因此master和slave的密碼必須設置相同。也就是說主Redis和從Redis都必須設置requirepass和masterauth,而且密碼必須相同。
sentinel.conf配置信息:
將該配置文件放置到/data/redis/conf目錄下,啟動sentinel服務:
驗證sentinel是否起作用,可以手工shutdown掉主Redis。
這時從Redis想要訪問主Redis同步數據就會提示錯誤信息:
sentinel在監測到主Redis宕機之後,通過選舉,將一個從Redis選定為新的主Redis。通過查看sentinel日誌可以發現,選定6380為新的主Redis,同時將另外兩個Redis作為從Redis。
注意:選定6380為主Redis後,所有的配置文件都會被修改,主要是重新建立主從關系。
6379會新增:slaveof 127.0.0.1 6380
6380會刪掉:slaveof 127.0.0.1 6379
6381會修改:slaveof 127.0.0.1 6380
由於6379服務已經關掉,所以雖然sentinel將6379作為6380的從服務,但是沒有真正的建立。
重新啟動6379服務,這時sentinel會重建建立一次主從關系:
2. Redis 學習總結(3) Redis 哨兵模式
在實際開發中不會僅僅部署一個 Redis 伺服器,為了獲得高可用,Redis 哨兵模式 則是高可用的一種選擇。
本文先介紹下 哨兵模式,再介紹了如何在 springboot 項目中使用。
這意味著使用 Sentinel (哨兵模式),您可以創建一個 Redis 部署,它可抵抗某些類型的故障(進行故障遷移)而無需人工干預。
它有這些功能:
Sentinel 的分布式特性
Redis Sentinel 是一個分布式系統,多個 Sentinel 進程協同工作,有這些優勢:
部署前需要了解:
三個節點的基本配置
法定人數和仲裁
在配置 哨兵模式時,要指定一個 quorum,它可理解為「法定人數」。
假設有3 個 哨兵,法定人數為2。那麼:
哨兵和副本的自動發現
Sentinel 與其他 Sentinel 保持連接,以便相互檢查彼此的可用性並交換消息。
但是,您不需要在您運行的每個 Sentinel 實例中配置其他 Sentinel 地址的列表,因為 Sentinel 使用 Redis 實例的 Pub/Sub 功能來發現正在監視相同主節點和副本的其他 Sentinel。
類似地,您不需要配置附加到主伺服器的副本地址在哪裡,因為 Sentinel 會通過查詢 Redis 自動發現它們。
參考我的另一篇文章:
一般需要三個節點,每個節點有一個 redis 和一個哨兵。
下面再分別描述。
我這里按三個 節點,先配置 redis 的主從復制。1個節點作為 master ,2個副本。
配置節點1:master
這里的 redis 作為 master 主redis,其他兩個節點作為從節點。
我的文件夾名字叫 box1,這里編輯一個 box1/redis.conf 文件,主要配置內容如下:
配置節點2:副本
編輯一個 box2/redis.conf 文件,主要配置內容如下:
配置節點3:副本
編輯一個 box3/redis.conf 文件,主要配置內容如下:
分別啟動這三個redis
命令行執行 redis-server ,並指定 配置文件的路徑參數。
如何查看「主從復制」是否配置成功?
使用 info replication 命令,操作如下:
副本節點設置為只讀?
從 Redis 2.6 開始,副本已被默認設置為 只讀,無需額外配置。.
一般情況下,至少會需要三個哨兵對redis 進行監控,我們可以通過修改埠啟動多個sentinel 服務。
第一個哨兵:
哨兵的 默認埠是 26379 ,這里不改。
第二個哨兵:
修改哨兵埠。
第三個哨兵:
修改哨兵埠。
啟動哨兵
使用 redis-sentinel 命令,分別啟動這三個哨兵
哨兵的自動發現
當三個哨兵都啟動後,在各個哨兵的列印日誌里可以看到, 三個哨兵已互相發現了彼此的存在 。
至此,配置完畢了,我們有三個 redis,和三個哨兵,看下截圖。
模擬 master 宕機
按 ctrl+c 停止 master ,其位於 6379 。停止後,從日誌可以看到,哨兵和 redis副本先努力繼續連接 6379,反復幾次失敗後,開始選舉出新的 master。截圖如下:
至此,配置完畢。
我們看下 springboot 項目的客戶端如何配置 以訪問 哨兵模式的 redis。
Redis 哨兵支持
對於處理高可用Redis,Spring Data Redis 已經支持Redis Sentinel,使用RedisSentinelConfiguration,如下例所示:
Jedis 和 Lettuce 兩種 redis 驅動都可以支持。
RedisSentinelConfiguration 也可以用可以 通過 PropertySource 來設置,它允許您設置以下屬性:
配置application.yml
比如我這里修改我的 application.yml 文件如下:
我的配置文件示例: https://github.com/vir56k/java_demo/tree/master/redis-sentinel
我的 springboot 配置實例: https://github.com/vir56k/java_demo/tree/master/redis-sentinel/springboot_redis_demo
Redis官網 sentinel 介紹
https://redis.io/topics/sentinel
spring-data/data-redis
https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/#redis:sentinel
https://www.cnblogs.com/jaycekon/p/6237562.html
END