Bạn có thể sử dụng Chế Độ Drain Mode (RDS Drain Mode) để bảo trì các máy chủ terminal trong một farm Dịch Vụ Máy Tính Từ Xa (Remote Desktop Services). Nếu bạn bật Drain Mode cho máy chủ RDS, bạn có thể ngăn máy chủ chấp nhận các kết nối RDP mới của người dùng, và các kết nối RD hiện tại sẽ vẫn hoạt động cho đến khi người dùng đăng xuất thủ công hoặc tự động do hết thời gian chờ phiên RDS. Sau đó, bạn sẽ có thể bảo trì máy chủ Windows Server mà không làm gián đoạn hoạt động của farm RDS (cài đặt bản cập nhật, thay đổi cài đặt máy chủ hoặc ứng dụng, cập nhật file cấu hình, v.v.).
Chế Độ Drain Mode Trên Windows Server Remote Desktop Services Là Gì?
Chế độ Drain Mode xuất hiện từ Windows Server 2008 (Terminal Services Server Drain mode). Khi bạn đặt một máy chủ RDS vào chế độ drain, nó không thể chấp nhận các kết nối mới của người dùng. Thông thường, chế độ này được sử dụng khi quản trị viên máy chủ cần bảo trì máy chủ (cài đặt bản cập nhật Windows, cấu hình hoặc cập nhật ứng dụng) mà không ảnh hưởng đến tính sẵn sàng của toàn bộ farm RDS. Một máy chủ RDS có thể hoạt động ở ba loại Drain Mode:
- Cho Phép Tất Cả Kết Nối (chế độ mặc định) — Máy chủ Phiên RDS chấp nhận các kết nối mới;
- Cho Phép Kết Nối Lại, Nhưng Ngăn Đăng Nhập Mới — Người dùng được phép kết nối lại các phiên hiện có, nhưng không cho phép các phiên mới. Nếu bạn khởi động lại máy chủ, người dùng sẽ không thể kết nối với nó;
- Cho Phép Kết Nối Lại, Nhưng Ngăn Đăng Nhập Mới Cho Đến Khi Máy Chủ Được Khởi Động Lại – Chế độ này tương tự như trước, nhưng sau khi khởi động lại, chế độ đăng nhập người dùng được đặt lại thành Cho Phép Tất Cả Kết Nối.
Cách Ngăn Đăng Nhập Người Dùng Mới Trên Máy Chủ Phiên RD?
Bạn có thể bật Drain Mode trên máy chủ RDS của mình thông qua cài đặt bộ sưu tập RDS.
- Mở Server Manager -> All Servers -> và thêm tất cả các máy chủ RDS của farm;
- Chọn Remote Desktop Services trên bảng điều khiển bên trái trong Server Manager. Chọn RDS Collections;
- Trong phần
HOST SERVERS, chọn máy chủ bạn muốn bật Drain Mode và chọn Do not allow new connections trong menu ngữ cảnh.
Người dùng có phiên Remote Desktop hoạt động sẽ có thể kết nối lại với máy chủ, trong khi tất cả các kết nối mới sẽ được chuyển tiếp bởi RD Connection Broker đến các máy chủ khác trong farm RDS của bạn.
Bạn cũng có thể đặt Drain Mode cục bộ trên máy chủ RDS qua dấu nhắc lệnh. Để làm điều đó, lệnh change logon được sử dụng.
Để ngăn kết nối người dùng mới, hãy chạy lệnh dưới đây:
change logon /drain
New user logons are DISABLED, but reconnections to existing sessions are ENABLED
Bây giờ, nếu một người dùng mới cố gắng kết nối trực tiếp với máy chủ RDS (khi không sử dụng RD Connection Broker), lỗi sau sẽ xuất hiện:
Remote logins are currently disabled.Đồng thời, một sự kiện với Event ID 1070 và TerminalServices-RemoteConnectionManager làm nguồn xuất hiện trong nhật ký máy chủ RDS:
A logon request was denied because the RD Session Host server is currently in drain mode and therefore not accepting new user logons. To configure the server to allow new user logons, use the Remote Desktop Services Configuration tool.Lệnh sau bật Drain Mode cho đến khi khởi động lại máy chủ:
change logon /drainuntilrestartĐể ngăn ngay cả người dùng có phiên hoạt động kết nối với máy chủ, hãy chạy lệnh này:
change logon /disableSession logins are currently DISABLEDNếu bạn đang kết nối với Remote Desktop Session Host ở chế độ phiên khách và vô hiệu hóa truy cập bằng lệnh trên rồi đăng xuất (logoff.exe), bạn chỉ có thể kết nối với máy chủ qua bảng điều khiển (
mstsc /admin).Để cho phép kết nối, hãy sử dụng lệnh này:
change logon /enableĐể kiểm tra xem Drain Mode có được bật trên máy chủ RDS của bạn không, hãy chạy lệnh dưới đây:
change logon /querySession logins are currently ENABLEDNếu bạn cố gắng đặt Drain Mode trên máy chủ của mình bằng
change logonvà thấy lỗi sau:Connections are currently ENABLED by Group Policy for this machine, unable to change.Điều này có nghĩa là Drain Mode được cấu hình qua GPO. Thiết lập chính sách được gọi là Allow users to connect remotely using Remote Desktop Services và bạn có thể tìm thấy nó trong phần GPO sau: Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Connections.
Vô hiệu hóa chính sách hoặc đặt nó thành Not Configured.
Đặt Drain Mode Cho Máy Chủ RDS Windows Server Qua PowerShell
Bạn có thể quản lý cài đặt Drain Mode của bộ sưu tập máy chủ RDS hoặc máy chủ RDS độc lập bằng PowerShell:
Import-Module RemoteDesktop
# Để từ chối kết nối RDP mới đến Máy Chủ Phiên Dịch Vụ Máy Tính Từ Xa
Set-RDSessionHost -SessionHost mun-saprdsh1.woshub.com -NewConnectionAllowed No -ConnectionBroker mun-saprdcb.woshub.com
# Để cho phép kết nối
Set-RDSessionHost -SessionHost mun-saprdsh1.woshub.com -NewConnectionAllowed Yes -ConnectionBroker mun-saprdcb.woshub.comNếu bạn bật hoặc tắt Drain Mode, các giá trị của các tham số đăng ký sau sẽ thay đổi:
- WinStationsDisabled HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\
- TSServerDrainMode HKLM\System\CurrentControlSet\Control\Terminal Server\
Ví dụ, khi chế độ Drain được bật, các giá trị đăng ký được đặt thành WinStationsDisabled = 0 và TSServerDrainMode = 2.
Bạn cũng có thể kiểm tra xem Drain Mode trên máy chủ của mình có được bật hay không bằng script PowerShell dưới đây:
Get-WmiObject win32_terminalservicesetting -N "root\cimv2\terminalservices" | %{
if ($_.logons -eq 1){
"Disabled"}
Else {
switch ($_.sessionbrokerdrainmode)
{
0 {"Enabled"}
1 {"DrainUntilRestart"}
2 {"Drain"}
default {"error"}
}
}
}
Để bật Drain Mode qua PowerShell (tương tự change logon /Drain):
$temp = (Get-WmiObject win32_terminalservicesetting -N "root\cimv2\terminalservices")
$temp.sessionbrokerdrainmode=2
$temp.put()
Để đặt máy chủ RDS về chế độ bình thường (change logon /enable), hãy chạy lệnh này:
$temp = (Get-WmiObject win32_terminalservicesetting -N " root\cimv2\terminalservices ")
$temp.sessionbrokerdrainmode=0
$temp.logons=0
$temp.put()