1
© 2007 Citrix Systems, Inc. — All rights reserved
XenDesktop 5 Master Class – Part 3
Agenda Database Scalability PowerShell
Complete Slide Deck Available at - http://dl.dropbox.com/u/7694439/XD5-MC.rar Facebook - http://www.facebook.com/pages/XenDesktop/122274557845352
Twitter - http://twitter.com/#!/XenDesktopEMEA
XenDesktop 5 Master Class – Part 3
Agenda Database Scalability PowerShell
Complete Slide Deck Available at - http://dl.dropbox.com/u/7694439/XD5-MC.rar Facebook - http://www.facebook.com/pages/XenDesktop/122274557845352
Twitter - http://twitter.com/#!/XenDesktopEMEA
A Quick Review
SQL Server SQL Server Machine Creation
Services
Broker Services
Infrastructure Services
High-level Rhone Architecture
XenDesktop Controller XenDesktop Controller
Broker Service
Broker Service Machine
Creation Service Machine Creation
Service
AD Identity Service AD Identity
Service
Machine Identity Service Machine
Identity Service
Host Service Host Service
Configuration Service Configuration
Service Desktop Studio
Desktop Studio Desktop DirectorDesktop Director
PowerShell WCF
Virtual Desktop
Virtual Desktop
WinRM (WMI)
NOTE: Greatly Simplified Communication
• Supported Databases:
• SQL Server 2008, R2, SP1, Express
• SQL Server 2005 SP3 (Not Tested / No Support / EOS April 2011)
• Database Schema
• Full Relational Schema
• Single Database (for core product)
• Multiple SQL ‘Schemas’ in Database
• Broker Config, Broker Session State, Desktop Provisioning, Infrastructure Description, etc
• ‘Schemas’ map to Windows services running on Broker
XD5 Database Overview
SQL Server SQL Server Machine Creation
Services
Broker Services
Infrastructure Services
XenDesktop Controller XenDesktop Controller
Broker Service Broker Service Machine
Creation Service Machine Creation
Service
AD Identity Service AD Identity
Service
Machine Identity Service Machine
Identity Service
Host Service Host Service
Configuration Service Configuration
Service Desktop Studio
Desktop Studio Desktop DirectorDesktop Director
PowerShell WCF
Virtual Desktop Virtual Desktop WinRM
(WMI)
• Broker Service instances are stateless as much as possible.
• i.e. State is not stored in the Service rather held centrally in the database.
• Broker service database content is split into two schemas
• The ‘config’ schema
• Contains configuration data
• Does not update frequently
• The ‘state’ schema.
• Contains information about the current state of broker elements
• Update frequently (and should be volatile)
• Both schemas contain tables and stored procedures.
The Broker and it’s Database
Worker Endpoints
Worker Registrations
Worker Index
Worker Names
DiagWorker
Workers
Workers
Brokered
Sessions Sessions WI Sessions Desktop
Groups
Desktops
Catalogs
Licenses
Configuration Schema:
chb_Config
State Schema:
chb_State
SQL Database: Broker Service Schema
Soft Registrations
• Machine Creation Service
• DesktopUpdateManagerSchema
• AD Identity Service
• ADIdentitySchema
• Machine Identity Service
• MachinePersonalitySchema
• Configuration service
• ConfigurationSchema
• Host service
• HostingUnitServiceSchema
Other Schemas…
• Sizing depends on several factors
• Number of registered VDAs
• Number of connected sessions
• Connection rate
• Number of managed desktops
• Number of provisioned desktops with Machine Creation Services
Database sizing depends on…
• The following data is from the test teams
Database sizing example
Provisioned Desktops Using MCS 5,000 10,000 20,000
Per Worker (KB) 14,500 29,000 58,000
Per Session (KB) 25,500 51,000 102,000
Per Connection (KB) 840 1,680 3,360
Per AD Account (KB) 9,000 18,000 36,000
Per MCS machine (KB) 9,700 19,400 38,800
Approx. Total (MB) 59 117 233
• The transaction log is the recording of all changes
performed against the database
• Recovery model options
• Simple – Reclaims log space but can only recover to the last backup (default option for XD5 database)
• Full – Can recover to any point in
time but requires the most disk space
• SQL Mirroring requires
Full Recovery to be enabled
Managing the transaction log
• A VDA with no activity generates approximately 62KB of transaction log data per hour
• Number of VDAs X 24 Hours X Approx. 62KB of data
• 100 VDAs X 24 Hours X 62KB = 145MB
• Place the log on a separate physical disk
• Set the log to a fixed size and backup often
Transaction log examples
• Broker is critically dependant on Database
• Existing connections not impacted
• Creating new connections and reconnecting to desktops impacted
• Database Failure = Broker Failure
• Supported Database H/A Options: (expected order)
• SQL Mirror
• Virtual Machine H/A
• SQL Cluster
Database High-Availability
H/A Mirror H/A Mirror
SQL Mirroring Options
Broker Broker
SQLSQL Windows Windows
Broker Broker
SQLSQL Windows Windows
Broker Broker
SQLSQL Windows Windows
SQL Server On Brokers
Operational Considerations:
• No outage window on single DB server failure
• SQL Database needs to be backed up
• One server can run SQL Express (witness)
• Additional brokers would not run SQL
• Reduced Server Count
H/A Mirror H/A Mirror
SQLSQL Windows Windows
SQL Server Tier
Operational Considerations:
• No outage window on single DB server failure
• SQL Database needs to be backed up
• One server can run Express (SQL witness)
• Identical Brokers
SQLSQL Windows Windows
SQLSQL Windows Windows Broker
Broker Windows Windows
Broker Broker Windows Windows
• Virtual Machine H/A (XenServer / VMware HA)
• Simpler to configure than Clustering
• On host failure, hypervisor platform automatically starts VM on replacement host
• Small outage window as new VM boots
• Can use SQL Express
• Operations
• Only requires a single SQL Express server VM
• Database needs to be backed up
• Outage window
Virtual Machine H/A
Desktop Launch
• A lot is used in the background
• Desktop Viewer
• Web Interface
• Broker Services
• Machine Creation Service
• VDA Agent Service
• PortICA Protocol Stack
• Workstation Agent Service
• Machine Identity Agent
• FullArmor Policy Engine
How is a desktop launched?
• User logs in to Web Interface.
• Web Interface validates login and requests the desktop via the broker XML service.
• Web Interface launches desktop via XML service.
• Broker selects the VM, requests a reset of the DIFF disk (via MCS) and starts the machine (via an HCL call to the
hypervisor)
How is a desktop launched (1) ?
• VM boots, AD machine identity is
applied via the machine identity agent (ID Disk attached to the VM)
• Boot continues, workstation agent
service starts, and the VDA registers with the broker.
• Machine policies are applied.
How is a desktop launched (2) ?
• The VDA is now registered and can accept the ICA connection from the broker service to the workstation agent service.
• PortICA starts listening.
• Broker passes the desktop address
to Web Interface, Web Interface in turn passes an ICA file to the user’s web browser.
• Browser launches the desktop viewer on the endpoint device
How is a desktop launched (3) ?
• The desktop viewer uses the ICA file to identify the VM and initiates an ICA
connection via PortICA to the VDA.
• The desktop viewer and PortICA negotiate capabilities, PortICA calls the workstation
agent to validate the connection and obtain user credentials.
How is a desktop launched (4) ?
• The workstation agent passes credentials to PortICA which creates a new Windows session.
• PortICA applies user-specific policies.
• Desktop interaction with the user via
Desktop Viewer and the ICA connection is now possible.
How is a desktop launched (5) ?
VDA 5.0
• VDA can now use “Registry based” registration.
• Quick Install will pick up the FQDN from the ID Disk
• Advanced Install expects the Controller FQDN to be specified
• Port 80 is default registration port
• VDA command line options
• FORCEWDDMREMOVE (for physical or VMware)
• NOWINRM (for WinXP only)
VDA Installation
• Accessed through Desktop Director
• Uses MS Remote Assistance
• VDA install turns on Remote Assist by default
• Must be enabled via Group Policy
• Client side Flash rendering cannot be shadowed
• Uses DCOM – potential firewall issues, browser settings
Shadowing Virtual Desktops
Overall High Availability
Database Database Database Database
Classic HA (Rhone)
Client Client
Web Interface
Web Interface
Web Interface
Web Interface
NLBNLB
DDC (XML Svc)
DDC (XML Svc)
DDC (XML Svc)
DDC (XML Svc)
• Network-level HA
• Network-level HA
Database Database
• HA SQL Server
• Mirrored
• VM HA
• Clustered
• Failure = DR Event (see DR slide)
• HA SQL Server
• Mirrored
• VM HA
• Clustered
• Failure = DR Event (see DR slide)
• DDCs are Peers
• DDCs are Peers
Autonomous Mode
VDA Broker
Switch Database
Switch
Customer Process Customer
Process
Client .ICA File
.ICA File
Registration
Registration Failure:
• VDA opens port 1494
• Port remains open for max 30 days
• When VDA re-registers, broker updated
Emergency Access:
• Customer issues .ICA files (specific to user)
• VDA address encoded in file
Scalability
– Preliminary Numbers
• PVS scales very nicely
• Streamed 5000 desktops from 1 server
• XD4 DDC
• Satisfactory
• To support 5000 desktops we recommended 3 DDC instances and separated roles
• Console access – Could be slow
XD 4 Results
One instance. No role separation.
10,000
XD 5 Controller
• Desktop Director
• 60-100 console users with great response time
• Need more users? Just add more instances!
• Max scale per instance = 500 users
• Desktop Studio
• 20,000 desktops tested in one desktop group
Consoles
XD 5 MCS produces about 1.5x more IOPS than PVS
1100 Desktops on XS MCS PVS
Total IOPS 18,000 11,000
Read:Write IOPS ratio 50:50 10:90
Average IOPS per desktop 16 10
MCS can be more demanding
… on XenServer pool master (split into 2 pools vs 1)
… on IOPS (1.5x more)
… on DDC CPU and network (only ~8% more)
• Successfully proven that XenDesktop 5 supports at least 2500 MCS desktops.
• The size of the deployment was only limited by the amount of hardware available.
• The two DDC used in this test were virtualized.
• Previous tests have proven that a single XD5 Controller can scale to beyond 10,000 dekstops
• XenDesktop 5 will scale well beyond 20,000 desktops.
• Default idle pool spin up of 2500 desktops took 4 hours 16 minutes and consumed ~35% of NetApp CPU.
Initial Results and Conclusions
• Creating 2500 desktops took 1h 21 minutes.
• Equates to 31 Desktops per minute.
• Deleting desktops took 10 minutes longer.
• The most resource intensive part of these tasks was on CPU load on the vSphere server.
• Updating a catalog provisioning scheme is a fast task
• took ~3 minutes to update a 20GB image.
Initial Results and Conclusions
…and that’s about it…
A Few Helpful Resources
• SQL Express or fully blown SQL?
• Quick Deploy assumes everything on a single server. Including SQL Express.
• Desktop Deployment allows you to specify the Database.
• Migrate SQL Express database to SQL Server
• Use PowerShell to “deconfigure” DB connection
• Backup / Restore XD5 database
• Use PowerShell to “reconfigure” DB connection
• VDA (re-) registration will be happen automatically
Initial Installation and Deployment Choices
• Can I Redeploy XenDesktop Without Reinstalling?
• Reconfigure the services to not use a database
• Drop the database
• Restart Desktop Studio
• Desktop Studio will start as if you have just installed XenDesktop.
• Should I offload Desktop Director from the active brokers?
• Reduces risk of impacting logon times due to high console usage.
• A single Desktop Director can handle 250 – 500 “admin” console sessions.
Initial Installation and Deployment Choices
• Add a second Controller to XD5 Site
• Allows you to test the “interchangeability” of the XD5 architecture.
• A single controller can handle in excess of 10,000 desktops.
• SQL Database - Configure Mirroring?
• Allows you to measure the impact of XD5 on the database servers.
• Mirroring requires Full Recovery model. Do not forget the Transaction Logs.
Choices for HA Production Class PoC’s
• XenDesktop Design Handbook
• https://community.citrix.com/kits/#/kit/1067009
• Provisioning Services Anti Virus Best Practices
• http://support.citrix.com/article/CTX124185
• Virtual Desktop Resource Allocation
• http://community.citrix.com/display/ocb/2010/11/12/Virtual+Desktop+Resource+Allocation
• XD5 POC Quick Start Guide
• Screen shot based, step by step guide to a PoC
• Covers Quick Deploy, Desktop Deploy
• Examples of Desktop Studio, Desktop Director
• http://support.citrix.com/article/CTX127594
Resources
• Configure a XenDesktop 5 Site to Use an Existing SQL Database
• http://support.citrix.com/article/CTX128008
• Move an Existing XenDesktop 5 Database to a New SQL Server
• http://support.citrix.com/article/CTX128365
• Configure XenDesktop for SQL Database Mirroring
• http://support.citrix.com/article/CTX127359
• Reconfigure a XenDesktop Site to Use a Mirrored Database
• http://support.citrix.com/article/CTX127538
• XDDBDiag for XenDesktop
• http://support.citrix.com/article/CTX128075
Resources
• Redeploy XenDesktop Without Re-Installing
• http://support.citrix.com/article/CTX127421
• XenDesktop 5 FAQ
• http://support.citrix.com/article/CTX128328
• Use a Specific SQL port with XenDesktop 5
• http://support.citrix.com/article/CTX128253
• XenDesktop 5 Database Transaction Log Growing Excessively
• http://support.citrix.com/article/CTX126916
• Change the XML Port in XenDesktop 5
• http://support.citrix.com/article/CTX127945
Resources
• Planning Guide: XenDesktop 5 Migration
• http://knowledgecenter.citrix.com/article/CTX128330
• XenDesktop 4 to XenDesktop 5 Virtual Desktop Agent Conversion Process with Provisioning Server
• http://support.citrix.com/article/CTX128174
• XenDesktop Planning Guide: Desktop Image Delivery
• http://support.citrix.com/article/CTX128643
• XenDesktop 5 – Master Classes
• http://dl.dropbox.com/u/7694439/XD5%20Master%20Class.rar
Resources
• HDX Demo Mode
• http://community.citrix.com/pages/viewpage.action?pageId=79463606
• http://
community.citrix.com/display/ocb/2011/02/18/HDX+Connect+Demo+Is+Now+Available+Try+it+
Out
Resources
• My Citrix
• Ask you Citrix contact
• Tracking of downloads
• URL alias available:
• www.citrix.com/xendesktop/poc
• www.citrix.com/xendesktop/quickpoc
• www.citrix.com/xendesktop/pockit
XD5 Quick PoC Kit
• Get-Command * -CommandType CmdLet | Where {$_.ModuleName -like "Citrix*"}
• Shows all PowerShell commands from Citrix
• Get-Command * -CommandType CmdLet | Where {$_.ModuleName -like "Citrix*"} | Measure-Object
• Show count of all Citrix cmdlets