Add instances in response to demand
In this topic
You can adjust your ArcGIS server site in response to user demand. You can add multiple instances to your deployment and connect them under an Amazon Load Balancer. As demand increases, you can add more instances either manually or programmatically.
Tip:
When you build your 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 auto scaling commands.
If you do not use Cloud Builder, 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 deployment by creating new instances as additional GIS servers and placing them under a load balancer. All requests to your server 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 for 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 GIS servers communicate with each other, build your site using ArcGIS Server Cloud Builder on Amazon Web Services.
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 deployment. 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, you can use ArcGIS Server Cloud Builder on Amazon Web Services to set up rules for adding or removing instances based on levels of CPU usage. Or, if you're building your site manually, 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.