রিমোট ডেস্কটপ কানেকশন ব্রোকার (RDCB) উইন্ডোজ সার্ভারে রিমোট ডেস্কটপ সার্ভিসেস (RDS) ভূমিকার একটি কম্পোনেন্ট। RD কানেকশন ব্রোকার RDS ফার্ম সার্ভারগুলো লোড-ব্যালেন্স করে (RDS ফার্মে কানেক্ট করার সময় ব্যবহারকারীকে সবচেয়ে কম লোডকৃত RDS হোস্টে রিডাইরেক্ট করে), ব্যবহারকারীদের VDI এবং RemoteApps-এ অ্যাক্সেস দেয়, ফার্মে RDS হোস্ট কনফিগারেশন ম্যানেজ করে। এছাড়া, RDCB ব্যবহারকারীদের তাদের সেশন পুনরায় সংযোগ করতে দেয়: RDS-এ কানেক্ট করার সময়, RDCB চেক করে যে ফার্মের অন্য সার্ভারে ব্যবহারকারীর কোনো অসম্পূর্ণ সেশন আছে কিনা এবং সেগুলো তাদের পূর্বের সেশনে রিডাইরেক্ট করে।
এই নিবন্ধে, আমরা দেখব কীভাবে একটি ফল্ট-টলারেন্ট হাই আভেইলেবিলিটি RD কানেকশন ব্রোকার ইনস্ট্যান্স কনফিগার করতে হয় যা RDCB ভূমিকা থাকা সার্ভারlerden যেকোনো একটি ফেল করলেও তার ফিচারগুলো রক্ষা করে। রিমোট ডেস্কটপ কানেকশন ব্রোকার ডেটা সংরক্ষণের জন্য MS SQL Server ২০১৯ চালিত একটি ডেটাবেস সার্ভার ব্যবহার করা হবে। একক পয়েন্ট অফ ফেইলার এড়াতে, RDCB SQL ডেটাবেসও ফল্ট-টলারেন্ট কনফিগারেশনে ডিপ্লয় করা উচিত। এই উদাহরণে, আমরা SQL Server Always On Availability Group কনফিগার করা দুটি SQL Server নোড ব্যবহার করব।
RD Connection Broker High Availability-এর প্রয়োজনীয়তা এবং সমর্থিত কনফিগারেশন:
- কমপক্ষে ২টি সার্ভার RD Connection Broker ভূমিকা সহ উইন্ডোজ সার্ভার ২০২২/২০১৯-এ চলমান;
- RDCB SQL ডেটাবেসের জন্য হাই আভেইলেবিলিটি চাইলে, কমপক্ষে ২টি হোস্ট SQL Server ২০১৪ বা নতুন (Standard বা Enterprise এডিশন) দরকার। এই উদাহরণে, আমরা প্রতিটি সার্ভারে স্ট্যান্ডঅ্যালোন MS SQL Server ২০১৯ Enterprise ইনস্টল করেছি। আপনি যদি HA SQL ডেটাবেস না চান, তবে একটি সার্ভারে SQL Express যথেষ্ট;
- RD Connection Broker ভূমিকা থাকা সার্ভারগুলোরে SQL Server Native Client ইনস্টল করুন;
- RD Connection Broker সার্ভারগুলোর আপনার SQL ডেটাবেস এবং SQL ইনস্টলেশন ফোল্ডারের ওপর ফুল কন্ট্রোল দিন;
- ফার্মে কমপক্ষে একটি সার্ভার Remote Desktop Session Host ভূমিকা সহ।
আমরা দুটি সার্ভারের একটি হাই আভেইলেবল RDCB কনফিগারেশন তৈরি করব। উভয় সার্ভারেই RD Connection ভূমিকা এবং SQL Server ইনস্টল থাকবে। SQL Server ডেটাবেসের হাই আভেইলেবিলিটি এবং ডিজাস্টার রিকভারি SQL Server Always On Availability Group-এ 의해 প্রদান করা হবে।
উইন্ডোজ সার্ভার ২০১২ এবং নতুন সংস্করণে, RDS Connection Broker Active/Active মোডে হাই আভেইলেবিলিটি প্রদান করে। এই মোডে, সব RDCB সার্ভার সক্রিয় থাকে এবং ইনকামিং কানেকশন প্রসেস করতে পারে। এতে বড় রিমোট ডেস্কটপ এনভায়রনমেন্টে উচ্চ RDCB উপলব্ধতা এবং স্কেলেবিলিটি নিশ্চিত হয়।
রিমোট ডেস্কটপ কানেকশন ব্রোকারের জন্য ইনফ্রাস্ট্রাকচার প্রস্তুতি
RD Connection Broker ভূমিকা থাকা সব সার্ভারকে স্ট্যাটিক IP অ্যাসাইন করুন এবং সেগুলো আপনার এক্টিভ ডিরেক্টরি ডোমেইনে জয়েন করুন।
srv-rds1.woshub.com—192.168.13.20srv-rds2.woshub.com—192.168.13.21
এক্টিভ ডিরেক্টরিতে একটি নতুন সিকিউরিটি গ্রুপ তৈরি করুন (MUN_RD_Connection_Brokers) এবং সব RDCB সার্ভারকে তাতে যোগ করুন। ADUC স্ন্যাপ-ইন (dsa.msc) বা পাওয়ারশেল ব্যবহার করে গ্রুপ তৈরি করুন:
New-ADGroup "MUN_RD_Connection_Brokers" -path 'OU=Groups,OU=Berlin,DC=woshub,DC=com' -GroupScope Global -PassThru –Verbose
দুই RDS হোস্টকে গ্রুপে যোগ করুন:
Add-AdGroupMember -Identity "MUN_RD_Connection_Brokers" -Members srv-rds1$,srv-rds2$

