2

현재 하나의 호스트 nginx 인스턴스를 제공하는 443 프론트 엔드, 백엔드 및 상태 검사로 HTTPS로드 밸런서 설정이 작동합니다.Google Cloud Load Balancer - 502 - 관리되지 않는 인스턴스 그룹 상태 검사에 실패했습니다.

브라우저를 통해 호스트로 직접 이동할 때 유효한 SSL 인증서가 페이지에 올바르게로드됩니다.

부하 분산 장치 IP를 통해 사이트에 액세스하려고하면 502 - 서버 오류 메시지가 나타납니다. Google 로그를 확인하고로드 밸런서에서 'failed_to_pick_backend'오류가 표시됩니다. 나는 또한 그것이 건강 검진에 실패한 것을 알아 차린다.

일부 파고 주위에 날이 두 개의 링크로 연결 : https://cloudplatform.googleblog.com/2015/07/Debugging-Health-Checks-in-Load-Balancing-on-Google-Compute-Engine.html

https://github.com/coreos/bugs/issues/1195

문제 # 1 - 구글 - 주소 - 관리자가 서버 (RHEL 7)에서 실행되고 있는지 확실하지. 경로에 HTTPS로드 밸런서 IP 항목이 표시되지 않습니다. Google SDK가 설치되었습니다. 이것은 Google 제공 이미지이며 콘솔에서 IP 주소를 업데이트하면 호스트에서도 업데이트됩니다. RHEL7에서 google-address-manager가 실행되고 있는지 어떻게 확인합니까? 모든 구글 서비스

[[email protected]]# systemctl list-unit-files 
google-accounts-daemon.service    enabled 
google-clock-skew-daemon.service    enabled 
google-instance-setup.service     enabled 
google-ip-forwarding-daemon.service   enabled 
google-network-setup.service     enabled 
google-shutdown-scripts.service    enabled 
google-startup-scripts.service    enabled 

문제 # 2의

[[email protected]]# ip route ls table local type local scope host 
10.212.2.40 dev eth0 proto kernel src 10.212.2.40 
127.0.0.0/8 dev lo proto kernel src 127.0.0.1 
127.0.0.1 dev lo proto kernel src 127.0.0.1 

출력 : 200 OK 응답을 수신하지 않습니다. 인증서는 유효하며 LB와 서버 모두에서 동일합니다. 앱 서버에 대해 말풍선을 돌릴 때 나는이 응답을 받는다.

[email protected] curl -I https://app-server.com 
curl: (60) SSL certificate problem: unable to get local issuer certificate 
More details here: https://curl.haxx.se/docs/sslcerts.html 

생각들? 이것은 확실히 확실하지 않은 내부 부하 분산 마찬가지입니다 - (가장 쉬운 0.0.0.0에 바인드입니다) https://cloud.google.com/compute/docs/load-balancing/health-checks#health_check_source_ips_and_firewall_rules 및 백엔드 서비스가로드 밸런서의 IP에서 수신 대기 있는지 확인 -

답변

0

업데이트 및 수업의 몇 배운 :

나는 "구글 주소 매니저는"지금 "- 구글의 IP-미래 데몬"어떤을 실행하여 사용되지 않으며 대체되는 것을 발견했다.

[[email protected] ~]# sudo service google-ip-forwarding-daemon status 
Redirecting to /bin/systemctl status google-ip-forwarding-daemon.service 
google-ip-forwarding-daemon.service - Google Compute Engine IP Forwarding Daemon 
    Loaded: loaded (/usr/lib/systemd/system/google-ip-forwarding-daemon.service; enabled; vendor preset: enabled) 
    Active: active (running) since Fri 2017-12-22 20:45:27 UTC; 17h ago 
Main PID: 1150 (google_ip_forwa) 
    CGroup: /system.slice/google-ip-forwarding-daemon.service 
      └─1150 /usr/bin/python /usr/bin/google_ip_forwarding_daemon 

IP를 허용 활성 방화벽 규칙이 목표도 제대로 설정 포트 443에 대한 130.211.0.0/22 ​​및 35.191.0.0/16 범위입니다.

마지막으로 상태 확인은 현재 기본 "/"경로를 사용하고 있습니다. 개발자는 개발 프로세스 중에 사이트 앞에 인증을합니다. SSL 인증서 오류를 우회하면 curl을 실행할 때 401 인증을받지 못했습니다. 이것이 우리가 겪고있는 문제의 근본 원인이었습니다. 우리는 새로운 경로 (예 :/health)에 대한 인증을 사용하지 않도록 nginx 기본 인증 구성을 수정했습니다. (예 :/health)

nginx 구성이 업데이트되고 상태 확인시 경로가 새/상태 경로로 업데이트되면 우리는 유효한 200 응답. 이로 인해 건강 검진을 통해 건강한 인스턴스가 반환되고 LB가 트래픽을 통과 할 수있게되었습니다.

1

당신은 건강 검진 서비스에 대한 방화벽 규칙을 추가해야합니다 외부 IP를 사용하는 HTTPS에 대해