RollerBot is a system for automating the replacement of instances in an AWS EC2 Auto Scaling Group. If you need the ability to update the AMI on an existing group without downtime, with low cost, and with little performance impact (at the price of more transition latency), RollerBot may be right for you.
RollerBot is especially useful for:
- Updating ECS cluster instances
- Updating instances that host stateful services such as Kafka and Consul
RollerBot has several different implementations, depending on your cluster's needs.
The "grow" method is best for stateless Auto Scaling Groups. It leverages your existing Scaling Policy to achieve a slow update of the instances. It works by increasing the Auto Scaling Group's Desired Count, then allowing the existing Scaling Policy to decrease the number of instances back to the steady-state count. Once all instances have been replaced, the process is complete.
The "replace-after" method is best for stateful Auto Scaling Groups whose state is replicated on multiple instances in the cluster (for example, Kafka and Consul). It works by decreasing the Auto Scaling Group's Desired Count by one, waiting for an instance to cleanly terminate, then increasing the Desired Count by one again, to return the Group to its steady-state count.
TBD
CloudTrail Logs must be enabled on the AWS account in which RollerBot is used so that it can detect when the Auto Scaling Group's Launch Configuration has been updated.
Apache 2.0 licensed.