আপনার RDS ফার্মের ক্লাস্টার নামের জন্য DNS-এ A রেকর্ড তৈরি করুন (আমাদের উদাহরণে, এটি MUNRDCB)। DNS রেকর্ডগুলোতে সব RDCB সার্ভারের IP ঠিকানা থাকতে হবে। এটি RD Connection Broker সার্ভারগুলোর মধ্যে লোড ব্যালেন্সিং (Round Robin) সক্ষম করে। আমি নিচের এন্ট্রিগুলো তৈরি করেছি:
- A —
MUNRDCB.woshub.com 192.168.13.20(প্রথম RDCB সার্ভারের IP ঠিকানা — srv-rds1.woshub.com) - A —
MUNRDCB.woshub.com 192.168.13.21(দ্বিতীয় RDCB সার্ভারের IP ঠিকানা — srv-rds2.woshub.com)
পাওয়ারশেল ব্যবহার করে DNS-এ A রেকর্ড তৈরি করুন:
Add-DnsServerResourceRecordA -Name MUNRDCB -IPv4Address 192.168.13.20 -ZoneName woshub.com
Add-DnsServerResourceRecordA -Name MUNRDCB -IPv4Address 192.168.13.21 -ZoneName woshub.com

RDCB ভূমিকা থাকা সব সার্ভারে SQL Server Native Client ইনস্টল করুন। আপনি আপনার SQL Server সংস্করণের জন্য Microsoft ওয়েবসাইট থেকে SQL Server Native Client ডাউনলোড করতে পারেন বা SQL Server ইনস্টল ইমেজ থেকে কপি করতে পারেন (D:\1033_ENU_LP\x64\Setup\x64\sqlncli.msi)।

