2015-12-14 238 views
1

我想實現一個Redis羣集與6機器。 我有六臺機器的一個無業遊民集羣:Redis羣集:沒有自動故障轉移爲主故障

192.168.56.101 
192.168.56.102 
192.168.56.103 
192.168.56.104 
192.168.56.105 
192.168.56.106 

所有正在運行的Redis服務器

我編輯上述所有服務器的/etc/redis/redis.conf文件中添加此

cluster-enabled yes 
cluster-config-file nodes.conf 
cluster-node-timeout 5000 
cluster-slave-validity-factor 0 
appendonly yes 

然後我在六臺機器中的一臺上運行這個程序;

./redis-trib.rb create --replicas 1 192.168.56.101:6379 192.168.56.102:6379 192.168.56.103:6379 192.168.56.104:6379 192.168.56.105:6379 192.168.56.106:6379 

Redis集羣已啓動並正在運行。我通過在一臺機器上設置值顯示在其他機器上手動檢查。

$ redis-cli -p 6379 cluster nodes 
3c6ffdddfec4e726f29d06a6da550f94d976f859 192.168.56.105:6379 master - 0 1450088598212 5 connected 
47d04bc98ab42fc793f9f382855e5c54ab8f2e20 192.168.56.102:6379 slave caf2cec45114dc8f4cbc6d96c6dbb20b62a39f90 0 1450088598716 7 connected 
040d4bb6a00569fc44eec05440a5fe0796952ccf 192.168.56.101:6379 myself,slave 5318e48e9ef0fc68d2dc723a336b791fc43e23c8 0 0 4 connected 
caf2cec45114dc8f4cbc6d96c6dbb20b62a39f90 192.168.56.104:6379 master - 0 1450088599720 7 connected 0-10922 
d78293d0821de3ab3d2bca82b24525e976e7ab63 192.168.56.106:6379 slave 5318e48e9ef0fc68d2dc723a336b791fc43e23c8 0 1450088599316 8 connected 
5318e48e9ef0fc68d2dc723a336b791fc43e23c8 192.168.56.103:6379 master - 0 1450088599218 8 connected 10923-16383 

我的問題是,當我關閉或停止任何一臺機器是master集羣整體下降對Redis的服務器,但如果所有的三個從死亡的集羣仍然正常工作。

我應該怎麼做,以便在主站發生故障時從站變爲主站(容錯)?

我假設redis處理所有這些事情,在部署集羣后我不用擔心它。我是對的還是我必須自己做事?

另一個問題是可以說我有六個16GB RAM的機器。在這個擁有三位主人和三位奴隸的Redis集羣中,我能夠處理多少數據?

謝謝。

+1

關閉爲什麼?這個問題有什麼不對?有些意見會很好。 – Nagri

+0

//,誰關閉了? –

回答

1

設置cluster-slave-validity-factor 0可能是這裏的罪魁禍首。

from redis.conf

# A slave of a failing master will avoid to start a failover if its data 
# looks too old. 

在你設置的終止主的奴隸認爲自己不適合,因爲它最後一次聯絡高手比的計算值越大,時間應選主:

(node-timeout * slave-validity-factor) + repl-ping-slave-period

因此,即使使用冗餘從站,羣集狀態也會更改爲「關閉」並變爲不可用狀態。

您可以用不同的值,例如,建議的默認

cluster-slave-validity-factor 10

這將確保羣集能夠容忍一個隨機的Redis實例失敗嘗試。 (它可以是從服務器或主服務器)

對於第二個問題:每臺16GB RAM的六臺計算機都可以用作3個主實例和3個從實例的Redis集羣。所以理論最大值是16GB x 3數據。如果cluster-require-full-coverage已打開,則此羣集最多可容忍一個節點故障。否則它可能仍然能夠在正在運行的實例中仍然可用的碎片中提供數據。

+0

這個答案是錯誤的,0禁用了這個功能,並確保一個奴隸將*總是*嘗試故障轉移爲主。 –

相關問題