Accodamento messaggi può funzionare tramite il bilanciamento del carico di rete

Questo articolo descrive il funzionamento di Microsoft Message Queuing (MSMQ) tramite Bilanciamento carico di rete.

Versione originale del prodotto: Accodamento messaggi Microsoft
Numero KB originale: 899611

Introduzione

L'articolo seguente illustra come MSMQ può funzionare su Bilanciamento carico di rete. Questo articolo illustra anche le possibili configurazioni non corrette di MSMQ.

Importante

In questo articolo sono contenute informazioni relative alla modifica del Registro di sistema. Assicurarsi di eseguire il backup del Registro di sistema prima di modificarlo. e di sapere come ripristinarlo in caso di problemi. Per altre informazioni su come eseguire il backup, ripristinare e modificare il Registro di sistema, vedere Informazioni sul Registro di sistema di Windows per gli utenti esperti.

Configurazioni supportate

MSMQ è supportato in un ambiente Bilanciamento carico di rete per l'invio e la ricezione di messaggi nelle configurazioni seguenti:

  • Messaggistica non transazionale tramite Direct=TCP
  • Messaggistica non transazionale tramite Direct=OS con convalida disabilitata
  • Messaggistica non transazionale tramite Direct=HTTP
  • Messaggistica transazionale usando una configurazione specifica che usa server di archiviazione e inoltro e un singolo server back-end.

Nota

In una di queste configurazioni sono supportate solo le code private. Poiché il nome della rete virtuale non avrà un oggetto servizio directory Active Directory corrispondente, non è possibile eseguire query sulle proprietà della coda di destinazione. È possibile inviare messaggi alle code pubbliche purché si acceda alle code pubbliche usando un nome di formato diretto anziché usando il percorso standard.

Messaggistica non transazionale tramite Direct=TCP

Questa configurazione funziona senza particolari modifiche di configurazione.

Messaggistica non transazionale tramite Direct=OS

Questa configurazione funziona solo quando la convalida è disabilitata. Per disabilitare la convalida, è necessario aggiungere la chiave del Registro di sistema seguente in MSMQ 2.0 insieme a Windows 2000 e in MSMQ 3.0 insieme a Windows XP o Windows Server 2003.

Avviso

L'errata modifica del Registro di sistema tramite l'editor o un altro metodo può causare seri problemi. Questi problemi potrebbero richiedere la reinstallazione del sistema operativo. Microsoft non è in grado di garantire la soluzione di tali problemi. La modifica del Registro di sistema è a rischio e pericolo dell'utente. Seguire questa procedura e quindi uscire dall'editor del Registro di sistema:

  1. Fare clic sul pulsante Start, scegliere Esegui, digitare regedit e quindi fare clic su OK.
  2. Individuare e quindi fare clic sulla chiave seguente nel Registro di sistema:
    HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\Parameters
  3. Scegliere Nuovo dal menu Modifica, quindi fare clic su Valore DWORD.
  4. Digitare IgnoreOSNameValidation e quindi premere INVIO.
  5. Scegliere Modifica dal menu Modifica.
  6. Digitare 1 e quindi fare clic su OK.

Per impostazione predefinita, MSMQ verifica il messaggio ricevuto per determinare se il messaggio è destinato al computer locale. Se il messaggio non è destinato al computer locale, il messaggio viene rifiutato.

Quando un messaggio viene inviato a un server che si trova dietro un servizio di bilanciamento del carico di rete, il messaggio viene inviato usando il nome del servizio di bilanciamento del carico o il nome di rete assegnato all'INDIRIZZO IP virtuale nel servizio di bilanciamento del carico di rete. Il servizio di bilanciamento del carico di rete instrada quindi il messaggio a un ricevitore MSMQ. Tuttavia, Gestione code locale nel ricevitore MSMQ identifica che il nome del computer e il nome di destinazione nel messaggio non corrispondono e Gestione code elimina il messaggio. Dopo aver impostato questo valore del Registro di sistema, MSMQ non convalida più il nome del computer di destinazione e accetterà il messaggio.

