This document describes how to turn off repairs of failed and unhealthy VMs in a managed instance group (MIG) and, if already turned off, how to configure the MIG to repair VMs.
By default, a MIG automatically repairs a failed VM in the group by recreating that VM. If you've configured an application-based health check, then the MIG also repairs unhealthy VMs on which your application fails the health check. Repairing a VM based on an application-based health check is also called autohealing.
If you don't want a MIG to repair a failed VM or an unhealthy VM, you can turn off repairs in the MIG. Turning off repairs is useful in scenarios when you want to troubleshoot a failed VM, implement your own repair logic, or monitor application health without repairing unhealthy VMs.
To check whether repairs are already turned off in a MIG, see check whether repairs are turned off in a MIG.
For more information about repairs in a MIG, see About repairing VMs for high availability.
Before you begin
- If you haven't already, then set up authentication. Authentication is the process by which your identity is verified for access to Google Cloud services and APIs. To run code or samples from a local development environment, you can authenticate to Compute Engine by selecting one of the following options:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
Turn off repairs in a MIG
When you turn off repairs in a MIG, by default, both failed VM repairs and autohealing are turned off. If you only want to turn off autohealing, see Turn off autohealing.
Console
In the Google Cloud console, go to the Instance groups page.
Click the name of the MIG in which you want to turn off repair.
Click Edit.
In the VM instance lifecycle section, set the Default action on failure field to No action.
If you've configured autohealing and don't want the MIG to turn off autohealing, set the On failed health check field to Repair instance.
Click Save.
gcloud
To turn off repairs in a MIG, then use the update
command as follows. This turns off autohealing by default.
gcloud compute instance-groups managed update MIG_NAME \ --default-action-on-vm-failure=do-nothing \ --zone=ZONE
If autohealing is configured in the MIG and you don't want to turn off autohealing by default, use the beta update
command to set the --action-on-vm-failed-health-check
flag to repair
. This ensures that autohealing of unhealthy VMs continues to work even if repairing failed VMs is turned off.
gcloud beta compute instance-groups managed update MIG_NAME \ --default-action-on-vm-failure=do-nothing \ --action-on-vm-failed-health-check=repair \ --zone=ZONE
Replace the following:
MIG_NAME
: the name of the instance group.ZONE
: the zone where your MIG is located. For a regional MIG, use the--region=REGION
flag.
REST
To turn off repairs in a MIG, then use the API methods as follows. This turns off autohealing by default.
- For a zonal MIG, use the
instanceGroupManagers.
method. - For a regional MIG, use the
regionInstanceGroupManagers.
method.
For example, make the following call in a zonal MIG. This turns off autohealing by default.
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "instanceLifecyclePolicy": { "defaultActionOnFailure": "DO_NOTHING" } }
If autohealing is configured in the MIG and you don't want to turn off autohealing by default, use the API methods as follows to set the onFailedHealthCheck
flag to REPAIR
. This ensures that autohealing of unhealthy VMs continues to work even if repairing failed VMs is turned off.
- For a zonal MIG, use the
beta.instanceGroupManagers.
method. - For a regional MIG, use the
beta.regionInstanceGroupManagers.
method.
For example, make the following call in a zonal MIG:
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "instanceLifecyclePolicy": { "defaultActionOnFailure": "DO_NOTHING", "onFailedHealthCheck": "REPAIR" } }
Replace the following:
PROJECT_ID
: your project ID.MIG_NAME
: the name of the MIG.ZONE
: the zone where the MIG is located. For a regional MIG, useregions/REGION
in the URL.
Limitations
If a MIG has any of the following, then you cannot turn off the repairs in the MIG by setting the defaultActionOnFailure
field to DO_NOTHING
:
Turn off autohealing
When you've configured an application health check in a MIG, if you don't want the MIG to repair any unhealthy VMs, you can turn off autohealing separately. This doesn't turn off repairs of failed VMs.
Console
In the Google Cloud console, go to the Instance groups page.
Click the name of the MIG in which you want to turn off autohealing.
Click Edit.
In the VM instance lifecycle section, set the On failed health check field to No action.
Click Save.
gcloud
To turn off autohealing in a MIG, use the beta update
command and set the --action-on-vm-failed-health-check
flag to do-nothing
.
For example, use the following command for a zonal MIG:
gcloud beta compute instance-groups managed update MIG_NAME \ --action-on-vm-failed-health-check=do-nothing \ --zone=ZONE
Replace the following:
MIG_NAME
: the name of the MIG.ZONE
: the zone where the MIG is located. For a regional MIG, use the--region=REGION
flag.
REST
To turn off autohealing in a MIG, use the API methods as follows and set the --action-on-vm-failed-health-check
flag to do-nothing
.
- For a zonal MIG, use the
beta.instanceGroupManagers.
method. - For a regional MIG, use the
beta.regionInstanceGroupManagers.
method.
For example, make the following request to turn off autohealing in a zonal MIG:
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "instanceLifecyclePolicy": { "onFailedHealthCheck": "DO_NOTHING" } }
Replace the following:
PROJECT_ID
: your project ID.ZONE
: The zone where the MIG is located. For a regional MIG, useregions/REGION
in the URL.MIG_NAME
: the name of the instance group.
Turn on repairs or autohealing
By default, a MIG repairs failed VMs and, if autohealing is configured, the MIG also repairs unhealthy VMs. If you've turned off repairs or autohealing or both, you can turn them back on again.
Console
In the Google Cloud console, go to the Instance groups page.
Click the name of the MIG in which you want to turn on repair.
Click Edit.
In the VM instance lifecycle section, do the following:
- To repair failed VMs, set the Default action on failure field to Repair instance.
- To repair unhealthy VMs, set the On failed health check field to Repair instance. If you set this value to Default action, then autohealing uses the same setting that you configure for the Default action on failure field.
After you finish, click Save to apply the changes.
gcloud
To turn on repairs in a MIG, use the update
command. This also turns on autohealing, if the value of the --action-on-vm-failed-health-check
flag is default-action
.
gcloud compute instance-groups managed update MIG_NAME \ --default-action-on-vm-failure=repair
If you've turned off autohealing separately and you want to turn it back on again, use the beta update
command:
gcloud beta compute instance-groups managed update MIG_NAME \ --action-on-vm-failed-health-check=default-action
ORrepair
Replace the following:
MIG_NAME
with the name of a MIG.default-action
ORrepair
: If you want autohealing to use the same setting that you configure for repairs of failed VMs, set the value todefault-action
. For example, when you turn off repairing of failed VMs, the MIG turns off autohealing also. If you want to control repairs of unhealthy VMs separately, set the value torepair
.
REST
To turn on repairs in a MIG, use the API method as follows. This also turns on autohealing, if the value of the onFailedHealthCheck
field is DEFAULT_ACTION
.
- For a zonal MIG, use the
instanceGroupManagers.
method. - For a regional MIG, use the
regionInstanceGroupManagers.
method.
For example, make the following request in a zonal MIG:
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "instanceLifecyclePolicy": { "defaultActionOnFailure": "REPAIR" } }
If you've turned off autohealing separately and you want to turn it back on again, use the beta API method as follows:
- For a zonal MIG, use the
beta.instanceGroupManagers.
method. - For a regional MIG, use the
beta.regionInstanceGroupManagers.
method.
https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "instanceLifecyclePolicy": { "onFailedHealthCheck": "DEFAULT_ACTION
ORREPAIR
" } }
Replace the following:
PROJECT_ID
: your project ID.ZONE
: the zone where your MIG is located. For a regional MIG, useregions/REGION
in the URL.MIG_NAME
: the name of the MIG.DEFAULT_ACTION
ORREPAIR
: If you want autohealing to use the same setting as for repairs of failed VMs, set the value toDEFAULT_ACTION
. For example, when you turn off repairing of failed VMs, the MIG turns off autohealing also. If you want to configure autohealing separately, set the value toREPAIR
.
What's next
- Check whether repairs are turned off in a MIG.
- Investigate the errors in a failed VM by listing instance errors.
- Inspect the health state of a VM.