Remote Desktop Connection Broker (RDCB) เป็นส่วนประกอบของบทบาท Remote Desktop Services (RDS) ใน Windows Server RD Connection Broker ช่วยให้คุณกระจายภาระงานเซิร์ฟเวอร์ RDS farm (เมื่อเชื่อมต่อกับ RDS farm ผู้ใช้จะถูกเปลี่ยนเส้นทางไปยังโฮสต์ RDS ที่มีภาระงานน้อยที่สุด) ให้การเข้าถึง VDI และ RemoteApps จัดการการกำหนดค่าโฮสต์ RDS ในฟาร์ม นอกจากนี้ RDCB ยังอนุญาตให้ผู้ใช้เชื่อมต่อเซสชันของพวกเขาใหม่: เมื่อเชื่อมต่อกับ RDS RDCB จะตรวจสอบว่ามีเซสชันที่ยังไม่เสร็จสิ้นบนเซิร์ฟเวอร์อื่นของฟาร์มหรือไม่และเปลี่ยนเส้นทางพวกเขาไปยังเซสชันก่อนหน้า
ในบทความนี้ เราจะแสดงวิธีกำหนดค่าอินสแตนซ์ RD Connection Broker ทนทานต่อข้อผิดพลาด (High Availability) รักษาคุณสมบัติของมันในกรณีที่เซิร์ฟเวอร์หนึ่งที่มีบทบาท RDCB ล้มเหลว เซิร์ฟเวอร์ฐานข้อมูลที่รัน MS SQL Server 2019 จะถูกใช้เพื่อจัดเก็บข้อมูล Remote Desktop Connection Broker เพื่อหลีกเลี่ยดจุดล้มเหลวเพียงจุดเดียว ฐานข้อมูล SQL ของ RDCB ควรปรับใช้ในรูปแบบที่ทนทานต่อข้อผิดพลาดเช่นกัน ในตัวอย่างนี้ เราจะใช้โหนด SQL Server สองตัวที่กำหนดค่า SQL Always On Availability Group
ข้อกำหนดและการกำหนดค่าที่รองรับสำหรับ RD Connection Broker High Availability:
- อย่างน้อย 2 เซิร์ฟเวอร์ที่มีบทบาท RD Connection Broker รัน Windows Server 2022/2019
- หากคุณต้องการใช้ความพร้อมใช้งานสูงสำหรับฐานข้อมูล SQL ของ RDCB คุณจะต้องมีโฮสต์อย่างน้อย 2 ตัวที่มี SQL Server 2014 หรือใหม่กว่า (รุ่น Standard หรือ Enterprise) ในตัวอย่างนี้ เราติดตั้งอินสแตนซ์ MS SQL Server 2019 Enterprise แบบสแตนด์อโลนบนเซิร์ฟเวอร์แต่ละตัว หากคุณไม่ собираетесь ที่จะมีฐานข้อมูล SQL แบบ HA หนึ่งเซิร์ฟเวอร์ที่มี SQL Express ก็เพียงพอ
- ติดตั้ง SQL Server Native Client บนเซิร์ฟเวอร์ที่มีบทบาท RD Connection Broker
- มอบสิทธิ์ควบคุมเต็มรูปแบบเหนือฐานข้อมูล SQL และโฟลเดอร์การติดตั้ง SQL ให้เซิร์ฟเวอร์ RD Connection Broker
- อย่างน้อยหนึ่งเซิร์ฟเวอร์ที่มีบทบาท Remote Desktop Session Host ในฟาร์ม
เราจะสร้างการกำหนดค่า RDCB ทนทานต่อข้อผิดพลาดของเซิร์ฟเวอร์สองเครื่อง ทั้งสองจะมีบทบาท RD Connection และติดตั้ง SQL Server ความพร้อมใช้งานสูงและการกู้ภัยของฐานข้อมูล SQL Server จะได้รับจากกลุ่มความพร้อมใช้งาน SQL Server Always On
ใน Windows Server 2012 และใหม่กว่า RDS Connection Broker ให้ความพร้อมใช้งานสูงในโหมด Active/Active ในโหมดนี้ เซิร์ฟเวอร์ RDCB ทั้งหมดจะใช้งานอยู่และสามารถประมวลผลการเชื่อมต่อที่เข้ามาได้ ช่วยให้ได้รับความพร้อมใช้งานสูงและความสามารถในการขยายตัวในสภาพแวดล้อม Remote Desktop ขนาดใหญ่
การเตรียมโครงสร้างพื้นฐานสำหรับ Remote Desktop Connection Broker
กำหนดที่อยู่ IP แบบคงที่ให้กับเซิร์ฟเวอร์ทั้งหมดที่มีบทบาท RD Connection Broker และเข้าร่วมโดเมน Active Directory
srv-rds1.woshub.com—192.168.13.20srv-rds2.woshub.com—192.168.13.21
สร้างกลุ่มความปลอดภัยใหม่ใน Active Directory (MUN_RD_Connection_Brokers) และเพิ่มเซิร์ฟเวอร์ RDCB ทั้งหมดเข้าไป คุณสามารถสร้างกลุ่มด้วยสแนปอิน ADUC (dsa.msc) หรือโดยใช้ PowerShell:
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$
สร้างระเบียน A สำหรับชื่อคลัสเตอร์ของฟาร์ม RDS ของคุณ (ในตัวอย่างของเราคือ MUNRDCB) ใน DNS ระเบียน DNS ต้องมีที่อยู่ IP ของเซิร์ฟเวอร์ RDCB ทั้งหมด มันเปิดใช้งานการกระจายภาระงาน (Round Robin) ระหว่างเซิร์ฟเวอร์ RD Connection Broker ผมสร้างรายการต่อไปนี้:
- A —
MUNRDCB.woshub.com 192.168.13.20(ที่อยู่ IP ของเซิร์ฟเวอร์ RDCB แรก — srv-rds1.woshub.com) - A —
MUNRDCB.woshub.com 192.168.13.21(ที่อยู่ IP ของเซิร์ฟเวอร์ RDCB ที่สอง — srv-rds2.woshub.com)
คุณสามารถสร้างระเบียน A ใน DNS โดยใช้ PowerShell:
Add-DnsServerResourceRecordA -Name MUNRDCB -IPv4Address 192.168.13.20 -ZoneName woshub.com
Add-DnsServerResourceRecordA -Name MUNRDCB -IPv4Address 192.168.13.21 -ZoneName woshub.com
ติดตั้ง SQL Server Native Client บนเซิร์ฟเวอร์ทั้งหมดที่มีบทบาท RDCB คุณสามารถดาวน์โหลด SQL Server Native Client สำหรับเวอร์ชัน SQL Server ของคุณจากเว็บไซต์ Microsoft หรือคัดลอกจากภาพการติดตั้ง 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 ให้กลุ่ม
เปิดพอร์ต SQL Server ใน Windows Defender Firewall (ตามค่าเริ่มต้น ใช้พอร์ต TCP 1433 เพื่อเชื่อมต่อกับ SQL Server)
ติดตั้งบทบาท Remote Desktop Services บน Windows Server
จากนั้นคุณต้องติดตั้งบทบาท 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 บนไดรฟ์ท้องถิ่นของเซิร์ฟเวอร์ RD Connection Broker
ฐานข้อมูลนี้เก็บข้อมูลเกี่ยวกับฟาร์มและเซสชันผู้ใช้เทอร์มินัล เนื่องจากตั้งอยู่บนคอมพิวเตอร์ท้องถิ่น เซิร์ฟเวอร์ RDCB อื่นๆ จะไม่สามารถใช้งานได้ เพื่อให้ได้ RDCB HA คุณต้องย้ายมันไปยังเซิร์ฟเวอร์ SQL 專用 ที่เซิร์ฟเวอร์อื่นๆ สามารถเข้าถึงได้
การปรับใช้ RD Connection Broker High Availability
ก่อนที่คุณจะเพิ่มโฮสต์ที่สองที่มีบทบาท RD Connection Broker เข้าสู่ฟาร์ม คุณต้องย้ายฐานข้อมูล RDCB ท้องถิ่นไปยังเซิร์ฟเวอร์ SQL 專用
เพื่อย้ายฐานข้อมูล Connection Broker จากฐานข้อมูลท้องถิ่นไปยังเซิร์ฟเวอร์ SQL 專用 ให้เปิด Server Manager → Remote Desktop Services → Overview เพื่อรัน Remote Desktop Connection Broker Failover Configuration Wizard ให้คลิกภาพบทบาท RD Connection Broker และเลือก Configure High Availability
จากนั้นเลือก Dedicated Database Server ระบุการตั้งค่าการเชื่อมต่อ SQL Server ที่ฐานข้อมูล RDCB ท้องถิ่นจะถูกย้าย
กรอกสองฟิลด์:
- DNS name for the RD Connection Broker Cluster: ชื่อ FQDN ของฟาร์ม RDCB ของคุณที่เราสร้างระเบียน DNS Round Robin ไว้ (ในตัวอย่างของเราคือ
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 แล้ว คุณจะไม่สามารถย้อนกลับไปใช้ฐานข้อมูล RDCB ภายในโดยไม่ถอนการติดตั้งการกำหนดค่าฟาร์ม RDS ทั้งหมด
คลิก 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 จากนั้นเซิร์ฟเวอร์สองตัวที่มีบทบาท RDCB จะปรากฏในรายการโฮสต์ฟาร์ม RDS คุณจะเห็นข้อความ RD Connection Broker (High Available Mode) ด้วย
สิ้นสุดการกำหนดค่าความพร้อมใช้งานสูงของ Remote Desktop Connection Broker
การกำหนดค่าการ Failover ของ SQL Server สำหรับ RD Connection Broker HA
จากนั้นตั้งค่าการกำหนดค่า Failover ของฐานข้อมูล SQL ของคุณ ขณะนี้มันทำงานบนเซิร์ฟเวอร์เพียงตัวเดียว วางฐานข้อมูล RD Connection Broker ของคุณในคลัสเตอร์ SQL อาจเป็น Microsoft Failover Cluster แบบคลาสสิกหรือกลุ่มความพร้อมใช้งาน SQL Server Always On
การกำหนดค่า Always On พื้นฐานใน SQL Server 2019 อธิบายไว้ในบทความนี้ เราจะแสดงเฉพาะขั้นตอนหลักที่นี่:
- ติดตั้งบทบาท Failover Clustering และสร้างคลัสเตอร์ SQL-RDS ของโฮสต์ RDCB สองตัวพร้อม witness และ quorum บนเซิร์ฟเวอร์ไฟล์ใดๆ (อธิบายในบทความ Always On ที่กล่าวมาข้างต้น)
- เปิดใช้งานตัวเลือก Enable Always On Availability Groups ในการตั้งค่า SQL Server Configuration Manager บนเซิร์ฟเวอร์ทั้งสอง
- รัน New Availability Group Wizard
- ป้อนชื่อ Availability Group (SQL-RDS)
- เลือกฐานข้อมูลที่คุณต้องการวางในกลุ่มความพร้อมใช้งานสูงของคุณ (RDCB_DB)
- เพิ่มเซิร์ฟเวอร์ SQL ที่สองเข้าสู่กลุ่มความพร้อมใช้งานสูง และตรวจสอบตัวเลือก Automatic Failover
- บนแท็บ Listener ป้อนชื่อและที่อยู่ IP ที่ไคลเอ็นต์จะใช้เชื่อมต่อกับฐานข้อมูลในกลุ่ม Always On ของคุณ (SQL-RDSDB-liste)
- เปิดสแนปอิน Failover Cluster Manager (
FailoverClusters.SnapInHelper.msc) และตรวจสอบว่ารีซอร์สใหม่ปรากฏในรายการบทบาท
จากนั้นเปลี่ยนสตริงการเชื่อมต่อสำหรับเซิร์ฟเวอร์ SQL ที่มีฐานข้อมูล RDCB ในการตั้งค่า Connection Broker คุณสามารถเปลี่ยนสตริงการเชื่อมต่อ RDCB ได้เฉพาะผ่าน PowerShell:
Set-RDDatabaseConnectionString [-DatabaseConnectionString] <String> [[-ConnectionBroker] <String>] [ <CommonParameters>]
ในตัวอย่างของผม คำสั่งสำหรับสลับฟาร์ม RDCB ไปยังกลุ่มความพร้อมใช้งาน SQL database 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
เปิดการตั้งค่าฟาร์ม RDS ของคุณและตรวจสอบว่าสตริงการเชื่อมต่อใหม่ถูกใช้สำหรับ HA (Tasks → Edit Deployment Properties)
ดังนั้น เราได้สร้างบริการ RDS Connection Broker ทนทานต่อข้อผิดพลาดบน Windows Server 2022/2019 แล้ว คุณสามารถทดสอบความพร้อมใช้งานสูงของ RDCB ได้โดยปิดเซิร์ฟเวอร์หนึ่งในฟาร์ม RDS
จากนั้นคุณสามารถดำเนินการกำหนดค่าฟาร์ม RDS ของคุณต่อไป ปรับใช้เซิร์ฟเวอร์ RDS Licensing เพิ่มเซิร์ฟเวอร์ RDSH ตั้งค่า RDS Collections เผยแพร่ RemoteApps เปิดใช้งาน HTML5 web client สำหรับ RDS ฯลฯ