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.
When you build a stand-alone ArcGIS Server site with ArcGIS Server Cloud Builder on Amazon Web Services, you can choose settings of the minimum and maximum instances to include in your site, as well as the CPU usage levels that will trigger automatic scaling of your site. This is an easy way to configure auto scaling, since the load balancer is configured for you and there is no need for you to write autoscaling commands. Some of the Esri sample CloudFormation templates also use autoscaling to add instances based on demand.
If you do not use Cloud Builder or 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 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 ArcGIS Server Cloud Builder on Amazon Web Services or 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. CloudWatch is already enabled on any instances launched by ArcGIS Server Cloud Builder on Amazon Web Services.
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 AWS 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 want to add and remove instances automatically and you created a stand-alone ArcGIS Server site using ArcGIS Server Cloud Builder on Amazon Web Services, you can use Cloud Builder to set up rules for adding or removing instances based on levels of CPU usage. Or, if you're building your site manually or with a CloudFormation template, you can set up your own rules using the Amazon Auto Scaling API.
Any machines created by Amazon's 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 AWS instances on your deployment, check your Amazon account to understand the number of instances you are allowed. Most accounts are limited to 20 on-demand or reserved instances and 100 spot instances per region. Amazon provides a web form that you can use to request a different limit for your account.