Messaggistica non transazionale tramite Direct=HTTP

Questa configurazione è supportata senza particolari modifiche alla configurazione.

Messaggistica transazionale tramite una configurazione specifica che usa server di archiviazione e inoltro e un singolo server back-end

In questa configurazione, la messaggistica transazionale supporta solo la messaggistica HTTP quando i nodi che ricevono messaggi eseguono il mapping della coda di ricezione a un singolo server back-end. I messaggi transazionali HTTP non sono supportati quando le code di destinazione si trovano nei singoli nodi.

Per altre informazioni su questa configurazione, vedere il white paper Microsoft Message Queuing (MSMQ) HTTP Deployment Scenarios for Windows Server 2003 and Windows XP Professional .For more information about this configuration, see the Microsoft Message Queuing (MSMQ) HTTP Deployment Scenarios for Windows Server 2003 and Windows XP Professional white paper.

Una configurazione per la messaggistica transazionale in cui le code di destinazione si trovano in ogni nodo membro dietro un servizio di bilanciamento del carico non supporta l'invio o la ricezione di messaggi per i motivi seguenti:

  • Messaggi duplicati
  • Messaggi non riconosciuti sui mittenti
  • Transazioni incomplete

Messaggi transazionali e riconoscimenti

Quando un messaggio transazionale viene ricevuto da un computer, il messaggio viene scritto nell'archiviazione, il messaggio viene registrato e viene inviato un conferma dell'ordine al mittente. Il riconoscimento dell'ordine viene inviato di nuovo all'indirizzo IP da cui proviene il messaggio originale usando direct=TCP. Il messaggio viene quindi ricevuto dal mittente e il messaggio viene rimosso dalla coda in uscita.

Quando un acknowledgment non viene ricevuto dal server di invio entro un intervallo di tempo specificato, il messaggio originale viene inviato nuovamente. Quando il messaggio arriva alla destinazione, il server di destinazione esamina il log e rileva che il server ha già ricevuto il messaggio. Pertanto, il server di destinazione rifiuta il messaggio e restituisce un altro riconoscimento. Il server di destinazione continuerà a inviare riconoscimenti fino alla ricezione dell'ordine da parte del mittente. La registrazione impedisce la ricezione di un messaggio duplicato e l'conferma dell'ordine conferma al mittente che il messaggio è stato ricevuto.

Problemi con i servizi di bilanciamento del carico di rete e i messaggi transazionali

Quando un messaggio viene inviato tramite un servizio di bilanciamento del carico, il computer di destinazione vede il messaggio come proveniente dal servizio di bilanciamento del carico. Il computer di destinazione invia quindi il riconoscimento dell'ordine tramite una nuova sessione. Pertanto, il servizio di bilanciamento del carico non può usare la stessa logica per la gestione dello stato per un server Web o per un servizio simile.

Il problema più comune in questo scenario è che diversi server inviano messaggi attraverso un servizio di bilanciamento del carico, ma tutti i riconoscimenti dell'ordine vengono inviati al server non corretto. Questo comportamento causa la compilazione di messaggi non riconosciuti nella coda in uscita dell'invio di computer. Inoltre, quando l'ordine di riconoscimento non viene ricevuto dal mittente, il mittente invierà nuovamente il messaggio. Il secondo tentativo di inviare il messaggio tramite il servizio di bilanciamento del carico può inviare il messaggio a un computer diverso. Questo computer non avrà mai visto questo messaggio in precedenza e il messaggio verrà elaborato come nuovo messaggio. Tenere presente che la convalida è stata disabilitata per consentire ai messaggi di spostarsi nel bilanciamento del carico di rete.

Un messaggio inviato attraverso un servizio di bilanciamento del carico può essere ricevuto ed elaborato una volta da tutti i server che si trovano dietro il servizio di bilanciamento del carico prima della ricezione di un ordine. Inoltre, le transazioni che si estendono su più messaggi non possono sempre essere elaborate o arrivate in ordine. MSMQ non supporta pertanto l'invio di messaggi transazionali quando si usa un bilanciamento del carico di rete.