[WebApp] 공유환경이 아닌 격리 환경의 Azure Web Service를 사용기 Episode 3

WebApp
작성자
Roronoa
작성일
2019-04-22 11:11
조회
6389
 

에피소드 3 - ASE의 외부 침략 -

자 이제 bastion에서도 확인이 가능하고 접근이 가능했지만 외부 환경으로 나갈수 없었습니다. 이제 외부 환경으로 나가기 위해 Application Gateway를 사용해 봅니다

1. Application gateway 생성

https://docs.microsoft.com/en-us/azure/application-gateway/overview

2. 연동하기

DNS서버와 Application Gateway의 사용법은 여기서 다루지 않습니다

DNS 서버가 있다고 가정하고 밑에 플로우를 설명해보도록 하겠습니다.

DNS 서버에 예를들어 superman.com을 가지고 있다고 가정하고 Superman.com 이 메인 앱이 되며 support.superman.com 과 manager.superman.com이 있다고 가정합니다. 3개의 앱은 각각 app001.thorapp.avengers.com과 app002.thorapp.avengers.com app003.thorapp.avengers.com 에 매칭이 됩니다.

그리고 3개의 staging 서버는 app001.dev.thorapp.avengers.com 과 app002.dev.thorapp.avengers.com app003.dev.thorapp.avengers.com 에 연결됩니다.

그리고 각각의 앱들은 KUDU에 접속하기 위해서 app001.scm.thorapp.avengers.com 라는 URL로 접근하게 됩니다.

 

 

1번 먼저 DNS서버의 A record는 Application Gateway의 프론트엔드 IP로 매칭시킵니다. superman.com 이 AG의 아이피 로 연결되면 그후 밑에 그림처럼

HTTP/HTTPS 리스너라는 아이가 "리스너" 역활 즉 superman.com이라는 dns가 들어오길 기다리며 듣고 있습니다. 그래서 듣고 있다가 superman.com이라는 도메인이 들어오면 http 세팅을 통하여 룰에 따라서 ILB(내부로드발란서)를 통하여 ASE로 들어오게 됩니다.

superman.com -> HTTP 리스터 -> HTTP 세팅(Probe를 통하여) -> Rule에 따라 ->백엔드 풀을 통하여  ILB 로 들어와서 app001.thorapp.avengers.com 라는 내부 DNS를 타고 웹앱에 접근하게 됩니다.

나머지 5개의 앱도 같은 방법으로 똑같이 ILB를 통하여 6개가 다 갈라져서 한개의 ILB로 온 후 분기 됩니다.

Azure ASE

백엔드풀

백엔드풀은 설정은 밑에 처럼 3개의 프로덕션 app이 rule을 가지고 ILB의 각각의 DNS로 가야됩니다.

KUDU에 접근하는 SCM은 무조건 HTTPS입니다. 그외는 전부 HTTP이므로 6개의 백엔드풀이면 된다.

만약 HTTPS이면 12개에 SCM 3개로 구성될수 있다.
Azure ASE

HTTP 세팅

HTTP 세팅은 밑에 그림처럼 커스텀 Probe를 가지고 설정해주면 된다.

만약 HTTPS를 사용하면 이부분에서 인증서를 설정해주면 된다.
Azure ASE

리스너

말그대로 리스너는 듣고 있다. 어떤 이름의 도메인 HOST Name이 들어올지 듣고 있다가 Rule에 따라

보내준다. 밑에 스크린샷에서 HOSTNAME에 Superman.com을 설정하면 된다.

HTTPS를 사용한다면 6개만 추가해주면된다.

Azure ASE

룰(규칙)

위에 있는 리스너와 HTTP 세팅을 룰에 따라 움직이도록 해준다.
Azure ASE

Probe

쉽게 설명하면 마치 스타크레프트의 SCV처럼 한번 미네랄를 캐라고 시키면 개속 미네랄만 캐는 역활을 하는

SCV이다. 그런데 역활은 무엇인가 하면 정해진 Host의 Path로 가서 서버가 죽었는지 살았는지를 체크하는 역활을 한다

만약 서버가 죽었다고 판단하면 AG가 그 서버로 더이상 트래픽을 보내지 않게 하는 역활이라고 할수 있다.
Azure ASE

Application gateway는 ILB ASE에서 외부로 나갈수 있는 유일한 방법이며 L7 로드벨런서입니다.

일반 Azure 웹앱처럼 FTP나 Jenkins, Git, Bitburket 등등과 연동도 할수 있습니다

SCM을 사용하면 Visual Studio 에서 webdeploy도 사용할수 있습니다.

ASE는 가격이 좀 비싸긴 하지만 확실한 장점이 있는 제품이며 Blob Storage 와 같은 Object Storage와 기본적으로 무조건 연결되어야 부하분산에 최적화 되는 제품입니다. 개인적인 생각으로는 이제는 Object Storage의 사용은 이제는 Default가 되어야 한다고 생각하고 있습니다. 또한 일반 웹앱의 단점을 극복하고 더 폭 넗은 스펙을 사용할수 있는 장점과 더 많은 인스턴스를 사용할수 있으므로 이런 부분에서 쓸만한 제품이라고 생각하고 있습니다.

또한 ASE와 함께 Azure PaaS 데이터베이스를 Endpoint와  함께 쓰신다면 좋은 궁합이 될수 있습니다.

ASE 사용기 Episode 3 http://cloud.syncrofusion.com/?page_id=4&uid=349&mod=document

ASE 사용기 Episode 2 http://cloud.syncrofusion.com/?page_id=4&uid=348&mod=document

ASE 사용기 Episode 1 http://cloud.syncrofusion.com/?page_id=4&uid=251&mod=document

ASE 사용기 Episode 0 http://cloud.syncrofusion.com/?page_id=4&uid=250&mod=document