sentinel主從切換技術


主從切換技術的方法是:

當主服務器宕機后,需要手動把一台從服務器切換為主服務器,

這就需要人工干預,費事費力,還會造成一段時間內服務不可用。

這不是一種推薦的方式,更多時候,我們優先考慮哨兵模式。

一、哨兵模式概述

哨兵模式是一種特殊的模式,首先Redis提供了哨兵的命令,哨兵是一個獨立的進程,

作為進程,它會獨立運行。其原理是哨兵通過發送命令,

等待Redis服務器響應,從而監控運行的多個Redis實例。

 

 

這里的哨兵有兩個作用

  • 通過發送命令,讓Redis服務器返回監控其運行狀態,包括主服務器和從服務器

  • 當哨兵監測到master宕機,會自動將slave切換成master

  • 然后通過發布訂閱模式通知其他的從服務器,修改配置文件,讓它們切換主機。


然而一個哨兵進程對Redis服務器進行監控,可能會出現問題,
為此,我們可以使用多個哨兵進行監控。 各個哨兵之間還會進行監控,這樣就形成了多哨兵模式。
 
用文字描述一下故障切換(failover)的過程。
假設主服務器宕機, 哨兵1先檢測到這個結果,系統並不會馬上進行failover過程,僅僅是 哨兵1主觀的認為主服務器不可用,這個現象成為 主觀下線
當后面的哨兵也檢測到主服務器不可用,並且數量達到一定值時,那么哨兵之間就會進行一次投票,投票的結果由一個哨兵發起,進行failover操作。
切換成功后,就會通過發布 訂閱模式,讓各個哨兵把自己監控的從服務器實現切換主機,這個過程稱為 客觀下線。這樣對於客戶端而言,一切都是透明的。


 

 

 
 

 

 

python中的使用(目前還沒有應用場景)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
from redis.sentinel import Sentinel
 
# 連接哨兵服務器(主機名也可以用域名)
sentinel = Sentinel([('10.211.55.20', 26379),
                     ('10.211.55.20', 26380),
                     ],
                    socket_timeout=0.5)
 
# # 獲取主服務器地址
# master = sentinel.discover_master('mymaster')
# print(master)
#
# # # 獲取從服務器地址
# slave = sentinel.discover_slaves('mymaster')
# print(slave)
#
#
# # # 獲取主服務器進行寫入
# master = sentinel.master_for('mymaster')
# master.set('foo', 'bar')
 
 
 
# # # # 獲取從服務器進行讀取(默認是round-roubin)
# slave = sentinel.slave_for('mymaster', password='redis_auth_pass')
# r_ret = slave.get('foo')
# print(r_ret)

 

 
 
 
 
 
 


免責聲明!

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



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