ThingWorx a disponibilità elevata > Servizi di bilanciamento del carico per ThingWorx a disponibilità elevata
Servizi di bilanciamento del carico per ThingWorx a disponibilità elevata
Per una configurazione a disponibilità elevata di ThingWorx sono necessari uno o due servizi di bilanciamento del carico.
Uno di essi serve per indirizzare il traffico a ThingWorx Connection Servers. È necessario solo se ThingWorx Connection Servers fa parte della distribuzione.
L'altro serve per indirizzare il traffico al server ThingWorx che rappresenta il leader corrente. Questo bilanciamento del carico è obbligatorio in tutte le configurazioni a disponibilità elevata di ThingWorx.
Requisiti generali del bilanciamento del carico
Il bilanciamento del carico deve operare all'interno della rispettiva configurazione a disponibilità elevata.
Può instradare il traffico WebSocket.
Può gestire sessioni statiche (o permanenti).
(Facoltativo) Può gestire la chiusura SSL.
Bilanciamento del carico per ThingWorx Connection Servers
Se è necessario per i server delle connessioni, un bilanciamento del carico deve ricevere tutto il traffico ThingWorx e distribuirlo in base alle regole riportate di seguito.
Il bilanciamento del carico deve indirizzare ai server di connessione solo il traffico WebSocket. Il traffico utente e altro traffico diverso da WebSocket devono essere indirizzati all'altro bilanciamento del carico, che instrada il traffico al leader ThingWorx.
Per prestazioni ottimali, il traffico WebSocket da un asset deve essere indirizzato sempre allo stesso server di connessione mediante sessioni permanenti.
Se il server di connessione passa in modalità non in linea, il traffico dell'asset deve essere indirizzato a un altro server di connessione.
Se la sessione tra l'asset e il server di connessione diventa inattiva, è possibile stabilire una nuova sessione con qualsiasi server di connessione disponibile.
Bilanciamento del carico per i server ThingWorx
Per assicurarsi che venga indirizzato al leader ThingWorx corrente, tutto il traffico sul server ThingWorx (utente, asset, server di connessione e così via) deve essere instradato attraverso questo bilanciamento del carico.
Il bilanciamento del carico chiama periodicamente un servizio su ogni server ThingWorx. Il servizio risponde con lo stato del proprio server leader. Il server ThingWorx che restituisce il codice leader al bilanciamento del carico riceve il traffico di utenti e asset. I server ThingWorx che restituiscono il codice di standby non devono ricevere traffico.
È possibile utilizzare qualsiasi bilanciamento del carico che soddisfi i criteri riportati di seguito.
Il bilanciamento del carico può inviare periodicamente la seguente istruzione GET al leader ThingWorx e agire in base alla risposta.
GET /Thingworx/Admin/HA/LeaderCheck
HTTP/1.0\r\nAuthorization:\ Basic\ <base64-encoded-string>
Dove <base64-encoded-string> è una stringa utente:password con codifica base64 che corrisponde al valore delle impostazioni LoadBalancerBase64EncodedCredentials in platform-settings.json.
Il bilanciamento del carico deve inviare la chiamata a ciascun leader ThingWorx ogni 15-20 secondi.
Una risposta valida dal leader ThingWorx è il codice di risposta 200.
Mentre il server leader invia il codice di risposta 200, i server di standby devono restituire i codici di risposta 400, 401 o 503.
Se il leader invia tre codici di risposta diversi da 200 si verifica quanto descritto di seguito.
Il bilanciamento del carico deve controllare i server di standby ThingWorx per il codice di risposta 200.
Il server di standby che ora invia il codice di risposta 200 deve essere considerato come nuovo leader ThingWorx.
Tutto il traffico deve essere indirizzato al nuovo leader ThingWorx.
Nella distribuzione a disponibilità elevata di ThingWorx può essere utilizzato qualsiasi bilanciamento del carico in grado di soddisfare i requisiti sopra descritti. In Esempio di HAProxyviene fornita una configurazione di esempio di un bilanciamento del carico. L'esempio si basa su HAProxy ( http://www.haproxy.org).