You can adjust your stand-alone ArcGIS Server sites or the ArcGIS Server sites used in your ArcGIS Enterprise deployment in response to user demand. You can add multiple instances to your ArcGIS Server site and connect the instances under an Amazon Elastic Load Balancer. As demand increases, you can add more instances either manually or programmatically.
Some of the Esri sample Amazon Web Services (AWS) CloudFormation templates and deployment tools that use the templates use autoscaling to add instances based on demand.
If you do not use a CloudFormation template that sets autoscaling, you must create the instances yourself and add them to the load balancer manually using the AWS Management Console or the Amazon Auto Scaling API.
The load balancer and scaling
If you need more power than one Amazon Elastic Compute Cloud (EC2) instance can provide, you can scale out your ArcGIS Server site by creating new instances and placing them under an Amazon Elastic Load Balancer. All requests to your ArcGIS Server site go through the load balancer, which then evenly distributes the requests to the available EC2 instances.
The AWS Management Console contains a Load Balancers link, where you can view your existing load balancers and add new ones using a wizard. You can add and remove instances from a load balancer at any time by viewing the load balancer properties and updating a series of check boxes next to a list of instance names.
The ArcGIS Server instances you launch and place beneath the load balancer using the AWS Management Console have no knowledge of each other and cannot be used for actions such as asynchronous geoprocessing or distributed map caching. To take full advantage of the architecture in which ArcGIS Server sites communicate with each other, build your site using the ArcGIS Enterprise Cloud Builder Command Line Interface for Amazon Web Services and an Esri CloudFormation template.
Monitor your deployment
Suppose you maintain a public-facing web map application that displays natural disaster information from a state government. This site normally receives 500 visits per hour; however, when major weather events occur, such as tornadoes or flooding, the site receives up to 10,000 visits per hour. You don't want to maintain enough hardware (or even instances) to always be able to support 10,000 visits per hour, but your site needs to be able to handle this load on random occasions without slowing down.
The first step in scaling out your deployment is to monitor the load on your server. This is not always necessary if you have a pretty good guess of when the traffic is going to occur; however, with events such as tornadoes, you may not have much of a warning. Amazon CloudWatch is a service that you can use to understand the amount of work being done by your instances. CloudWatch gives you charts of instance usage, and it also provides metrics through optional APIs.
CloudWatch is an option that you must explicitly enable on instances that you manually create.
Amazon charges a fee for certain features of CloudWatch. If this is a concern, you can devise your own ways to track certain metrics on your instances, such as CPU and memory usage.
Adjust number of instances
If you detect that your deployment is overworked, you can create additional EC2 instances to add to your ArcGIS Server site. Conversely, if your deployment is underutilized, you can remove instances to cut costs. You can adjust your number of instances either manually or automatically.
If you built your site using the AWS Management Console or with a CloudFormation template, you can set up your own rules using the Amazon Auto Scaling API.
Any machines created by Amazon automatic scaling have CloudWatch enabled, and corresponding fees apply.
Delete EBS volumes after terminating instances
When you terminate an instance, the Amazon Elastic Block Store (EBS) volumes attached to that instance may not be deleted automatically, depending on what options you chose when adding storage to your instance when you created it. If you did not choose to delete all EBS volumes on instance termination, and you are not going to reuse the volumes, you should manually delete them to avoid incurring unnecessary charges. One way to accomplish this is to use the EC2 API to check for EBS volumes with a status of Available and delete any available volumes found. You can perform this check at regular intervals.
Increase your Amazon instance limit
If you plan to run many EC2 instances on your deployment, check your Amazon account to understand the number of instances you are allowed. Consult AWS documentation to learn how to determine the limits for your account and how you can request the limits be increased.