Gestione dello spazio di archiviazione condiviso in un ambiente ad alta disponibilità

1

Ho un'applicazione con una funzionalità HA (high availability) personalizzata che fornisce il failover automatico da un server primario attivo che presenta un errore in un server di backup passivo. Ad oggi, questa funzione ha incluso la replica manuale di tutti i dati tra il server primario e il server di backup su dischi indipendenti, ma con molti mal di testa e problemi di prestazioni in quanto è abbastanza difficile implementare correttamente e in modo performante la replica completa dei dati. Sto passando a un meccanismo di archiviazione condiviso su SQL Server, in cui intendo sfruttare le funzionalità HA più robuste e performanti di SQL Server e ho bisogno di modificare la mia funzionalità HA per funzionare in quell'ambiente.

La mia domanda è: come posso garantire che solo uno dei server primario o di backup stia scrivendo sul database alla volta? Ovviamente, nel caso in cui il server primario fallisca in modo catastrofico, non c'è alcuna possibilità che scriva sul database nello stesso momento in cui viene prelevato dal server di backup. Vi sono tuttavia scenari meno catastrofici in cui alcuni sistemi sul primario potrebbero essere entrati in uno "stato cattivo" e il backup deve affermare il controllo sul primario che può ancora essere parzialmente funzionante. In tal caso, esiste la possibilità che entrambi i server possano tentare di scrivere sul database con il risultato potenziale della corruzione dei dati. Non penso che la mia particolare situazione sia unica. Ad esempio, SQL Server in una configurazione del cluster di failover scrive su storage condiviso come una SAN e suppongo che debba risolvere questo problema anche in scenari di failover. Esistono schemi o approcci comuni per gestire questo problema?

Attraverso ricerche su Google e simili, non ho trovato nessuna tecnica che possa funzionare oltre i confini della macchina. L'unica idea che avevo era di configurare i server primari e di backup per connettersi al database utilizzando accessi diversi. In caso di failover, la prima azione del server di backup sarebbe disabilitare l'accesso del server primario. Anche se potrebbe funzionare, mi sembra un trucco e richiederei anche privilegi amministrativi sul database, cosa che gli utenti finali sono comprensibilmente titubanti a concedere alle singole applicazioni. Qualsiasi suggerimento su modelli noti o altri suggerimenti sarebbe apprezzato.

    
posta Dan 13.11.2014 - 03:58
fonte

0 risposte

Leggi altre domande sui tag