Progettazione di un'infrastruttura di monitoraggio del sito Web scalabile

0

Sto progettando un'infrastruttura per monitorare siti Web e applicazioni. L'idea è di creare un'applicazione che controlli il sito Web / l'applicazione dell'utente con un determinato intervallo (30 sec, 1 min, 5 min, ecc.). È importante che il controllo del sito Web sia vicino all'intervallo specificato. L'obiettivo dell'infrastruttura è di avere un'infrastruttura scalabile con un tempo di attività elevato senza un singolo punto di errore (se possibile). Un monitor che è online al 99% online non è accettabile.

Quindi dopo un brainstorming ho trovato la seguente infrastruttura.

Questo diagramma contiene tutte le diverse parti / applicazioni dell'infrastruttura. Ogni applicazione viene eseguita sul proprio computer.

In questo momento l'applicazione del delegator manager è ad alto rischio. Se l'applicazione non è attiva, non può spostare i siti Web in un altro delegatore se uno dei delegatori di lavoro è inattivo.

Quindi la mia domanda è se questa infrastruttura è sufficientemente affidabile e scalabile per il monitoraggio di migliaia di siti web. Supponendo che ci siano abbastanza lavoratori per fare tutto il monitoraggio. I consigli sono ben accetti!

    
posta Jamie 23.07.2017 - 22:23
fonte

2 risposte

1

Considera un design che utilizza il Modello di attore.

Con il modello attore, è possibile avere diversi agenti fault-tolerant, ciascuno dei quali è in grado di monitorare uno o più siti Web. Gli attori possono essere eseguiti su qualsiasi macchina, in qualsiasi parte del mondo; tutto ciò di cui hai bisogno è un po 'di hardware per eseguirli. L'architettura del software è dettata dagli attori stessi. Quindi, piuttosto che avere macchine dedicate a compiti specifici, si dedicano gli agenti software a compiti specifici che possono essere eseguiti su qualsiasi macchina generica.

Ciò consente di iniziare con una macchina e scalare secondo le necessità semplicemente aggiungendo più macchine o addirittura eseguendo il tutto nel "cloud". Un attore può persino gestire il numero totale di attori in esecuzione.

Ulteriori letture
Modello attore su Wikipedia
Akka (implementazione di un modello di attore in Java)
Akka per .NET Framework

    
risposta data 23.07.2017 - 22:52
fonte
1

Alcune cose che potresti voler prendere in considerazione:

  • Distribuzione geografica dei lavoratori. Questo può aiutare a determinare se l'interruzione è il sito o Internet.
  • Progettare le attività in modo che i lavoratori possano continuare a lavorare anche se il proprio delegante non è in grado di comunicare. Ciò elimina il rischio in quanto il delegatore deve solo comunicare le modifiche delle attività.
  • Come / dove aggregare le risposte.
  • Che tipo di dati storici sono desiderati. Questo è necessario per le statistiche di uptime / prestazioni.

Mi aspetto che un server sia disponibile almeno il 99,9% delle volte. Con il ridimensionamento minimo dei lavoratori, dovrebbe essere possibile aumentare significativamente la disponibilità.

Se si stanno facendo notifiche di tempi di inattività, l'immediatezza della messaggistica può essere importante. Normalmente, è richiesta solo una notifica per interruzione. Prendi in considerazione la possibilità di delegare a un numero dispari di lavoratori e di utilizzare il quorum per determinare se un sito è andato giù.

Esistono sistemi esistenti che già fanno questo genere di cose. Sul lato open source guarda Icinga / Nagios.

    
risposta data 23.07.2017 - 22:53
fonte

Leggi altre domande sui tag