তারপর SQL Server Management Studio রান করুন এবং আপনার প্রথম SQL সার্ভারে কানেক্ট করুন, যেখানে শেয়ার্ড Connection Broker ডেটাবেস তৈরি হবে (পরে আমরা এটিকে Always On হাই আভেইলেবিলিটি গ্রুপে মুভ করব)।
Security → Logins-এ যান একটি নতুন লগইন যোগ করতে। Search-এ ক্লিক করুন, Locations-এ আপনার ডোমেইন সিলেক্ট করুন, Object Types = Groups সেট করুন, এবং ডোমেইন গ্রুপ MUN_RD_Connection_Brokers খুঁজে বের করুন।

dbcreator এবং sysadmin rolę গ্রুপে অ্যাসাইন করুন।

Windows Defender Firewall-এ SQL Server পোর্ট খুলুন (ডিফল্টভাবে SQL Server-এ কানেক্ট করতে TCP 1433 পোর্ট ব্যবহার করা হয়)।
উইন্ডোজ সার্ভারে রিমোট ডেস্কটপ সার্ভিসেস ভূমিকা ইনস্টল করা
তারপর আপনার সার্ভারগুলোরে RDS ভূমিকা ইনস্টল করতে হবে। Server Manager কনসোল খুলুন, Manage → Add roles and Features → Remote Desktop Services Installation সিলেক্ট করুন।

স্ট্যান্ডঅ্যালোন হোস্টে RDS ভূমিকা ইনস্টলেশন সম্পর্কে এই নিবন্ধে বর্ণনা করা আছে।
Standard deployment → Session-based desktop deployment সিলেক্ট করুন।

RD Connection Broker ভূমিকা ইনস্টল করার জন্য একটি সার্ভার বেছে নিন। আপনার দ্বিতীয় সার্ভারে এখন RDCB ভূমিকা ইনস্টল করতে হবে না।

একই সার্ভারে RD Web Access ভূমিকা ইনস্টল করুন। উভয় সার্ভারে RD Session Host ভূমিকা ইনস্টল করুন।

RDS ভূমিকা ইনস্টলেশন সম্পূর্ণ হওয়া পর্যন্ত অপেক্ষা করুন। 
ভূমিকা ইনস্টলেশন শেষ হলে, RDCB হোস্ট এবং 'NT AUTHORITY\NETWORK SERVICE' অ্যাকাউন্ট দুটি সার্ভারে লোকাল RDS Management Servers গ্রুপে যোগ করুন।

ফার্মের প্রথম সার্ভারে RD Connection Broker ভূমিকা ইনস্টলেশনের সময়, একটি লোকাল SQL ডেটাবেস C:\Windows\rdcbDb\rdcms.mdf লোকাল ড্রাইভে তৈরি হবে।

এই ডেটাবেস ফার্ম এবং টার্মিনাল ব্যবহারকারী সেশন সম্পর্কে তথ্য সংরক্ষণ করে। যেহেতু এটি লোকাল কম্পিউটারে অবস্থিত, অন্যান্য RDCB সার্ভার এটি ব্যবহার করতে পারবে না। RDCB HA প্রদান করতে, আপনাকে এটি একটি ডেডিকেটেড SQL সার্ভারে মুভ করতে হবে যেখানে অন্যান্য সার্ভার অ্যাক্সেস করতে পারবে।
RD Connection Broker High Availability ডিপ্লয় করা
ফার্মে RD Connection Broker ভূমিকা সহ দ্বিতীয় হোস্ট যোগ করার আগে, আপনাকে লোকাল RDCB ডেটাবেসকে এক্সটার্নাল SQL Server-এ মাইগ্রেট করতে হবে।
লোকাল ডেটাবেস থেকে ডেডিকেটেড SQL Server-এ Connection Broker ডেটাবেস মুভ করতে, Server Manager → Remote Desktop Services → Overview-এ যান। Remote Desktop Connection Broker Failover Configuration Wizard চালাতে, RD Connection Broker ভূমিকার ইমেজে ক্লিক করুন এবং Configure High Availability সিলেক্ট করুন।

