RDS ড্রেইন মোড ব্যবহার করে রিমোট ডেস্কটপ সার্ভিসেস ফার্মের টার্মিনাল হোস্টগুলো রক্ষণাবেক্ষণ করা যায়। আপনার RDS সার্ভারের জন্য ড্রেইন মোড সক্ষম করলে, সার্ভারটি নতুন ব্যবহারকারীদের RDP সংযোগ গ্রহণ করবে না, কিন্তু বর্তমান RD সংযোগগুলো ব্যবহারকারীরা ম্যানুয়ালি লগ অফ না করার পর্যন্ত বা RDS সেশন টাইমআউট দ্বারা স্বয়ংক্রিয়ভাবে লগ অফ না হওয়া পর্যন্ত সক্রিয় থাকবে। এরপর আপনি আপনার উইন্ডোজ সার্ভার হোস্টকে RDS ফার্মের অপারেশন বাধা दिए বিনা রক্ষণাবেক্ষণ করতে পারবেন (আপডেট ইনস্টল করা, সার্ভার বা অ্যাপ সেটিংস পরিবর্তন করা, কনফিগারেশন ফাইল আপডেট করা ইত্যাদি)।
উইন্ডোজ সার্ভার রিমোট ডেস্কটপ সার্ভিসেসে ড্রেইন মোড কী?
ড্রেইন মোড উইন্ডোজ সার্ভার ২০০৮-এই আসে (Terminal Services Server Drain mode)। যখন আপনি একটি RDS হোস্টকে ড্রেইন মোডে রাখেন, তখন সেটি নতুন ব্যবহারকারীদের সংযোগ গ্রহণ করতে পারে না। সাধারণত এই মোডটি ব্যবহার করা হয় যখন একটি সার্ভার প্রশাসককে সার্ভার রক্ষণাবেক্ষণ করতে হয় (উইন্ডোজ আপডেট ইনস্টল করা, অ্যাপ কনফিগার বা আপডেট করা) পুরো RDS ফার্মের উপলব্ধতা প্রভাবিত না করে। একটি RDS হোস্ট ড্রেইন মোডের তিনটি প্রকারে কাজ করতে পারে:
- সব সংযোগ অনুমতি দিন (ডিফল্ট মোড) — RD সেশন হোস্ট নতুন সংযোগ গ্রহণ করে;
- রিকানেকশন অনুমতি দিন, কিন্তু নতুন লগ অন বাধা দিন — ব্যবহারকারীদের বিদ্যমান সেশনগুলোতে পুনরায় সংযোগ করার অনুমতি আছে, কিন্তু নতুন সেশন অনুমোদিত নয়। আপনি সার্ভার রিস্টার্ট করলে ব্যবহারকারীরা সেটিতে সংযোগ করতে পারবেন না;
- রিকানেকশন অনুমতি দিন, কিন্তু সার্ভার রিস্টার্ট না হওয়া পর্যন্ত নতুন লগ অন বাধা দিন — এই মোডটি পূর্বেরটির মতোই, কিন্তু রিস্টার্টের পর ব্যবহারকারীর লগ অন মোড Allow All Connections-এ রিসেট হয়ে যায়।
RD সেশন সার্ভারে নতুন ব্যবহারকারী লগ অন বাধা দেওয়া
আপনি আপনার RDS হোস্ট সার্ভারে RDS কালেকশন সেটিংসের মাধ্যমে ড্রেইন মোড সক্ষম করতে পারেন।
- সার্ভার ম্যানেজার খুলুন -> All Servers -> এবং ফার্মের সব RDS সার্ভার যোগ করুন;
- সার্ভার ম্যানেজারের বাম প্যানেলে Remote Desktop Services সিলেক্ট করুন। RDS Collections সিলেক্ট করুন;
HOST SERVERSসেকশনে, যে সার্ভারের জন্য ড্রেইন মোড সক্ষম করতে চান সেটি সিলেক্ট করুন এবং কনটেক্সট মেনু থেকে Do not allow new connections বেছে নিন।
সক্রিয় রিমোট ডেস্কটপ সেশন ունեցা ব্যবহারকারীরা সার্ভারে পুনরায় সংযোগ করতে পারবে,حينकि সকল নতুন সংযোগ RD কানেকশন ব্রোকার দ্বারা আপনার RDS ফার্মের অন্য হোস্টগুলোতে ফরওয়ার্ড করা হবে।
আপনি RDS হোস্টে লোকালি কমান্ড প্রম্পটের মাধ্যমে ড্রেইন মোড সেট করতে পারেন। এর জন্য change logon কমান্ড ব্যবহার করা হয়।
নতুন ব্যবহারকারী সংযোগ বাধা देने জন্য নিচের কমান্ড চালান:
change logon /drain
New user logons are DISABLED, but reconnections to existing sessions are ENABLED
এখন, যদি কোনো নতুন ব্যবহারকারী সরাসরি RDS হোস্টে সংযোগ করার চেষ্টা করে (যখন RD কানেকশন ব্রোকার ব্যবহার করা হয় না), তবে নিচের ত্রুটি দেখায়:
Remote logins are currently disabled.
একই সাথে RDS হোস্ট লগে Event ID ১০৭০ এবং উৎস TerminalServices-RemoteConnectionManager সহ একটি ইভেন্ট দেখায়:
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.
নিচের কমান্ড সার্ভার রিস্টার্ট না হওয়া পর্যন্ত ড্রেইন মোড সক্ষম করে:
change logon /drainuntilrestart
সক্রিয় সেশন থাকা ব্যবহারকারীদের এমনকি হোস্টে সংযোগ করতে না দিতে এই কমান্ড চালান:
change logon /disable
Session logins are currently DISABLED
যদি আপনি ক্লায়েন্ট সেশন মোডে Remote Desktop Session Host-এ সংযুক্ত থাকেন এবং উপরের কমান্ড দিয়ে অ্যাক্সেস নিষিদ্ধ করুন এবং লগ অফ করুন (logoff.exe), তবে আপনি কনসোলের মাধ্যমে (mstsc /admin) সার্ভারে সংযোগ করতে পারবেন।
সংযোগ অনুমতি দিতে এই কমান্ড ব্যবহার করুন:
change logon /enable
আপনার RDS সার্ভারে ড্রেইন মোড সক্রিয় আছে কিনা যাচাই করতে নিচের কমান্ড চালান:
change logon /query
Session logins are currently ENABLED
যদি change logon ব্যবহার করে ড্রেইন মোড সেট করার চেষ্টা করার সময় নিচের ত্রুটি দেখায়:
Connections are currently ENABLED by Group Policy for this machine, unable to change.
এর মানে হলো ড্রেইন মোড GPO-এর মাধ্যমে কনফিগার করা হয়েছে। নীতির সেটিংটি হলো Allow users to connect remotely using Remote Desktop Services এবং এটি নিচের GPO সেকশনে পাওয়া যায়: Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Connections।
নীতিটি অক্ষম করুন বা Not Configured-এ সেট করুন।
পাওয়ারশেলের মাধ্যমে উইন্ডোজ সার্ভার RDS হোস্টের জন্য ড্রেইন মোড সেট করা
আপনি একটি RDS হোস্ট কালেকশন বা একটি স্বতন্ত্র RDS সার্ভারের ড্রেইন মোড সেটিংস পাওয়ারশেল ব্যবহার করে পরিচালনা করতে পারেন:
Import-Module RemoteDesktop
# নতুন RDP সংযোগ থেকে দূর থাকতে RDS হোস্ট বাধা দিন
Set-RDSessionHost -SessionHost mun-saprdsh1.woshub.com -NewConnectionAllowed No -ConnectionBroker mun-saprdcb.woshub.com
# সংযোগ অনুমতি দিন
Set-RDSessionHost -SessionHost mun-saprdsh1.woshub.com -NewConnectionAllowed Yes -ConnectionBroker mun-saprdcb.woshub.com
যখন আপনি ড্রেইন মোড সক্ষম বা অক্ষম করেন, তবে নিচের রেজিস্ট্রি প্যারামিটারগুলোর মান পরিবর্তন হয়:
- WinStationsDisabled HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\
- TSServerDrainMode HKLM\System\CurrentControlSet\Control\Terminal Server\
উদাহরণস্বরূপ, যখন ড্রেইন মোড সক্রিয় থাকে, রেজিস্ট্রি মানগুলো সেট হয় WinStationsDisabled = 0 এবং TSServerDrainMode = 2।
নিচের পাওয়ারশেল স্ক্রিপ্ট ব্যবহার করে আপনার হোস্টে ড্রেইন মোড সক্রিয় আছে কিনা যাচাই করতে পারেন:
Get-WmiObject win32_terminalservicesetting -N "root\cimv2\terminalservices" | %{
if ($_.logons -eq 1){
"Disabled"}
Else {
switch ($_.sessionbrokerdrainmode)
{
0 {"Enabled"}
1 {"DrainUntilRestart"}
2 {"Drain"}
default {"error"}
}
}
}
পাওয়ারশেলের মাধ্যমে ড্রেইন মোড সক্ষম করা ( change logon /Drain -এর সমতুল্য):
$temp = (Get-WmiObject win32_terminalservicesetting -N "root\cimv2\terminalservices")
$temp.sessionbrokerdrainmode=2
$temp.put()
RDS হোস্টকে নরমাল মোডে আনা ( change logon /enable ):
$temp = (Get-WmiObject win32_terminalservicesetting -N "root\cimv2\terminalservices")
$temp.sessionbrokerdrainmode=0
$temp.logons=0
$temp.put()