La documentazione per questo prodotto è stata redatta cercando di utilizzare un linguaggio senza pregiudizi. Ai fini di questa documentazione, per linguaggio senza di pregiudizi si intende un linguaggio che non implica discriminazioni basate su età, disabilità, genere, identità razziale, identità etnica, orientamento sessuale, status socioeconomico e intersezionalità. Le eventuali eccezioni possono dipendere dal linguaggio codificato nelle interfacce utente del software del prodotto, dal linguaggio utilizzato nella documentazione RFP o dal linguaggio utilizzato in prodotti di terze parti a cui si fa riferimento. Scopri di più sul modo in cui Cisco utilizza il linguaggio inclusivo.
Cisco ha tradotto questo documento utilizzando una combinazione di tecnologie automatiche e umane per offrire ai nostri utenti in tutto il mondo contenuti di supporto nella propria lingua. Si noti che anche la migliore traduzione automatica non sarà mai accurata come quella fornita da un traduttore professionista. Cisco Systems, Inc. non si assume alcuna responsabilità per l’accuratezza di queste traduzioni e consiglia di consultare sempre il documento originale in inglese (disponibile al link fornito).
Questo documento descrive la logica di bilanciamento del carico di Cisco Meeting Server (CMS) (in precedenza prodotto Acano) descritta nel white paper sul bilanciamento del carico. In questo documento il processo viene visualizzato in un diagramma di flusso e vengono fornite informazioni più dettagliate sull'algoritmo di selezione.
Cisco raccomanda la conoscenza dei seguenti argomenti:
Per la stesura del documento, è stato usato Cisco Meeting Server versione 2.4.x.
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Il bilanciamento del carico è stato introdotto nella versione 2.1 del CMS per utilizzare in modo efficiente le risorse di conferenza. Tenta di ridurre al minimo il numero di chiamate di distribuzione tra i bridge di chiamate che ospitano lo stesso spazio. Questo meccanismo è basato sull'intestazione Replace in Session Initiation Protocol (SIP) ed è supportato in Cisco Unified Communications Manager (CUCM) come controllo delle chiamate. È inoltre supportato con Expressway versione X8.11 (o successiva), in combinazione con CMS versione 2.4 o successiva. Le chiamate CMA (sia di tipo thick client che WebRTC) possono essere bilanciate dal carico a partire dalla versione 2.3 di CMS.
Nota: il bilanciamento del carico delle chiamate Lync/Skype non è supportato in nessuna versione CMS in questo momento, quindi questo diagramma di flusso non è applicabile.
Nota: la logica di bilanciamento del carico si applica solo per le chiamate agli spazi CMS e quindi non per le chiamate gateway (chiamate P2P) o dual-home in questo momento.
Il processo di bilanciamento del carico è evidenziato nel white paper nella sezione Modalità di utilizzo delle impostazioni in Configurazione dei bridge di chiamata per il bilanciamento del carico delle chiamate in arrivo. Viene visualizzato in formato testo ed è visualizzato qui nel diagramma di flusso (scarica ).
Il diagramma di flusso utilizza alcune abbreviazioni e terminologia:
Se si fa riferimento a MediaProcessingLoad, questo viene visualizzato in relazione a quel particolare bridge di chiamate in cui la chiamata è arrivata. Questo valore di carico può essere verificato con un API GET on /system/load in tempo reale e fornisce una rappresentazione del carico effettivo elaborato da questo Call Bridge in quel momento.
Se si termina la chiamata nella casella in basso a destra, la chiamata viene reindirizzata al server con la priorità più alta. Può trattarsi del server del bridge di chiamate stesso o di un altro server all'interno del gruppo del bridge di chiamate in cui è terminata la chiamata. Se non viene presa alcuna decisione in base al carico e se lo spazio è già attivo su un bridge di chiamate, esiste un legame con più bridge di chiamate. In tal caso, la decisione finale viene presa in base alla preferenza predefinita di Call Bridge assegnata a ogni spazio. Questa preferenza di bridge di chiamate viene allocata automaticamente al momento della creazione dello spazio e non è configurabile in quanto si basa sui valori hash di diversi attributi. Il risultato è una distribuzione uniforme (casuale) per spazi diversi su tutti i bridge di chiamate.
Per visualizzare la preferenza Bridge di chiamata per uno spazio specifico, è necessario verificarla nel registro eventi del CMS, come illustrato in questi esempi.
Questa sezione contiene esempi di possibili scenari e illustra come il registro eventi del CMS in cui è arrivata la chiamata mostri il processo di bilanciamento del carico descritto nel diagramma di flusso.
Per questi esempi, è stata utilizzata una configurazione lab con un gruppo di bridge di chiamata composto da tre bridge di chiamata. Le configurazioni existingConferenceLoadLimitBasisPoints e newConferenceLoadLimitBasisPoints sono state impostate sui valori predefiniti corrispondenti rispettivamente all'80% e al 50% del valore loadLimit.
Per controllare l'attuale MediaProcessingLoad su un determinato bridge di chiamate, è possibile passare a https://<ip-or-fqdn-of-callbridge>:<porta-webadmin>/api/v1/system/load ed eseguire l'accesso con un account API o amministratore come mostrato nella figura.
In questo esempio non sono presenti chiamate attive in nessuno dei bridge di chiamate. Di conseguenza, MediaProcessingLoad di tutti i server è uguale a zero.
Quando si effettua una chiamata a uno dei ponti di chiamata (cluster1 qui) (con bilanciamento del carico abilitato sia sul CMS che sui dispositivi di controllo delle chiamate), è possibile visualizzare il registro eventi sul ponte di chiamata in cui la chiamata è arrivata:
2018-12-29 10:51:29.490 Info call 75: incoming SIP call from "sip:1060@steven.lab" to local URI "sip:stejanss.space@cluster.steven.lab" 2018-12-29 10:51:29.565 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster1' (priority: 1, load level: 0, conference is running: 0) 2018-12-29 10:51:29.712 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster2' (priority: 2, load level: 0, conference is running: 0) 2018-12-29 10:51:29.717 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster3' (priority: 0, load level: 0, conference is running: 0) 2018-12-29 10:51:29.717 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: using remote server 'cluster3' (priority: 0, load level: 0, conference is running: 0) 2018-12-29 10:51:29.717 Info replacing call 'f8eeea46e0f0790a@10.10.50.13' to conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93 on server 'cluster3' 2018-12-29 10:51:29.876 Info call 75: ending; remote SIP cancel (remote cancel) - not connected after 0:00
in cui è possibile visualizzare le righe della query di sostituzione per ognuno dei bridge di chiamata del gruppo di bridge di chiamata che mostrano l'algoritmo di bilanciamento del carico suddiviso in tre sezioni:
Poiché in quel momento non sono state effettuate chiamate nel sistema, non vi è alcun carico su nessuno dei sistemi (tutti 0) e la conferenza non è in esecuzione da nessuna parte (tutti 0). A questo proposito, la decisione finale è presa in base alla preferenza Call Bridge dello spazio. Viene preferita una priorità più bassa e pertanto la chiamata viene sostituita qui al Call Bridge denominato cluster3, come rilevato dalla linea di chiamata sostitutiva.
In Call Bridge cluster3, è possibile visualizzare le righe del registro eventi che indicano questa chiamata di sostituzione, oltre al bridge di chiamate da cui proviene (cluster1 qui) e gli stessi ID conferenza e ID chiamata:
2018-12-29 10:51:29.784 Info replacing call 'f8eeea46e0f0790a@10.10.50.13' from server 'cluster1' into conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93 2018-12-29 10:51:29.787 Info call 193: outgoing SIP call to "1060@steven.lab" from space "Steven Janssens's space" 2018-12-29 10:51:29.792 Info call 193: setting up UDT RTP session for DTLS (combined media and control) 2018-12-29 10:51:29.909 Info call 193: compensating for far end not matching payload types 2018-12-29 10:51:29.911 Info participant "1060@steven.lab" joined space bc218bfb-3bda-44f6-89a7-80d8dd616a80 (Steven Janssens's space)
Se la chiamata è già arrivata sul bridge di chiamate con il valore di priorità più basso (cluster3 qui per questo spazio), è ancora possibile visualizzare le stesse righe di query di sostituzione nel registro eventi, ma indica ora che utilizza il server locale e non è presente alcuna riga di chiamata di sostituzione:
2018-12-29 11:05:25.202 Info call 194: incoming SIP call from "sip:1060@steven.lab" to local URI "sip:stejanss.space@cluster.steven.lab" 2018-12-29 11:05:25.233 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster3' (priority: 0, load level: 0, conference is running: 0) 2018-12-29 11:05:25.376 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster2' (priority: 2, load level: 0, conference is running: 0) 2018-12-29 11:05:25.378 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster1' (priority: 1, load level: 0, conference is running: 0) 2018-12-29 11:05:25.378 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: using local server 'cluster3' (priority: 0, load level: 0, conference is running: 0) 2018-12-29 11:05:25.380 Info call 194: setting up UDT RTP session for DTLS (combined media and control) 2018-12-29 11:05:25.404 Info participant "1060@steven.lab" joined space bc218bfb-3bda-44f6-89a7-80d8dd616a80 (Steven Janssens's space)
In questo esempio, lo spazio è già attivo all'interno del Gruppo di bridge di chiamate come endpoint 1060@steven.lab chiamato nello spazio, come mostrato nell'esempio 1.
Esistono due situazioni in questo caso:
1. Il bridge di chiamate che ospita questo spazio ha un carico inferiore alla soglia di conferenza esistente e pertanto è in grado di accettare la chiamata.
2. Il bridge di chiamate che ospita questo spazio ha un carico superiore alla soglia di conferenza esistente e quindi il CMS tenta di sostituire la chiamata a un altro bridge di chiamate.
Se la chiamata è arrivata su un bridge di chiamate in cui lo spazio non era ancora attivo, il registro eventi indica ora che lo spazio è attivo su un bridge di chiamate con nome cluster3. Poiché lo spazio è attivo e il carico sul server è inferiore alla soglia esistente (livello di carico: 0), la chiamata viene sostituita.
2018-12-29 11:48:17.419 Info call 82: incoming SIP call from "sip:800999@steven.lab" to local URI "sip:stejanss.space@cluster.steven.lab" 2018-12-29 11:48:17.477 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster1' (priority: 1, load level: 0, conference is running: 0) 2018-12-29 11:48:17.607 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster2' (priority: 2, load level: 0, conference is running: 0) 2018-12-29 11:48:17.607 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster3' (priority: 0, load level: 0, conference is running: 1) 2018-12-29 11:48:17.607 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: using remote server 'cluster3' (priority: 0, load level: 0, conference is running: 1) 2018-12-29 11:48:17.607 Info replacing call '4c28197eaebba178@10.10.2.250' to conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93 on server 'cluster3'
La conferenza in esecuzione ha la priorità sulla priorità, quindi se ci fossero stati più candidati con un livello di carico inferiore alla soglia della conferenza esistente, allora si ridurrebbe alla preferenza Ponte di chiamata in base al valore di priorità. Tuttavia, ciò non avviene nel caso di specie.
In questo caso, la chiamata non viene sostituita con il bridge di chiamate ma cerca un altro bridge di chiamate all'interno del gruppo che disponga di alcune risorse ancora disponibili. In primo luogo, verifica se sono presenti ponti di chiamata con un carico inferiore al 50% (nuova soglia conferenza) e carica prima questi ponti. Se non ve ne sono sotto questa soglia, verifica se vi sono ancora disponibili al di sotto dell'80% (soglia conferenza esistente).
Se il carico sul cluster 3 di Call Bridge viene controllato dopo le chiamate degli esempi 1 e 2 (scenario 1), viene visualizzato un carico di 2000.
Si supponga che il valore di loadLimit per il cluster 3 del bridge di chiamate sia stato impostato su 2250 (solo come esempio) e che il bridge di chiamate sia superiore alla soglia di conferenza esistente calcolata come 0,80 * 2250 = 1800
Ci sono due casi ancora da differenziare in questo scenario.
Caso 1: più server nel gruppo ancora con un carico inferiore alla nuova soglia conferenza (50%)
Per gli altri due server del gruppo non è ancora stata gestita alcuna chiamata, quindi il carico è ancora pari a 0 e quindi entrambi potrebbero gestire la chiamata. La decisione finale viene quindi presa in base alla preferenza di Call Bridge per questo spazio. Poiché il cluster 3 con bridging di chiamata è già pieno, i sistemi sceglieranno la priorità più bassa tra cluster1 e cluster2, che in questo caso è cluster1.
2018-12-29 12:11:03.211 Info call 86: incoming encrypted SIP audio call from "sip:2001@steven.lab" to local URI "sip:stejanss.space@cluster.steven.lab" 2018-12-29 12:11:03.263 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster1' (priority: 1, load level: 0, conference is running: 0) 2018-12-29 12:11:03.405 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster2' (priority: 2, load level: 0, conference is running: 0) 2018-12-29 12:11:03.412 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster3' (priority: 0, load level: 2, conference is running: 1) 2018-12-29 12:11:03.412 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: using local server 'cluster1' (priority: 1, load level: 0, conference is running: 0) 2018-12-29 12:11:03.415 Info call 86: setting up UDT RTP session for DTLS (combined media and control) 2018-12-29 12:11:03.434 Info participant "2001@steven.lab" joined space bc218bfb-3bda-44f6-89a7-80d8dd616a80 (Steven Janssens's space)
Si noti che il livello di carico: 2 sul Call Bridge di cluster3 indica che è stato superato la soglia di conferenza esistente, quindi anche se lo spazio era attivo in quel punto, la chiamata non è bilanciata dal carico a quel server. Analizza invece la priorità di spazio più bassa degli altri bridge di chiamate con un livello di carico: 0 (che indica un utilizzo inferiore al 50%), che in questo caso è cluster1.
Caso 2: solo un server in un gruppo con un carico inferiore alla nuova soglia conferenza (50%) o alla soglia conferenza esistente (80%)
Dopo l'ultima chiamata (e le chiamate ad altro spazio per cluster2), i carichi descritti sono stati rilevati sui ponti di chiamata:
Si supponga ora che il valore di loadLimit impostato sul bridge di chiamate cluster1 sia 1300 e che questo bridge di chiamate superi la nuova soglia della conferenza, in quanto viene calcolata come 0,50 * 1300 = 650 e oltre la soglia della conferenza esistente di 0,80 * 1300 = 1040.
Nel caso in cui venga effettuata una nuova chiamata WebRTC su Call Bridge cluster3 per lo stesso spazio, lo spazio è attivo sia su cluster1 che su cluster3, ma entrambi superano la soglia di conferenza esistente e quindi cerca un altro server al di sotto della nuova soglia di conferenza (50%) o della soglia di conferenza esistente (80%). In questo caso, solo cluster2 sarebbe ancora al di sotto della soglia conferenza esistente, ma è già al di sopra della nuova soglia conferenza a causa di un'altra chiamata a un altro spazio gestito in Cluster2 Call Bridge.
2018-12-29 12:45:33.162 Info instantiating user "guest1685904798@cluster.steven.lab" 2018-12-29 12:45:33.162 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster3' (priority: 0, load level: 2, conference is running: 1) 2018-12-29 12:45:33.299 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster1' (priority: 1, load level: 2, conference is running: 1) 2018-12-29 12:45:33.299 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster2' (priority: 2, load level: 1, conference is running: 0) 2018-12-29 12:45:33.299 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: using remote server 'cluster2' (priority: 2, load level: 1, conference is running: 0)
Cluster2 è stato impostato con un valore loadLimit di 600 in questo punto. Con 400 come carico corrente prima dell'arrivo della nuova chiamata, è stata superata la nuova soglia della conferenza di 0,5 * 600 = 300 ma è ancora inferiore al limite della conferenza esistente di 0,8 * 600 = 480. Di conseguenza, nella query di sostituzione viene visualizzato come livello di carico: 1 (anziché 2 quando il bridge di chiamate supera la soglia dell'80%).
In questo caso, l'algoritmo di bilanciamento del carico non ha luogo in quanto sarebbe meglio inviare una risposta 488 al dispositivo di controllo delle chiamate che può decidere di instradare la chiamata a un altro Call Bridge all'interno del gruppo (che può essere al di sotto del limite dell'80%) o di instradarla a un gruppo Call Bridge diverso se il gruppo corrente ha esaurito le risorse (come opzione di fallback).
Il registro eventi non mostra esplicitamente questa parte in modo dettagliato, in quanto riporta semplicemente che ha superato la capacità:
2018-12-29 12:49:13.352 Info call 88: incoming encrypted SIP call from "sip:2020@steven.lab" to local URI "sip:stejanss.space@cluster.steven.lab" 2018-12-29 12:49:13.399 Info call 88: ending; local teardown, system participant limit reached - not connected after 0:00
Una volta inviata la chiamata a un bridge di chiamate diverso in grado di gestire il carico (ad esempio cluster2), viene visualizzato lo stesso algoritmo di bilanciamento del carico:
2018-12-29 12:49:13.434 Info call 624: incoming encrypted SIP call from "sip:2020@steven.lab" to local URI "sip:stejanss.space@cluster.steven.lab"
2018-12-29 12:49:13.475 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster2' (priority: 2, load level: 1, conference is running: 0) 2018-12-29 12:49:13.614 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: response from 'cluster3' (priority: 0, load level: 2, conference is running: 1) 2018-12-29 12:49:13.614 Info replace query for conference 4d2542b2-8e72-45f5-a66c-f8a95f355f93: using local server 'cluster2' (priority: 2, load level: 1, conference is running: 0) 2018-12-29 12:49:13.618 Info call 624: setting up UDT RTP session for DTLS (combined media and control) 2018-12-29 12:49:13.621 Info call 624: starting DTLS UDT media negotiation (as initiator) 2018-12-29 12:49:13.640 Info participant "2020@steven.lab" joined space bc218bfb-3bda-44f6-89a7-80d8dd616a80 (Steven Janssens's space)
Nota: in caso di chiamate al gateway, il CMS restituisce un messaggio di errore SIP 486. Per impostazione predefinita, CUCM interrompe il routing in base al parametro Service di Stop Routing su flag User Busy. È quindi possibile modificare questa impostazione per consentire il fallback per le chiamate del gateway agli altri bridge di chiamate.
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
30-Apr-2019 |
Versione iniziale |