2017-08-25 45 views
1

我有網址爲如何從sentinel url創建redis python客戶端?

BROKER_URL = 'sentinel://192.168.10.1:26379/0;sentinel://192.168.10.2:26379/0;sentinel://192.168.10.3:26379/0' 

在此,Redis的是在192.168.10.1192.168.10.2192.168.10.3運行。一個節點是主節點,其他節點是從節點。如果主人出現故障,其他節點會發生在主人的位置。

我檢查redis客戶端,但它沒有方法,我們可以提供像我給的網址。

我們必須保留主機名和端口。在我的情況下,主人會是誰形成這些3.

回答

1

檢查Redis的-PY代碼庫readme.md在https://github.com/andymccurdy/redis-py/blob/master/README.rst#sentinel-support

像這樣:

from redis.sentinel import Sentinel 
sentinel = Sentinel([('192.168.10.1', 26379), ('192.168.10.2',26379), ('192.168.10.3',26379)], socket_timeout=0.1) 

master = sentinel.master_for('master-name', socket_timeout=0.1) 

主從對象都正常StrictRedis實例的連接池綁定到Sentinel實例。當支持Sentinel的客戶端嘗試建立連接時,它首先查詢Sentinel服務器以確定要連接的適當主機。如果找不到服務器,則會引發MasterNotFoundError或SlaveNotFoundError。

實際情況是,如果您爲Redis羣集構建Sentinel,則不需要直接連接Redis服務器。按照上述步驟,首先連接到Sentinel,然後使用master_for查詢要連接的適當主機。只有這樣,如果主人關閉,你的客戶才能被引導到新的主人。

而且在上面的代碼中master-name,你應該在sentinel.conf 在

sentinel monitor <master-group-name> <ip> <port> <quorum>

這樣的規定:

sentinel monitor mymaster 127.0.0.1 6379 2