তারপর Dedicated Database Server সিলেক্ট করুন। লোকাল RDCB ডেটাবেস যেখানে মুভ হবে সেই SQL Server কানেকশন সেটিংস নির্দিষ্ট করুন।
দুই ফিল্ড পূরণ করুন:
- RD Connection Broker Cluster-এর জন্য DNS নাম: আপনার RDCB ফার্মের FQDN নাম जिसके জন্য আমরা Round Robin DNS রেকর্ড তৈরি করেছিলাম (আমাদের উদাহরণে, এটি
MUNRDCB.woshub.com)। এটি वह ঠিকানা যা RDP ক্লায়েন্ট RD Connection Broker সার্ভারগুলোর সাথে কানেক্ট করার সময় ব্যবহার করবে; - Database Connection String – SQL Server ডেটাবেসের কানেকশন স্ট্রিং নির্দিষ্ট করুন। স্ট্রিং ফরম্যাট:
DRIVER=SQL Server Native Client 11.0;SERVER=<SQL Server Name>;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=<DB Name>এই উদাহরণে, SQL Server Name হল সেই SQL সার্ভারের নাম যেখানে আপনি ডেটাবেস তৈরি করতে চান, এবং DB Name হল আপনার নতুন ডেটাবেসের নাম:DRIVER=SQL Server Native Client 11.0;SERVER=srv-rds2.woshub.com;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=RDCB_DB

একবার RD Connection Broker HA কনফিগারেশন সক্ষম হলে, আপনি পুরো RDS ফার্ম কনফিগারেশন ডিকমিশন না করলে ইন্টারনাল RDCB ডেটাবেসে ফিরে যাওয়া যাবে না।
পরবর্তী ধাপে Configure-এ ক্লিক করুন।
তারপর আপনার SQL Server ইনস্ট্যান্সে SQL Management Studio ব্যবহার করে কানেক্ট করুন এবং নিশ্চিত করুন যে নতুন ডেটাবেস RDCB_DB তৈরি হয়েছে।

উভয় RD Connection Broker সার্ভারের ডেটাবেসে রাইট পারমিশন দিন। Database → RDCB_DB → Security → Users → New user-এ যান।
দুই নতুন ইউজার তৈরি করুন: BUILTIN\RDS Management Servers এবং woshub\MUN_RD_Connection_Brokers। উভয়কে db_owner এবং public প্রিভিলেজ দিন।

প্রথম সার্ভার ফেল করলে হাই আভেইলেবিলিটি নিশ্চিত করতে, বর্তমান কনফিগারেশনে দ্বিতীয় RD Connection Broker সার্ভার যোগ করুন।
RD Connection Broker আইকনে ক্লিক করুন এবং Add RD Connection Broker Server সিলেক্ট করুন।

যে দ্বিতীয় সার্ভারে Connection Broker ভূমিকা ইনস্টল করতে চান তার নাম লিখুন এবং Next ক্লিক করুন। তারপর RDS ফার্ম হোস্টের তালিকায় RDCB ভূমিকা সহ দুটি সার্ভার দেখাবে। আপনি RD Connection Broker (High Available Mode) মেসেজও দেখতে পাবেন।
এতে Remote Desktop Connection Broker-এর High Availability কনফিগারেশন সম্পূর্ণ হয়।

RD Connection Broker HA-এর জন্য SQL Server ফেইলওভার কনফিগারেশন
তারপর আপনার SQL ডেটাবেসের ফেইলওভার কনফিগারেশন সেট আপ করুন। এই মুহূর্তে, এটি শুধু একটি সার্ভারে চলছে। আপনার RD Connection Broker ডেটাবেসকে SQL ক্লাস্টারে রাখুন। এটি বা একটি ক্লাসিক Microsoft Failover Cluster হতে পারে বা একটি SQL Server Always On হাই আভেইলেবিলিটি গ্রুপ।
SQL Server ২০১৯-এ বেসিক Always On কনফিগারেশন এই নিবন্ধে বর্ণনা করা আছে। এখানে আমরা শুধু মূল ধাপগুলো দেখাব:
- Failover Clustering ভূমিকা ইনস্টল করুন এবং একটি SQL-RDS ক্লাস্টার তৈরি করুন দুটি RDCB হোস্টের সাথে যাতে একটি উইটনেস এবং কোয়ারাম থাকে যেকোনো ফাইল সার্ভারে (এটি উপরে উল্লিখিত Always On নিবন্ধে বর্ণনা করা আছে);
- SQL Server Configuration Manager সেটিংসে Enable Always On Availability Groups অপশন সক্রিয় করুন উভয় সার্ভারে;

