Failover a managed instance v1.1 to another zone
SOC2/CI-110
In MI v1.1, all resources are still zonal, and managed instances are not automatically resilient to zone-wide failures. It’s possible to failover resources to another zone in the event of GCP zonal failure, but it’s a tedious and manual process. Perform the failover in the following order.
Failover Cloud SQL
Use cases:
- Cloud SQL current zone is down
Edit Cloud SQL location
Open sourcegraph/deploy-sourcegraph-managed and open $CUSTOMER/terraform.tfvars
. Add the following override:
Replace the zone with whichever that is available in the same region at the moment.
cloud_sql_zone = "us-central1-a"
Apply the changes
terraform apply
It will take some time for Cloud SQL to be moved to a different zone.
Commit your change and open a Pull Request.
Failover the compute instance (VM)
Configure env var
eval (mi --customer $CUSTOMER workon)
export PROJECT_ID=$PROJECT_PREFIX-$CUSTOMER
export INSTANCE_NAME=default-$OLD_DEPLOYMENT-instance
Locate the most recent snapshot of the current data disk, note the name of the snapshot as SNAPSHOT_NAME
. We are using a blue/green model for some infra changes, so it is possible to have snapshot of data disk of the previous instance. It’s important to use the snapshot of the last active instance.
gcloud compute snapshots list --project $PROJECT_ID
Follow the machine upgrade process to complete the failover while making the below changes
NEW_DEPLOYMENT
instance should be created from the latest$SNAPSHOT_NAME
- Change
zone
to a working zone - The GCP backend service resource needs to be temporarily modified to stop referencing the existing network endpoint resource, so it can be moved to a new zone