1

I have been following this guide to deploy Pega 7.4 on Google Cloud compute engine. Everything went smoothly however on the Load Balancer health check the service continues to be unhealthy.

enter image description here

When visiting the external IP a 502 is returned and in trying to troubleshoot GCP told us to "Make sure that your backend is healthy and supports HTTP/2 protocol". Well in the guide this command:

gcloud compute backend-services create pega-app \
    --health-checks=pega-health \
    --port-name=pega-web \
    --session-affinity=GENERATED_COOKIE \
    --protocol=HTTP --global

The protocol is HTTP but is this the same as HTTP/2?

What else could be wrong besides checking that the firewall setup allows the health checker and load balancer to pass through (below)?

gcloud compute firewall-rules create pega-internal \
    --description="Pega node to node communication requirements" \
    --action=ALLOW \
    --rules=tcp:9300-9399,tcp:5701-5800 \
    --source-tags=pega-app \
    --target-tags=pega-app
gcloud compute firewall-rules create pega-web-external \
    --description="Pega external web ports" \
    --action=ALLOW \
    --rules=tcp:8080,tcp:8443 \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=pega-app

Edit: So the Instance group has a named port on 8080

gcloud compute instance-groups managed set-named-ports pega-app \
    --named-ports=pega-web:8080 \
    --region=${REGION}

And the health check config:

gcloud compute health-checks create http pega-health \
    --request-path=/prweb/PRRestService/monitor/pingservice/ping \
    --port=8080

I have checked VM Instance logs on the pega-app and getting 404 when trying to hit the ping service. enter image description here

Akash Sharma
  • 93
  • 1
  • 12
  • HTTP/2 is an enhancement to the HTTP protocol. However, almost nobody supports HTTP/2 over HTTP. HTTP/2 is usually over HTTPS. I don't know why Google Support told you HTTP/2. If your healthcheck is HTTP that is all that is needed. – John Hanley Nov 29 '18 at 05:27
  • Add to your question how you have the healthcheck configured. – John Hanley Nov 29 '18 at 05:28
  • When I have problems with backend instance healthcheck problems, and the obvious does not solve it, I launch a new instance and then use curl to check that the healthcheck endpoint responds. – John Hanley Nov 29 '18 at 05:30
  • You know that HTTP goes on the port 80 right? Because when reading your firewall-rules I don't see it... – night-gold Nov 29 '18 at 08:54
  • @night-gold Yes I have frontend forwading rule: `gcloud compute forwarding-rules create pega-app \ --global \ --address=$(gcloud compute addresses describe pega-app --global --format 'value(address)') \ --ip-protocol=TCP \ --ports=80 \ --target-http-proxy=pega-app` – Akash Sharma Nov 29 '18 at 17:09
  • That's still not a firewall rules on port 80 :D – night-gold Nov 29 '18 at 18:39
  • 1
    Since load balancer health check the service continues to be unhealthy,therefore verify and make sure: 1) Service is running on the port configured. 2) Service is not bind to any specific IP rather bind to all IP addresses i.e 0.0.0.0/0. – Md Zubayer Nov 29 '18 at 22:28
  • Can you confirm that the issue is solved and post it as an answer? – Patrick W Dec 06 '18 at 17:36

1 Answers1

1

My problem was that I used a configured using a Static IP address without applying a domain name system record like this: gcloud compute addresses create pega-app --global I skipped this step so it generates ephemeral IP addresses each time the instances have to boot up.

Akash Sharma
  • 93
  • 1
  • 12