Principiul de funcționare
Când selectați un server, utilizatorul este bifat pentru a vedea dacă utilizatorul are o sesiune neterminată. Dacă se găsește o astfel de sesiune, sesiunea terminalului este restabilită. Dacă un utilizator nu are nicio sesiune pe niciun server din fermă, el va fi redirecționat către server cu cele mai puține sesiuni. Compararea numărului de sesiuni ia în considerare greutatea specifică a fiecărui server. De exemplu, dacă serverul are două servere cu greutăți specifice de 50 și 100, primul server va fi redirecționat de două ori ca sesiuni mai puțin decât cel de-al doilea.
Fișierele Brokerul sesiunii TS se află în directorul:% systemroot% \ system32 \ tssesdir. Informațiile despre conexiunile curente sunt stocate în baza de date tsesdir.edb. Pentru fiecare sesiune sunt definite următoarele:
• numele serverului pe care este instalată sesiunea,
• identificatorul acestei sesiuni (atribuit de serverul terminal atunci când conexiunea este stabilită),
• Conectare utilizator,
• domeniul de care aparține utilizatorul,
• Protocolul utilizat la conectare (RDP, ICA, etc.)
• data și ora creării sesiunii,
• data și ora deconectării sesiunii,
• parametrii de rezoluție (numărul de pixeli în lățime și înălțime);
• adâncimea de culoare,
• Un identificator care determină dacă conexiunea este un desktop complet pe ecran sau este configurat să pornească un singur program când deschideți o sesiune.
Ultimul parametru, împreună cu numele de utilizator și domeniul, se utilizează la restabilirea sesiunii. Dacă utilizatorul se conectează utilizând clientul Remote Desktop în care este programat un alt program la pornire, acesta nu va fi redirecționat către sesiunea dezactivată.
Locația bazei de date tsesdir.edb poate fi modificată utilizând cheia de registry WorkingDirectory. care se află în ramura: HKLM \ System \ CurrentControlSet \ Services \ Tssdis \ Parameters.
Uneori, serverele terminale trebuie repornite în timpul întreținerii sau din cauza unei defecțiuni. Brokerul sesiunii TS trebuie să identifice astfel de situații și să oprească distribuirea sesiunilor pe servere inaccesibile. Acest lucru se întâmplă în conformitate cu următorul algoritm.
- Brokerul sesiunii TS detectează o redirecționare nereușită a sesiunii.
- După o anumită perioadă de timp (în mod implicit, un minut), începe să pingă serverul "suspect".
- Dacă serverul rămâne indisponibil (nu răspunde la ping-uri) în cadrul numărului specificat de încercări, acesta este eliminat din baza de date TS Session Broker.
- Când serviciul tssdis este repornit, starea bazei de date este restabilită.
Parametrii acestui proces pot fi configurați flexibil utilizând cheile de registry (Figura 1), localizate în ramura: HKLM \ System \ CurrentControlSet \ Services \ Tssdis \ Parameters.
Fig. 1. Setările serviciului Broker de sesiuni TS
Să le analizăm mai detaliat.
• PingMode. Valoarea implicită este 0. Se recomandă să nu modificați acest parametru. Valorile rămase sunt utilizate exclusiv pentru depanare.
• TimeServerSilentBeforePing. Valoarea implicită este 60. Specifică timpul, în secunde, după care TS Session Broker pornește ping-ul serverului terminal după o încercare de conexiune nereușită.
• TimeBetweenPings. Valoarea implicită este 10. Setează numărul de secunde dintre încercările de ping.
• NumberFailedPingsBeforePurge. Valoarea implicită este 3. Specifică numărul de încercări de ping la server înainte de al scoate din baza de date.
• RecoverWhenStart. Implicit este 1. Specifică dacă trebuie să restabiliți baza de date atunci când serviciul tssdis este repornit.
După efectuarea modificărilor, serviciul tssdis trebuie repornit. Cu valorile implicite, un server dezactivat este eliminat din baza de date în aproximativ două minute. Uneori poate exista o situație în care serverul terminal nu este capabil să accepte conexiuni noi, dar poate răspunde la ping-uri. În acest caz, Terminal Services Session Broker nu va funcționa corect.
Instalare și configurare
Instrucțiuni detaliate pentru instalarea și configurarea Brokerului de sesiuni de servicii Terminal Services pot fi găsite pe site-ul Microsoft TechNet.
În mod condiționat, acesta poate fi împărțit în trei etape principale.
- Stabiliți rolul serverului terminal cu serviciul TS Session Broker (Figura 2).
- Adăugați servere terminale în grupul Componente sesiune de adrese (grup local pe server cu TS Session Broker instalat).
- Configurați serverele terminale pentru a utiliza brokerul de sesiuni TS.
Fig. 2. Serviciul TS Session Broker din modulul snap-in Server Manager
În mod separat, aș dori să vorbesc despre trăsăturile de echilibrare a sesiunilor de mediere a serviciilor de terminal.
Când serverul este activat în fermă, conexiunile terminalelor la acesta încep să fie distribuite între toți membrii fermei. Dacă conexiunea merge prin numele serverului și TS Session Broker încearcă să direcționeze utilizatorul către un alt server, apare o eroare:
Particularități de utilizare practică
Când utilizați Terminal Services Session Broker, utilizatorii se pot plânge de faptul că trebuie să introduceți acreditările de două ori atunci când deschideți o sesiune. Exemple de astfel de subiecte pe forumurile Technet:
Problema este că serverul, după ce a primit acreditările utilizatorului la prima conexiune, îl redirecționează către alt server terminal. În acest caz, acreditările nu sunt transmise și utilizatorul este obligat să le introducă a doua oară pentru a vă conecta la serverul redirecționat. Pentru Windows XP cu Service Pack 3 și versiuni anterioare ale sistemelor de operare, acest lucru poate fi rezolvat utilizând Cred SSP. Această tehnologie permite programelor să transfere datele de conectare ale utilizatorilor de la un computer local. Puteți citi despre acest lucru în articol: KB951608.
Acest lucru va fi discutat în detaliu într-unul din următoarele materiale.
Uneori există o situație în care TS Session Broker oprește trimiterea conexiunilor la unul sau mai multe servere din fermă. Ajută la repornirea serviciului tssdis, dar după o anumită perioadă apare din nou problema. Pentru a remedia acest lucru, puteți utiliza articolul KB955365
Esența problemei este după cum urmează. În timpul deschiderii sesiunii, încărcarea de pe server este, de obicei, mai mare decât pentru funcționarea normală. În acest sens, pentru un singur server, în mod implicit, sunt posibile nu mai mult de 16 solicitări simultane de conectare. Acest lucru se face pentru a evita o lipsă de resurse pe serverul terminal de îndată ce este inclusă în fermă.
Numărul de conexiuni incomplete crește cu unul la momentul redirecționării sesiunii, utilizând Terminal Services Session Broker. În consecință, după ce conexiunea este terminată și utilizatorul deschide sesiunea, acesta este redus cu unul. În cazul în care contorul de conexiuni concurente atinge 16, TS Session Broker oprește trimiterea sesiunilor la acesta.
Dacă sesiunea este dezactivată în timpul redirecționării, TS Session Broker nu reduce contorul și, cu timpul, conexiunile noi nu mai sunt trimise la unul sau mai multe servere.
Ca soluție, puteți crește numărul de conexiuni simultane. Acest lucru este setat de cheia de registry LB_MaxNumberOfPendingRedirections. situată într-o ramură
Dacă nu există o astfel de cheie, aceasta trebuie creată.
În unele cazuri, pentru a înțelege problemele din activitatea Session Brokerului TS, este util să activați modul de înregistrare. Acest proces este descris în KB327508.
Pentru a salva jurnalul într-un fișier, trebuie să adăugați cheia TraceOutputMode cu o valoare de 3 la HKLM \ SYSTEM \ CurrentControlSet \ Services \ Tssdis \ Parameters
și reporniți serviciul. Fișierul istoric implicit este localizat în director. % systemroot% \ system32 \ tssesdir. Următoarele evenimente sunt înregistrate acolo:
• Pornirea serviciului TS Broker;
• Oprirea serviciului;
• Conectarea serverului la fermă;
• ieșirea serverului din fermă;
• Conectare utilizator;
• Deconectați utilizatorul;
• Restaurați sesiunea;
• Ieșirea utilizatorului;
• Mesajele jurnalului de evenimente legate de activitatea brokerului de sesiuni TS.
În funcționarea normală, este mai bine să dezactivați înregistrarea. Pentru aceasta, parametrul TraceOutputMode trebuie setat la 0.
Uneori, pentru lucrările tehnice de pe server este necesar să interzicăți instalarea de noi sesiuni. O astfel de interdicție nu împiedică serverul să participe la distribuția conexiunilor primite la acesta. În unele cazuri, acest lucru se poate face pentru a reduce încărcarea de pe serverul responsabil pentru recepția inițială a conexiunii.
Este convenabil să monitorizați distribuția corectă a sesiunilor terminale utilizând Terminal Server Management Pack din System Center Operations Manager (Figura 3).
Fig. 3. Programul de distribuire a sesiunilor între serverele terminale
Programul de distribuire a sesiunilor între serverele terminale vă permite să observați la timp greșelile în balanțe și să luați măsurile adecvate pentru a le elimina.
Resurse suplimentare
Cine știe dacă există o modalitate de a face o selecție din baza de date tsesdir.edb pentru a obține o secțiune de sesiuni de utilizatori și despre fiecare dintre ele. Și apoi nu am putut să o fac, a trebuit să scriu plug-in-ul pentru Session Broker și să-mi rulez baza de date utilizând acest plugin.
Colegii, spune-mi ce instrumente monitorizați conexiunile la serverele terminale (câte și la ce server a fost eliminat terminalul terminalului, cine dintre utilizatorii la care este conectat serverul ...)