azure application Gateway 적용하기

이명진·2024년 3월 13일
0

적용 목적

이전글 : https://velog.io/@ljo094822/TIL-Azure-Load-Balancer
Azure- load- balancer를 적용하다가 여기까지 왔다.

원하던 목적은 서버 두대 (1,2)가 돌아가는데 업데이트를 위해 배포를 진행할때 서버 1은 서버를 멈추고 2는 계속 운영되고 1이 배포가 완료되면 2를 멈추고 1을 운영하는 것을 원하기 위해서
분산을 선택하게 되었고 loadbalancer에서 application gateway를 선택하게 되었다.

application Gateway는?

  • http 요청에 따른 라우팅

  • url param을 이용해서 라우팅도 가능하다.

  • app service 또는 VM을 이용해서 라우팅 처리를 할수 있음

준비 : app service 2개 준비 , 가상네트워크 만들기

프론트엔드 : application gateway 의 public ip, 도메인 설정 하는 창

백엔드 설정 : appservice 를 라우팅 설정하는 곳 (pool은 그룹핑의 뜻이다 )

라우팅 룰 설정 : 리스너 / 백엔드 타겟

 리스너 : application gateway로 처음 들어올때 설정하는 부분이다. 포트설정 등을 할수 있다. 
백엔드 풀 세팅 : 리스너로 받은 포트정보로 백엔드(사이트)를 보여주는 곳으로 설명할수 있다. 

application-gateway 만들기는 검색만해도 수두룩 빽빽나오기 때문에 넘어가도록 한다.
사실 azure에서 만들기 해도 잘 설명해주기 때문에 딱히 설명은 필요없다.
그냥 resource gruop 선택하고 vnet 선택해서 만들면 된다. 만들때 바로 바로 새로 만들수 있기 때문에
상당히 쉽다.

라운드 로빈 서빙 작업.

application gateway까지 만드는것은 좋다. 하지만 그다음이 문제였다.

내가 원하는 작업은 하나의 사이트 주소로 인해 두개의 사이트를 접근할수 있게 하는 것이었다.

application gateway를 만들면 Frontend public IP address를 생성해준다.
여기가 application gateway 주소이다.

이 IP address로 인해서 두개의 사이트를 접근할수 있는가? 를 하고 싶었는데. 생각 보다 어려운 내용이어서
삽질을 많이 했다.

prove (봇 같은건데 서버가 건강한지 체크해준다) 가 자꾸 502, 404에러를 뱉어서 뭐가 문제인지 몰라서 많이 헤맸다.

502, 403 결과가 나올 경우

나같은 경우에는 사이트 인증서를 받은다음에 443포트를 등록하니 문제를 해결 할수 있었다.

그다음 문제로는 두개의 사이트를 서빙해야 하는데 하나의 사이트만 자꾸 연결이 되는 것이었다.

두개를 연결하면 404 에러를 자꾸 뿜었다.

기본적으로 Listener는 포트 1개 (80,443)으로 등록할수 있고 중복되면 안된다.
80이 http 이고 443 이 https이다 443을 등록하려면 인증서를 받아야 한다.
listener의 규칙설정을 여러개 만들수는 있지만 포트가 중복되서는 안됬다.

그리고 backend setting은 포트 중복사용이 가능하고 Rules에서도 중복 선택이 가능했다.

listener의 경우 rule에서 하나를 선택하면 다른 rule을 새로 생성할때 listenr중복 선택이 안되었다.

그말은 application gateway의 프론트에서 포트 설정은 하나만 되고 백엔드 설정은 포트마다 여러개 설정이 가능하다는 말이다.

listener type에서 basic과 multisite 타입으로 나뉘어져 있는데

나처럼 사이트가 여러개를 등록하고자하면 multisite설정으로 주소를 입력해주면 된다고 해서
와일드 카드를 사용해서 주소를 등록해 줬는데 404 에러가 계속 발생되었다.

Rules type?

계속 오류를 찾아가보며 공부하다 보니 Rules type중에 path-based 옵션이 있다는 것을 알게 되었다.

계속 하나씩 listeners와 backend settings 를 변경해 가면서 테스트를 하고 있었는데

rules옵션은 새로 만들지 않는 이상 발견할수가 없어서 찾아 내질 못하고 있었다.

path-base rules는 아래와 같다.

path설정을 하여서 각 pool로 접근을 할수 있게 해주는 옵션이었다.

이를 활용하니 확실히 두개의 사이트를 gateway address로 접근이 가능하게 되었다.

예) gateway-address/webapp => site1
gateway-address/dummy => site2

어찌 저찌 방법은 찾았지만 원하던 방법은 같은 주소 path가 같은 것일때 서빙하는 게 목적이다.

조금더 찾아봐야 하지만 까먹을까봐 정리해둔다..

해소

방법을 찾게 되었다.

쭉 다시 이해 하다보니 부하분산에 대해서 알게 되었다. 부하 분산 말뜻을 모르고 그냥 사용했는데

부하가 가해지면 분산을한다는 뜻이었다.

그냥 backend pool 에서 backend targets를 두개 를 설정하면 되는 일이었다.

item 2개를 설정하면 된다.

그리고 application gateway 페이지로 접근해서 새로고침을 열나게 누르다 보면 설정한 다른 페이지가 나온다.

application gateway 에 부하가 가해지면 다른 사이트로 접근이 되는 것이었다.

이것도 모르고 계속 방법을 찾고 있었던 것이었따..

결과적으로는 하고 싶은 방법으로 해결 할수 있었다. 주소 하나를 가지고 분산이 가능해졌다.

이제 잘사용하려면 이 ip 주소를 사람들이 접근하기 쉽도록 감싸면 되겠다.

결과는 ?

원하던 목적은 서버 두대 (1,2)가 돌아가는데 업데이트를 위해 배포를 진행할때 서버 1은 서버를 멈추고 2는 계속 운영되고 1이 배포가 완료되면 2를 멈추고 1을 운영하는 것을 원했다.

한개의 서버를 잠시 stop 하고 테스트해본 결과 처음에는 403 에러가 나오면서 서버가 멈춘게 보이다가 시간이 조금 흐르니 다른 서버만 노출되는 것이 확인되었다.

초반에 서버 403이 나오는 에러사항이 있긴 하지만 이후에는 잘 목적처럼 잘 구동되는 것같다.

시간을 체크해보니 1분 가량 내려간 서버가 보여서 403에러가 나타나지만 1분 이후 나머지 서버로 계속 보여주는것 같다.

일시적인 테스트 지만 계속 테스트를 진행해 봐야 할것 같다.

profile
프론트엔드 개발자 초보에서 고수까지!

0개의 댓글