본문 바로가기
공부/프로그래밍

[GCP] 로드밸런싱(부하분산) 설정 + SSL 인증서 공짜로 받기

by demonic_ 2022. 7. 11.
반응형

해당 포스팅을 이해하기 위해서는 2가지 지식이 있어야 한다.

 

  1. 인증서는 부하분산(로드밸런싱) 구성요소에서만 구성가능하다. -> 로드밸런싱에만 사용할 수 있다
  2. DNS에 부하분산에 등록된 IP를 고정으로 바꿔두어야 한다

 

 

우선 부하분산을 설정해보도록 하기 위해 사전에 필요한 것이 있다.

  1. 연결할 VM 이 실행되고 있어야 한다. 여기서는 이전 포스팅에서 이미 설정해두었다.(링크 참고)
    1. [GCP] 외부에서 구매한 도메인 등록 & VM IP에 연결(https://lemontia.tistory.com/1074)
  2. 인스턴스 그룹을 만든다.

 

인스턴스 그룹을 만드는 이유는 서로 다른 인스턴스간에 그룹으로 묶기 위해서다. 이 설정을 통해 Auto Scaling도 가능하지만 이번 포스팅에선 Auto Scaling은 제외한 방식으로 진행한다.

 

 

 

인스턴스 그룹 만들기

Compute Engine > 인스턴스 그룹으로 이동한다. 혹은 검색창에 '인스턴스 그룹'으로 검색한다.

 

상단에 인스턴스 그룹 만들기를 클릭한다

 

관리되지 않는 그룹으로 하고(관리되는 그룹으로 하면 Auto Scaling을 설정할 수 있는데, 그러기위해선 인스턴스 템플릿 등을 추가 등록해줘야 한다. 이번 포스팅 목적과 벗어나기에 설정하지 않는다)

그룹에 묵을 VM 인스턴스를 체크한 뒤 만든다.

 

생성하고 나면 추가한만큼 인스턴스 수가 들어가있다.(처음에 0개로 표기되며 시간이 좀 지나야 정상표기된다)

 

 

고정 IP를 하나 생성

VPC 네트워크 > IP 주소로 이동한다.

외부 고정 주소 예약을 클릭하여 생성한다. 이 IP는 부하분산기를 생성하면서 등록할 예정이다.

부하분산기를 만들면서 생성하는 방법도 있긴 한데, 그건 고정이 아닌 임시로 생성된다. 결국 고정을 하기 위해선 이 화면으로 이동해서 고정으로 수정해줘야 한다. 무엇을 먼저 하느냐의 차이지 결국 같은 작업을 해야한다.

리전은 꼭 전역으로 선택해야 한다. 그러지않으면 부하분산기를 만들때 선택할 수가 없다.

 

 

부하분산기(로드밸런싱) 만들기

네트워크 서비스 > 부하분산 메뉴로 이동한 뒤, 부하 분산기 만들기를 클릭한다

 

상황에 따라 맞춰서 선택한다. 여기서는 HTTPS로 만든다.

 

 

분산 유형은 기본설정 되어있는걸 그대로 쓴다.

인터넷 연결 또는 내부 전용 옵션에서 외부에서 접속하는걸 하려면 '인터넷에서 VM 또는 서버리스 서비스로' 옵션을 선택해야 한다.

 

다음 화면이 보이는데 여기서 2가지를 등록해줘야 한다

  1. 백엔드 구성
  2. 프론트앤드 구성

 

백엔드 구성은 VM등 내부에 연결해야할 것을 등록하는 것이다. 여기서는 이전에 만들어둔 VM에 연결하도록 한다. 백엔드서비스가 없다면 다음처럼 만들 수 있다.

 

생성하는데 백엔드 부분에 위에서 생성한 인스턴스 그룹을 선택해준다.

그리고 연결될 포트를 적어준다.

 

아래는 추가 옵션인데 기본값으로 두고 만들었다. 상황에 따라 설정하면 된다.

상태확인은 해당 서비스가 살아있는지 체크하는 url을 입력하는 것이다. 기본 health로 설정할 수 있는데, 특별하 수정하지 않고 일단 사용하기로 한다.(추후 운영에서 사용할 것을 설정하려면 해당 부분에 대한 고려도 필요하다)

 

만들기를 클릭한다.

 

백엔드 구성에 방금 만든 백엔드 서비스를 체크 & 확인한다.

 

라우팅 규칙은 자동으로 설정된다. 넘어가자.

 

프런트엔드 구성에서 추가를 눌러 그대로 설정해도 된다.

만약 IP주소가 이전에 만들어둔게 있다면 여기에 등록하면 되고, 아니면 임시로 설정해 등록한다.

 

만약 임시로 하는거라면 HTTPS는 아이피를 할당받은 다음에 하는게 좋다. 이유는 HTTP로 인해 자동으로 생성되는 IP가 있는데 같은 아이피로 등록하는게 좋기 때문이다.

 

이름은 작성하지 않아도 된다.

 

등록한 IP와 인증서가 있다면 HTTPS까지 한번에 등록해도 된다. 다만 인증서가 없다면 일단 HTTP만 먼저등록하고, HTTPS 연동은 아래로 미루도록 하자.

 

마지막으로 부하분산기 이름을 sample-lb로 만든다.

 

만들어지고 나서 잠시 기다리다보면 다음처럼 목록에서 확인할 수 있다.

 

클릭하면 상세보기에 HTTP 등록된 것을 확인할 수 있다.

 

등록된 IP를 가지고 브라우저에서 조회하면 바로 안뜨는데, 아무래도 즉각 반영이 안되는거 같다. 잠시 기다렸다가 다시 조회해보면 된다. 대략 5분 이내로 되는거 같다.

 

 

부하분산기에 도메인 연결하기

부하분산기에 연결된 IP를 알고있으니 연결이 가능하다. 여기서는 이전 포스팅에서 Cloud DNS 설정하는 방법에 대해 설명했다. 그때 등록한 DNS에 레코드를 다음과 같이 추가한다.

 

등록 후 잘 접속되는걸 확인할 수 있다.

 

 

부하분산기에 SSL 인증서 생성 및 HTTPS 연결

위에서 등록한 부하분산기를 다시 들어가보자. 위에 수정버튼을 누른다.

 

 

프런트엔드 구성으로 들어가 추가한다.

프로토콜을 HTTPS로 변경하고, IP주소는 위에서 HTTP에 등록한것과 동일한 것을 등록해야 한다

인증서 부분을 클릭하면 새 인증서 생성하기 버튼이 있다.

 

 

 

인증서 이름은 고유로 지정한다.

생성모드는 'Google 관리 인증서 만들기'를 클릭한다.(만약 가지고 있는 인증서가 있다면 업로드로 등록 가능)

도메인은 위에서 등록한 도메인을 쓰도록 한다.(여러 도메인으로 연결할 경우 복수개 등록도 가능하다)

와일드카드는 사용하지 못한다.(자세한 것은 아래 설명 참고)

 

 

참고로 구글에서 만들어주는 SSL은 와일드카드가 되지 않는다. 자세한건 아래 링크 참고.

https://cloud.google.com/kubernetes-engine/docs/how-to/managed-certs

 

Google 관리 SSL 인증서 사용  |  Kubernetes Engine 문서  |  Google Cloud

의견 보내기 Google 관리 SSL 인증서 사용 이 페이지에서는 인그레스 객체를 사용하여 Google 관리 SSL 인증서로 외부 부하 분산기를 만드는 방법을 설명합니다. 이 인증서는 Google에서 도메인 이름을

cloud.google.com

 

다 설정했다면 업데이트 버튼을 눌러 완료한다.

 

만들어진 인증서 확인방법은 다음 메뉴로 이동하면 된다.

네트워크 서비스 > 부하 분산 > 부하 분산 구성요소 뷰 > 인증서(탭) 으로 이동.

왼쪽 네비게이션에 없어 이렇게밖에 접근이 안된다.

 

 

프로비저닝 상태는 등록한 도메인에 대한 인증서를 생성하는 단계다. 최대 60분이 걸릴 수 있다고 사이트에 안내되어 있다.

링크: https://cloud.google.com/load-balancing/docs/ssl-certificates/troubleshooting?hl=ko&_ga=2.114887808.-620817530.1644108803&_gac=1.222359401.1653537816.CjwKCAjwp7eUBhBeEiwAZbHwkchIjJxKdMBpSHxin-pXbrPxaYwIZrB9IrP0cXBcFXYtbT3wlONM_xoCcdwQAvD_BwE#domain-status

 

SSL 인증서 문제 해결  |  부하 분산  |  Google Cloud

의견 보내기 SSL 인증서 문제 해결 문제 해결 절차는 Google 관리형 SSL 인증서를 사용하는지 자체 관리형 SSL 인증서를 사용하는지에 따라 다릅니다. Google 관리형 인증서 문제 해결 Google 관리형 인

cloud.google.com

 

상세화면을 보면 아직 진행중인걸 확인할 수 있다.

 

시간이 지나면 도메인 상태에 불이 들어온다.

만약 도메인과 IP연결이 제대로 되어있지 않다면 저부분에서 FAILED_NOT_VISIBLE 에러메세지를 보게 된다. 그럴땐 도메인과 부하분산기에 등록된 IP가 잘 연결되어있는지 확인이 필요하다(해당 설정은 Cloud DNS 에서 확인)

 

 

어쨋든 완료가 될때까지 기다릴 수 밖에 없다. 내 경우 30분 정도 기다리면 완료되었다.

아래는 완료된 화면이다.

 

이제 https 를 붙여 접속해보면 잘 되는것을 확인할 수 있다.

 

 

끝.

반응형

댓글