Redis
 sql >> Database >  >> NoSQL >> Redis

Utilizzo di Redis Replication su macchine diverse (multi master)

Stai chiedendo una soluzione Active-Active, alias multi master, ma la tua domanda suggerisce che potresti non averne bisogno.

Se richiedi che solo uno dei database sia disponibile per le scritture, ovvero tutte le scritture lo vanno sempre, puoi ottenerlo con la replica master-slave standard di Redis. Indirizza la tua applicazione a utilizzare il master per le scritture e (potenzialmente) fai in modo che anche il tuo slave serva alcune delle letture. Se il master fallisce, promuovi lo slave nel controller di dominio secondario in modo che sia il nuovo master e reindirizza la tua applicazione/client per utilizzarlo. Il monitoraggio e la promozione possono essere raggiunti con Sentinel di Redis.

Ci sono alcune cose che dovrai prendere in considerazione quando implementi questo tipo di configurazione. Innanzitutto, nota che la replica di Redis è asincrona, quindi a seconda del carico del tuo master, del volume delle scritture e della qualità del collegamento di rete della replica, potresti perdere alcuni degli aggiornamenti recenti in caso di failover. In secondo luogo e sullo stesso argomento, un collegamento di rete inter-DC potrebbe essere soggetto a larghezza di banda limitata e maggiore latenza:è necessario configurare Redis per gestirlo e forse utilizzare la compressione per quel traffico (ad esempio tramite un tunnel SSH). Infine, per rilevare con precisione i guasti, ti consigliamo di avere almeno 3 Sentinelle in posizioni diverse. Ma nonostante queste sfide, è tutto fattibile.

Detto questo, una configurazione multi master in cui le scritture possono essere eseguite arbitrariamente su qualsiasi database non lo è supportato da Redis in questo momento. Se è effettivamente ciò di cui hai bisogno, considera l'utilizzo di una soluzione diversa.

Nota:a seconda dei tuoi requisiti esatti, se puoi garantire che le scritture su controller di dominio diversi si escludono a vicenda (ovvero ogni controller di dominio ottiene scritture solo su un sottoinsieme distinto di chiavi che non è condiviso dall'altro controller di dominio), puoi usare due database con un master in ogni DC e lo slave nell'altro.