2011-01-20 13 views
6

Abbiamo appena testato un cluster AppFabric di 2 server in cui abbiamo rimosso il server "lead". Il secondo server timeout su qualsiasi richiesta ad esso con l'errore:Ridondanza AppFabric

Microsoft.ApplicationServer.Caching.DataCacheException: ErrorCode<ERRCA0017>:SubStatus<ES0006>: There is a temporary failure. Please retry later. (One or more specified Cache servers are unavailable, which could be caused by busy network or servers. Ensure that security permission has been granted for this client account on the cluster and that the AppFabric Caching Service is allowed through the firewall on all cache hosts. Retry later.)

In practive questo significa che se un server nel cluster scende poi tutti vanno giù. (Nota che non stiamo usando il cluster di Windows, collegando tra loro più server cache AppFabric.)

Ho bisogno che il cluster continui a funzionare anche se un singolo server si interrompe. Come faccio a fare questo?

(Mi rendo conto che questa domanda è borderlining Serverfault, ma imho gli sviluppatori dovrebbero saperlo.)

risposta

7

Dovrete installare la cache AppFabric su almeno tre server di piombo per la cache di sopravvivere a un crash del server singolo. I documenti affermano che il cluster andrà giù solo se la "maggioranza" dei lead server scende, ma nella stampa fine, spiegano che 1 su 2 costituisce la maggioranza. Ho verificato che la rimozione di un server da un cluster a tre nodi di lead funziona come pubblicizzato.

2

Concetto tipico di sistemi distribuiti. Affinché un quorum di scrittura o di lettura si verifichi in un insieme, è necessario disporre di 2f + 1 server in cui f è il numero di server in errore. Penso che appfabric o qualsiasi sistema basato sul consenso di CP (come nel teorema CAP) abbia bisogno che ciò accada per il funzionamento del cluster.

--Sai

+0

qual è il numero di "secondari" in 2f + 1 formula? – UserControl

0

Quello è in realtà un problema con l'architettura AppFabric ed è piuttosto confusa in termini del concetto "lead-host". L'idea è che la maggior parte degli host lead dovrebbe essere in esecuzione in modo che il cluster rimanga attivo e funzionante. Quindi se avessi tre server dovresti avere almeno due host principali che comunicano costantemente tra loro e che consumano risorse del server e se entrambi vanno giù, allora l'intero cluster fallisce. L'idea è di avere un'architettura peer-to-peer in cui tutti i server fungano da pari, il che significa che anche se due server si arrestano, il cluster continua a funzionare senza i tempi di fermo dell'applicazione. Prova NCache:

http://www.alachisoft.com/ncache/

Problemi correlati