I assume that you are using HTTPS Load balancer. I would recommend you to check this debugging Health Checks document[1] to troubleshoot the health check failure.
Verify that the Health Check is checking something which will reply with an HTTP 200 response by the backend. You can bypass the load balancer and send a curl request directly to the backend instance on its external IP to test it. For example
2. Use netstat -nltp on the backend instance to see what's listening on TCP ports. It should be listening on a non-loopback (127.0.0.1) address, or "all-addresses" (0.0.0.0 or ::), using one of the named ports set on the instance group.
3. Make sure that the local firewall on the instance is not blocking the health check probes coming from the IP ranges
130.211.0.0/22 and
35.191.0.0/16.
4. Run a tcpdump on the backend instance to verify that traffic is reaching it from the above IP ranges(
130.211.0.0/22 and
35.191.0.0/16).
Also, make sure that the backend writes the right http headers to mark content as cacheable [2].