An instance group is a collection of virtual machine (VM) instances that you can manage as a single entity.
Compute Engine offers two kinds of VM instance groups, managed and unmanaged:
- Managed instance groups (MIGs) let you operate apps on multiple identical VMs. You can make your workloads scalable and highly available by taking advantage of automated MIG services, including: autoscaling, autohealing, regional (multiple zone) deployment, and automatic updating.
- Unmanaged instance groups let you load balance across a fleet of VMs that you manage yourself.
Managed instance groups (MIGs)
Managed instance groups (MIGs) are suitable for scenarios like these:
- Stateless serving workloads, such as a website frontend
- Stateless batch, high-performance, or high-throughput compute workloads, such as image processing from a queue
- Stateful applications, such as databases, legacy applications, and long-running batch computations with checkpointing (beta)
For information about how to create a MIG, see Creating groups of managed instances.
MIGs offer the following advantages:
- High availability.
- Keeping VM instances running. If a VM in the group stops, crashes, or is deleted by an action other than an instance group management command (for example, an intentional scale down), the MIG automatically recreates that VM in accordance with the original instance's specification (same VM name, same template) so that the VM can resume its work.
- Application-based autohealing. You can also set up an autohealing policy that relies on an application-based health check, which periodically verifies that your app responds as expected on each of the MIG's instances. If an app is not responding on a VM, that VM is automatically recreated. Checking that an app responds is more precise than simply verifying that a VM is up and running.
- Regional (multiple zone) coverage. Regional MIGs let you spread app load across multiple zones. This replication protects against zonal failures. If that happens, your app can continue serving traffic from instances running in the remaining available zones in the same region.
- Load balancing. MIGs work with load balancing services to distribute traffic across all of the instances in the group.
- Scalability. When your apps require additional compute resources, autoscaled MIGs can automatically grow the number of instances in the group to meet demand. If demand drops, autoscaled MIGs can automatically shrink to reduce your costs.
- Automated updates. The MIG automatic updater lets you safely deploy new versions of software to instances in your MIG and supports a flexible range of rollout scenarios, such as rolling updates and canary updates. You can control the speed and scope of deployment as well as the level of disruption to your service.
- Support for stateful workloads. You can use MIGs for building highly available deployments and automating operation of applications with stateful data or configuration, such as databases, DNS servers, legacy monolith applications, or long-running batch computations with checkpointing. Stateful MIGs preserve each instance's unique state (instance name, attached persistent disks, and metadata) on machine restart, recreation, auto-healing, or update.
Managed instance groups maintain high availability of your applications by
proactively keeping your instances available, which means in
RUNNING state. A
MIG automatically recreates an instance that is not
RUNNING. However, relying only on VM state may not be sufficient. You
may want to recreate instances when an application freezes, crashes, or runs
out of memory.
Application-based autohealing improves application availability by relying on a health checking signal that detects application-specific issues such as freezing, crashing, or overloading. If a health check determines that an application has failed on a VM, the group automatically recreates that VM instance.
The health checks used to monitor MIGs are similar to the
health checks used for load balancing, with some differences in behavior. Load
balancing health checks help direct
traffic away from non-responsive instances and toward healthy instances; these
health checks do not cause Compute Engine to recreate instances. On
the other hand,
managed instance group health checks
proactively signal to delete and recreate instances that become
For the majority of scenarios, use separate health checks for load balancing and for autohealing. Health checking for load balancing can and should be more aggressive because these health checks determine whether an instance receives user traffic. Because customers might rely on your services, you want to catch non-responsive instances quickly so you can redirect traffic if necessary. In contrast, health checking for autohealing causes MIGs to proactively replace failing instances, so this health check should be more conservative than a load balancing health check.
For more information, see Setting up health checking and autohealing for MIGs.
Regional or zonal groups
You can create two types of MIGs:
- A zonal MIG, which deploys instances to a single zone.
- A regional MIG, which deploys instances to multiple zones across the same region.
Both types offer all of the advantages of MIGs. Regional MIGs add higher availability by spreading application load across multiple zones, which protects your workload against zonal failure, and regional MIGs offer more capacity, with a maximum of 2,000 instances per regional group.
Google Cloud load balancing can use instance groups to serve traffic. Depending on the type of load balancer you choose, you can add instance groups to a target pool or to a backend service.
For more information, see Adding an instance group to a load balancer.
MIGs support autoscaling that dynamically adds or removes instances from the MIG in response to increases or decreases in load. You turn on autoscaling and configure an autoscaling policy to specify how you want the group to scale. Autoscaling policies include scaling based on CPU utilization, load balancing capacity, Stackdriver Monitoring metrics, or, for zonal MIGs, by using a queue-based workload like Pub/Sub.
For more information, read Autoscaling groups of instances.
You can easily and safely deploy new versions of software to instances in a MIG. The rollout of an update happens automatically based on your specifications: you can control the speed and scope of the update rollout in order to minimize disruptions to your application. You can optionally perform partial rollouts, which allows for canary testing.
See Updating MIGs.
Support for stateful workloads
You can build highly available deployments of stateful workloads on VMs using stateful managed instance groups (stateful MIGs). Stateful workloads include applications with stateful data or configuration, such as databases, legacy monolith applications, and long-running batch computations with checkpointing.
You can improve uptime and resiliency of such applications with autohealing, auto-updating, and multi-zone deployments, while preserving each instance's unique state, including customizable instance name, persistent disks, and metadata.
For more information, read Stateful MIGs.
Groups of preemptible instances
For workloads where minimal costs are more important than speed of execution, you can reduce the cost of your workload by using preemptible VM instances in your instance group. Preemptible instances last up to 24 hours, and are preempted gracefully—your application has 30 seconds to exit correctly. Preemptible instances can be deleted at any time, but autohealing will bring the instances back when preemptible capacity becomes available again.
You can simplify application deployment by deploying containers to instances in managed instance groups. When you specify a container image in an instance template and then use that template to create a managed instance group, each VM is created with a container-optimized OS that includes Docker, and your container starts automatically on each VM in the group. See Deploying containers on VMs and MIGs.
Network and subnet
When you create a managed instance group, you must reference an existing
instance template. The instance template defines the VPC network
and subnet that member instances use. For auto mode VPC
networks, you can omit the subnet; this
instructs Google Cloud to select the automatically-created subnet in the
region specified in the template. If you omit a VPC network,
Google Cloud attempts to use the VPC network named
For more information, see Networks and subnets.
Demo of MIG capabilities
The following 45-minute video presentation, recorded at Google Cloud NEXT '18, contains demos and best practices for setting up, running, and updating scalable and highly available deployments using Compute Engine MIGs.
The video shows you how to deploy a container to a MIG, set up an autohealing policy, use a regional group to protect against a zonal failure, configure autoscaling to meet CPU targets and queue-based demands, and manage canary and rolling updates.
Unmanaged instance groups
Unmanaged instance groups can contain heterogeneous instances that you can arbitrarily add and remove from the group. Unmanaged instance groups do not offer autoscaling, autohealing, rolling update support, multi-zone support, or the use of instance templates and are not a good fit for deploying highly available and scalable workloads. Use unmanaged instance groups if you need to apply load balancing to groups of heterogeneous instances, or if you need to manage the instances yourself.
If you must create unmanaged instance groups, see Unmanaged instance groups.
- Learn more about instance templates or create an instance template.
- Create a MIG in a zone or across multiple zones in a region.
- Learn about updating MIGs.
- Try a tutorial: