redis主從切換的集群管理


網站的訪問量慢慢上來了。為了網站的性能方面,開始用了redis做緩存策略。剛開始的時候,redis是一個單點,當一台機器岩機的時候,redis的 服務完全停止,這時就會影響其他服務的正常運行。費話不多說了,下面利用redis sentinel做一個主從切換的集群管理。做這個集群管理的時候,查過很多資料才完全了解,他是怎么做的。

java 客戶端請看:

http://blog.mkfree.com/posts/52b146e6479e5a64742fddd0

參考資料:http://redis.io/topics/sentinel 我也是看這篇文章。

環境配置:

由於我這次配置沒有太多的機器,我用了vagrant 去開了多台虛擬機。然后搭好了環境。

redis的安裝請參考:redis 簡單官方腳本安裝方法(linux)

集群配置最少需要三台機器,那么我就三台虛擬機,三台虛擬機分別安裝同樣的redis的環境

ip分別:

  • 192.168.9.17  (redis sentinel 集群監控)
  • 192.168.9.18  (redis 主)
  • 192.168.9.19  (redis 從)

redis配置:

主的redis配置文件,使用默認的配置文件就可以了,如果你需要設計其他參數

從的redis配置文件,添加

#從的redis配置文件,需要添加 vim /etc/redis/6379.conf slaveof 192.168.9.18 6379

啟動主從redis

#啟動主redis192.168.9.18 /etc/init.d/redis_6379.conf start #啟動從redis192.168.9.19 /etc/init.d/redis_6379.conf start

查看主redis信息

#查看主redis的信息 redis-cli -h 192.168.9.18 info Replication # Replication role:master #代表192.168.9.18:6379 這台redis是主 connected_slaves:1 slave0:192.168.9.18,6379,online

查看從redis信息

#查看主redis的信息 redis-cli -h 192.168.9.19 info Replication # Replication role:slave #代表192.168.9.18:6379 這台redis是主 master_host:192.168.9.18 master_port:6379 master_link_status:up master_last_io_seconds_ago:4 master_sync_in_progress:0 slave_priority:100 slave_read_only:1 connected_slaves:0

配置redis sentinel集群監控服務 1.添加一份redis sentinel 配置文件

 

vim /etc/redis/sentinel.conf ##redis-0 ##sentinel實例之間的通訊端口 port 26379 #master1 sentinel monitor master1 192.168.9.18 6379 1 sentinel down-after-milliseconds master1 5000 sentinel failover-timeout master1 900000 sentinel can-failover master1 yes sentinel parallel-syncs master1 2 #master2 可以添加多組主從的redis監聽 ... .. ..

2.有配置文件了,那么啟動redis sentinel做redis集群監聽redis-sentinel sentinel.conf --sentinel


好了,所有環境都搭好了。下面開始正式的演示 1.正常演示。

 

  • 主的redis啟動
  • 把從的redis啟動
  • 把redis sentinel 集群監聽啟動

觀察redis sentinel 日志信息

這里很清楚地看到,從的redis加入了集群

[4925] 15 Oct 03:42:21.889 * +slave slave 192.168.9.19:6379 192.168.9.19 6379 @ master1 192.168.9.18 6379

執行以下命令,查看redis主從信息

[root@localhost vagrant]# redis-cli -h 192.168.9.17 -p 26379 info Sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 master0:name=master1,status=ok,address=192.168.9.18:6379,slaves=1,sentinels=1

那么表示一切都正常了。你的redis sentinel集群已經配置成功!



2.故障演示

 

2.1當主的redis 服務器岩機了,會發生什么情況呢?

執行以下命令使用主的redis服務停止

redis-cli -h 192.168.9.18 -p 6379 shutdown #表示把192.168.9.18這台redis 關閉


 

這張圖片很清晰地反應到,redis sentinel 監控到主的redis服務停止,然后自動把從的redis切換到主。

再執行以下命令,查看redis主從信息

[root@localhost vagrant]# redis-cli -h 192.168.33.111 -p 26379 info Sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 master0:name=master1,status=ok,address=192.168.9.19:6379,slaves=1,sentinels=1


 

2.2 當我們已經發現,一台redis發生故障了,可能會收到一些故障信息,那么再把服務已關閉的redis恢復服務狀態,會發生怎么樣的情況呢?

redis sentinel 集群服務,會把上次主redis重新加入服務中,但是他再以不是主的redis了,變成從的reids。


免責聲明!

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



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