Last Updated on 2025-03-11 by BallPen
구글 클라우드 CDN 구축 과정 중 발생할 수 있는 에러의 해결 방법을 알려 드립니다.
구글 클라우드 CDN(content delivery network, 콘텐츠 전송 네트워크) 구축 중 발생할 수 있는 다양한 에러의 해결 방법을 소개합니다.
저는 최근에 구글 클라우드 cdn을 구축 해봤는데요. 구축 과정 중 여러 에러를 경험했어요. 그 에러들을 어떻게 해결했는지 그 방법을 설명드릴거에요.
아래는 이번 글의 목차입니다.
Contents [hide]
1. 구글 클라우드 CDN 구축 단계
구글 클라우드 플랫폼에서 CDN을 구축하기 위해서는 먼저 인스턴스 그룹과 부하분산기를 만들어야 해요. 그리고 클라우드 CDN을 설정하면 됩니다.
구글 클라우드 인터페이스도 사용자 편리성에 맞추어 계속 개선되어 왔어요. 그럴지라도 CDN 구축에 대한 기본적인 절차는 크게 달라지지 않았으니 링크된 이전 글을 참고하시기 바랍니다. Cdn 구축에 대한 기본적인 단계를 이해할 수 있을 거에요.
이 글에서는 CDN 구축 과정중 부딪힐 수 있는 몇가지 에러의 해결 방법에 집중할 거에요.
2. 방화벽 관련 에러
2-1. VM 인스턴스 방화벽 관련 에러
구글 클라우드 플랫폼에서 발생할 수 있는 에러의 주요 원인은 태그 명칭을 일관되게 사용하지 않았기 때문이에요. 저도 이 문제 때문에 많은 고생을 했어요.
구글 클라우드에서 ‘Compute Engine VM 인스턴스’로 가면 여러분이 운영하는 vm 인스턴스 목록을 볼 수 있어요. 여기서 인스턴스 이름을 클릭하면 세부 내용을 볼 수 있는데요.
세부 내용 중 클라우드 CDN 구축에 중요한 요소는 ‘방화벽’입니다.
![[그림 1] VM 인스턴스 세부 내용에서 방화벽에 대응하는 네트워크 태그를 잘 기억해 두어야 해요.](https://ballpen.blog/wp-content/uploads/2025/03/Screenshot-2025-03-10-at-10.41.19-PM.jpg)
위 [그림 1]은 VM 인스턴스의 ‘방화벽’과 ‘네트워크 태그’ 부분을 보여주고 있어요. 여기서 ‘부하분산기 상태 점검 허용’항목에 ‘사용 안함’으로 뜬다면 나중에 부하분산기 설정 중 아래와 같은 벡엔드 오류가 발생합니다.
백엔드 서비스 한개가 비정상입니다.
그러므로 만일 ‘부하분산기 상태 점검 허용’에 ‘사용 안함’으로 되어 있다면 가장 위 ‘수정’ 버튼을 클릭하여 해당 설정 항목을 체크하시기 바랍니다. 그러면 ‘사용’으로 바뀔 거에요.
그리고 [그림 1]처럼 해당 방화벽 사용 설정에 따라 ‘네트워크 태그’에 ‘http-server, https-server, lb-health-check’ 태그들이 만들어 지게 됩니다.
꼭 노트에 저 태그들의 이름을 잠시만 적어 놓으세요. 저 태그들의 명칭을 일관되기 사용하기 위함이에요.
2-2. VPC 네트워크에서 http 방화벽 관련 에러
VM 인스턴스에서 ‘http 트래픽, https 트래픽, 부하분산기 상태 점검 허용’을 모두 “사용”으로 바꾸었다면 이제는 구체적인 방화벽 설정을 점검해야 해요.
구글 클라우드에서 ‘VPC 네트워크 방화벽’으로 들어가 보세요.
그러면 여러 방화벽 설정들을 볼 수 있는데요. CDN 구축에서 중요한 것은 http, https, health-check입니다.
먼저 ‘default-allow-http’가 있는지 찾아보세요. 분명히 있을거에요. 왜냐면 VM 인스턴스에서 ‘http 트래픽’을 사용하는 것으로 설정했다면 이에 대응하는 방화벽 설정이 자동으로 생기기 때문이에요.
해당 설정으로 들어가면 아래의 화면을 볼 수 있어요.
![[그림 2] 방화벽에서 default-allow-http 조회 화면](https://ballpen.blog/wp-content/uploads/2025/03/Screenshot-2025-03-10-at-11.21.49-PM.jpg)
여기서 [그림 2]처럼 ‘대상 태그’가 VM 인스턴스에서 적어놓았던 태그 명칭과 동일하게 설정되어 있어야 해요. 즉 노트에 적어둔 http-server로 되어 있는지 확인하라는 거에요.
만일 VM 인스턴스 방화벽 설정의 태그와 다르다면 사이트 접속시 아래와 같은 에러가 발생합니다. 다르다면 꼭 수정해서 동일하게 해주어야 합니다.
upstream connect error or disconnect/reset before headers. retried and the latest reset reason: connection timeout
IP범위, 프로토콜 및 포트 설정 등은 [그림 2]와 동일하게 설정해주면 됩니다.
2-3. VPC 네트워크에서 https 방화벽 관련 에러
구글 클라우드에서 ‘VPC 네트워크 방화벽’으로 들어가면 ‘default-allow-https’도 볼 수 있어요.
![[그림 3] 방화벽에서 default-allow-https 조회 화면](https://ballpen.blog/wp-content/uploads/2025/03/Screenshot-2025-03-10-at-11.29.47-PM.jpg)
여기서도 ‘대상 태그’가 VM 인스턴스에서 적어둔 태그 명칭과 동일하게 설정되어 있어야 해요. 즉 https-server로 동일하게 설정되어 있는지 확인하면 됩니다.
만일 태그 명칭이 다르다면 사이트 접속이 이루어지 지지 않게 됩니다. IP 범위, 프로토콜 및 포트는 위 [그림 3]처럼 설정해주면 됩니다.
2-4. VPC 네트워크에서 health-check 방화벽 관련 에러
‘VPC 네트워크 방화벽’으로 들어가면 ‘default-allow-health-check’도 볼 수 있어요.
![[그림 4] 방화벽에서 default-allow-health-check 조회 화면](https://ballpen.blog/wp-content/uploads/2025/03/Screenshot-2025-03-10-at-11.36.59-PM.jpg)
여기서도 ‘대상 태그’가 VM 인스턴스에서서 보았던 태그와 이름이 같아야 합니다. IP 범위, 프로토콜 및 포트는 위 그림 처럼 설정하며 됩니다.
3. 부하분산기 설정 관련 에러
3-1. 백엔드 에러
부하분산기를 설정할 때도 VM 인스턴스에서 적어둔 태그가 동일한 이름으로 계속 사용되어야 합니다. 만일 그렇지 않다면 부하분산기에서 다음의 에러가 발생해요.
백엔드 서비스 한개가 비정상입니다.
가장 많이 실수하는 부분은 부하분산기 백엔드 설정에서 ‘상태 확인’의 태그를 VM 인스턴스에서 보았던 태그와 동일하게 설정해야 하는데 임의로 적어버리기 때문이에요.
![[그림 5] 부하분산기의 백엔드 설정](https://ballpen.blog/wp-content/uploads/2025/03/Screenshot-2025-03-11-at-12.17.20-AM.jpg)
위 [그림 5]와 같이 ‘상태확인’에 VM 인스턴스에서 보았던 ‘lb-health-check’ 태그가 동일하게 사용되어야 합니다.
물로 ‘상태 확인’ 세부 설정도 중요한데요. 아래 [그림 6]을 참고하시기 바랍니다. VPC 네트워크 방화벽 설정 정보를 일관되게 적용하면 됩니다.
![[그림 6] 부하분산기의 상태 확인 설정 화면](https://ballpen.blog/wp-content/uploads/2025/03/Screenshot-2025-03-11-at-12.16.35-AM.jpg)
3-2. 프런트 엔드 에러
아래 [그림 7]은 부하분산기의 프론트엔드 설정 화면입니다.
![[그림 7] 부하분산기의 프런트엔드 설정 화면](https://ballpen.blog/wp-content/uploads/2025/03/Screenshot-2025-03-11-at-12.18.12-AM.jpg)
여기서 ‘인증서’ 항목을 볼 수 있는데요.
저 인증서가 정상적으로 발행되기 위해서는 부하분산기와 연결된 IP(그림 7의 경우 34.49.182.204)를 dns의 A record에 반영해주어야 해요. 그래야 인증서가 발행됩니다.
물론 dns에 등록했더라도 인증서가 발급되기까지는 접속이 이루어지지 않을 거에요. 약 5분정도 기다려야 하고요. 인증서가 발행되면 그때부터 사이트 접속이 정상적으로 이루어지게 됩니다.
dns 변경 후 사이트 접속이 이루어지지 않아 불안하더라도 조금만 기다려 보세요. 제대로 설정했다면 약 5분 정도 후부터 정상 접속될 테니까요.