- New Availability Group Wizard চালান;
- Availability Group-এর নাম দিন (SQL-RDS);
- আপনার হাই আভেইলেবিলিটি গ্রুপে কোন ডেটাবেস রাখতে চান সিলেক্ট করুন (RDCB_DB);

- হাই আভেইলেবিলিটি গ্রুপে দ্বিতীয় SQL সার্ভার যোগ করুন এবং Automatic Failover অপশন চেক করুন;

- Listener ট্যাবে, আপনার Always On গ্রুপের ডেটাবেসে কানেক্ট করার জন্য ক্লায়েন্টরা যে নাম এবং IP ঠিকানা ব্যবহার করবে সেটি লিখিন (SQL-RDSDB-liste);

- Failover Cluster Manager স্ন্যাপ-ইন (
FailoverClusters.SnapInHelper.msc) খুলুন এবং নিশ্চিত করুন যে রোল তালিকায় নতুন রিসোর্স যোগ হয়েছে।
তারপর Connection Broker সেটিংসে RDCB ডেটাবেস সহ SQL সার্ভারের কানেকশন স্ট্রিং পরিবর্তন করুন। আপনি শুধু পাওয়ারশেল ব্যবহার করে RDCB কানেকশন স্ট্রিং পরিবর্তন করতে পারেন:
Set-RDDatabaseConnectionString [-DatabaseConnectionString] <String> [[-ConnectionBroker] <String>] [ <CommonParameters>]
আমার উদাহরণে, RDCB ফার্মকে SQL ডেটাবেস High Availability গ্রুপে স্যুইচ করার কমান্ডটি নিচের মতো:
Set-RDDatabaseConnectionString -ConnectionBroker srv-rds1.woshub.com -DatabaseConnectionString "DRIVER=SQL Server Native Client 11.0;SERVER=SQL-RDSDB-liste;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=RDCB_DB"

যদি কমান্ড কোনো ত্রুটি রিটার্ন না করে, তবে সব ঠিক আছে। এখন আপনার RDS Connection Broker ক্লাস্টার SQL Always On availability group ব্যবহার করতে কনফিগার হয়েছে।
আপনার RDS ফার্ম সেটিংস খুলুন এবং নিশ্চিত করুন যে HA-র জন্য নতুন কানেকশন স্ট্রিং ব্যবহার করা হচ্ছে (Tasks → Edit Deployment Properties)।

সুতরাং, আমরা উইন্ডোজ সার্ভার ২০২২/২০১৯-এ একটি হাই আভেইলেবিলিটি RDS Connection Broker সার্ভিস তৈরি করেছি। আপনি RDS ফার্মের হোস্টগুলোর একটি শাটডাউন করে RDCB-এর হাই আভেইলেবিলিটি টেস্ট করতে পারেন।
তারপর আপনি আপনার RDS ফার্ম কনফিগারেশন চালিয়ে যেতে পারেন, RDS লাইসেন্সিং সার্ভার ডিপ্লয় করুন, RDSH সার্ভার যোগ করুন, RDS কালেকশন সেট আপ করুন, RemoteApps পাবলিশ করুন, RDS-এর জন্য HTML5 ওয়েব ক্লায়েন্ট সক্রিয় করুন, ইত্যাদি।