There are multiple enterprise cloud deployment options available to host your Orchestrator, such as Amazon Web Services (AWS), Microsoft Azure, or Google Cloud Platform (GCP). Here we detail a large, scalable deployment using the Azure Infrastructure as a Service (IaaS) offerings. The following services are required:
- VM Scale Set for Orchestrator
- VM Availability Set for Elasticsearch
- Azure SQL Server
- Azure Load Balancer
- Azure Redis Cache for multi-node deployments
- Distributed DNS Service (such as Cloudflare)
The architecture examples below contain optional and/or differing components (e.g. CyberArk, UiPath High Availability Add-on).
The Jumpbox depicted is not required but is a recommended best practice for your production environments, providing isolation and security.
This section describes the hardware configurations used for the performance testing listed in Scaling Your Deployment, below.
Each Orchestrator node must be configured as follows:
The SQL Server virtual machine specifications must scale in line with the number of Orchestrator nodes:
1 - 2
The Elasticsearch availability set is comprised of 3 master nodes and 6 data nodes, for a total of 9 nodes, each with the following specifications:
OS SSD (GB)
Data SSD (TB)
128 (with 5000 IOPS and 100 MB/s Throughput)
1 (with 5000 IOPS and 200 MB/s Throughput)
Windows Server 2016
SQL Server 2017
The versions listed above are those used for the deployments and performance tested loads described. For all versions compatible with Orchestrator, see here.
For multi-node deployments, it is recommended to use two Azure Standard load balancers:
- One for the Orchestrator servers;
- One for the Elasticsearch servers.
Multi-node Orchestrator deployments use the RESP (REdis Serialization Protocol) for communication, and thus can be configured using any solution implementing this protocol, such as Azure Redis Cache in this example.
High availability deployments of Orchestrator are supported by UiPath only if the UiPath High Availability Add-on is used.
For multi-node deployments, it is recommended to use two separate Redis instances:
- Azure Redis Cache Premium with a 6GB cache - the primary node used for session state and user-entity associations;
- Azure Redis Cache Basic - used to scale the SignalR service.
- Set all Orchestrator nodes to report to Elasticsearch instead of their respective Windows Event Log by setting the
writeToparameter in the
serverdiagnosticsindex as follows:
<logger name="*" minlevel="Warn" writeTo="serverElasticBuffer"/>
- Enable Quartz job clustering as follows:
<add key="quartz.jobStore.clustered" value="true" />
- In the Deployment section, configure the NuGet repository as follows:
<add key="NuGet.Repository.Type" value="Composite" /> <add key="Deployment.Libraries.AllowTenantPublish" value="true" /> <add key="Processes.AllowUpdateWithRunningJobs" value="true" />
- In the Load Balancer section, configure the Redis instances as follows, being sure to replace the connection string and password with your respective values:
<add key="LoadBalancer.UseSqlServer" value="false"/> <add key="LoadBalancer.UseRedis" value="true"/> <add key="LoadBalancer.Redis.ConnectionString" value="<your.redis.cache.windows.net>:6379,password=********"/> <add key="LoadBalancer.SignalR.UseRedisScaleout" value="true"/> <add key="LoadBalancer.SignalR.RedisScaleout.ConnectionString" value="<your.second.Redis.Server>:6379,password=************"/>
- Set the
Max Pool Sizein the database connection string as follows:
<add connectionString="Data Source=172.16.100.12;Initial Catalog=UiPath;User ID=admin;Password=*******;Max Pool Size=700" name="Default" providerName="System.Data.SqlClient" />
Be sure to replace the
User ID, and
Passwordparameters with the respective values of your Orchestrator Azure service. See here for more details.
- Set the Elasticsearch buffer size as follows:
<target name="robotElasticBuffer" xsi:type="BufferingWrapper" bufferSize="1000" flushTimeout="5000">
The number of nodes needed in your Orchestrator scale set depends on the number of Robots being deployed:
Orchestrator Scale Set Nodes
No. of Robots
up to 4,000
up to 8,000
up to 24,000
up to 48,000
These deployments were tested using the hardware and software configurations above to exhibit no performance loss under the specified load below.
Static Data refers to the initial Orchestrator load existing.
Dynamic data refers to the data added to or changed in Orchestrator as processes are executed.
Queue Items (per day)
Jobs (per minute)
Logs (per minute)
Nuget Downloads (Maximum per minute)
Robots Connected (Maximum)
Heartbeat (per minute)
SignalR Notifications (per minute)
Updated about a month ago