본문 바로가기
CSP (Cloud Service Provider)/Azure

Azure 3tier 구축 (1) WEB + WAS

by BTC_신지웅 2022. 6. 10.

베하~~~안녕하세요 BetterMonday 팀입니다. 오늘은 Azure를 사용해 3tier를 구축하는 방법에대해 알아보고, 만들어보는 시간을 가지도록하겠습니다. 앞에서 쭉 다뤘던 리소스들을 사용하여 구축할 예정이니 앞의 포스팅내용을 참고해주세요!

그럼~~~~~~~~슈웃~~~~~~~~~~!


3계층 구조(3 Tier- Architecture) 란?
어떠한 플랫폼을 3계층으로 나누어 별도의 논리적/물리적인 장치에 구축 및 운영하는 형태입니다.

다음과 같은 구조로 되어 있으며, 서버 한대에 한꺼번에 모든 기능들을 구축하는 것이 아니라 데이터를 저장하고 읽는 데이터 계층, 데이터를 처리하는 어플리케이션 계층, 그리고 데이터를 표현해주는 클라이언트(프레젠테이션) 계층과 같이 각각 3계층으로 나누어 각각의 기능으로 별도의 논리적/물리적인 장치에서 운영하는 방식입니다.

 

3계층 구조의 장점 /  단점

 

장점

각 계층이 분리되어 있어 업무 분담이 가능해지므로 업무 효율성이 증가할 수 있습니다. 또한 여러 대의 서버로 나누어 각 계층이 동작하므로 서버의 부하를 줄여줄 수도 있으며, 경우에 따라 합리적인 스케일업(서버의 성능 업그레이드)이 가능합니다.

 

단점

1계층으로만 사용하는 것 대비 관리가 더 필요하고, 장애가 발생하는 포인트가 더 늘어날 수 있다는 점을 생각해두어야 합니다. 

따라서 비용이 그만큼 많이 발생하게 되므로 서비스 규모 및 사용자 증가에 따라 계층 구조를 설계 및 고려해야 합니다.

 


Architecture

 

저희가 만들게 될 3tier 구조를 간략하게 그림으로 그려본 것입니다. Bastion을 통하여 모든 접속을 할 것이고, 외부 로드밸런스와 내부 로드벨런스를 통하여 web계층, was계층에 부하분산과 접속을 할 것입니다. 

 작업에 들어가기 전에 아키텍쳐를 통해 무엇을 만들고자 하는지 이해하고 가는것이 큰 도움이 됩니다! 

(저는 https://draw.io/ 를 많이 이용합니다.)


앞서 만들었던것과 같이 리소스그룹과 Vnet을 만들어주고 , 외부와 내부 로드벨런서를 만들어 주었습니다.

elb가 외부, ilb가 내부 로드벨런서 입니다. (External, Internal Loadbalance)

 

elb에는 외부와의 통신을 위하여 공용 IP를 생성해주었고, web의 apache와 연동하기 위하여 부하분산 규칙에 80포트를 설정해주었습니다.

외부와의 통신을 위해 공용IP를 설정해 준 모습입니다.
80포트를 설정해 준 모습입니다.

ilb는 내부와의 통신만을 위한 것 이기때문에 공용IP가 없고, was의 tomcat과 연동하기 위하여 8080포트를 설정해주었습니다.

내부 통신만을 위해 Private IP 만 가지고 있는 모습입니다.
8080포트를 설정해 준 모습입니다.

 그리고 저번 포스팅과 같이 vm을 네 대 생성하였습니다. 두 대는 web용, 두대는 was 입니다.

용도에 따라 web과 was로 나누었습니다.

elb의 백엔드 풀에 web배치하여주고 ilb의 백엔드 풀에 was를 배치하여 줍니다. 

elb의 Backend pool에 web 두 대를 연결해 준 모습입니다.

ilb도 똑같이 was두대를 연결해 줍니다.

 

* Backend pool을 설정할 때  Vm에공용 IP 주소가 있으면 연결이 되지 않습니다. 따라서 저번시간에 한것 처럼 공용ip를 제거해 주어야 합니다.

 

그 다음 proxy를 설정해주어야 합니다. porxy를 설정해주지 않고 elb의 공용 IP로 접속을 하게되면 web의 Apache창이 뜨게 되어 있습니다. proxy를 사용하여 포트포워딩을 해주게 되면 80 -> 8080 으로 접속이 가능해지고, elb의 공용IP로 접속하였을 때 was의 톰캣으로 접속이 가능합니다. 

vi /etc/httpd/conf/httpd.conf

위 명령어를 통하여 httpd.conf 파일을 편집모드에 들어갑니다. 다음 코드를 파일 맨마지막에 붙여 넣습니다.

<VirtualHost *:80>
ServerName 20.214.65.155
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow 
Allow from all 
</Proxy>
ProxyPass / http://10.2.3.5:8080/
ProxyPassReverse / http://10.2.3.5:8080/
</VirtualHost>

ServerName에는 elb의 공용 IP를 , ProxyPass 부분에는 ilb의 내부IP를 집어넣으면 됩니다.

이제 elb의 공용 IP로 접속하면 톰캣화면이 뜨게 됩니다.

만약 위의 화면 처럼 was에 설치한 tomcat이 나오지 않고 503에러가 뜨시는 분들은 다음 코드를 web과 was에 입력해주시면 됩니다.

setenforce 0
getenforce

## getenforce 명령어를 입력하였을 때 반드시 'permissive' 라는 결과가 나와야합니다.

503오류가 뜬 모습

여기까지가 3tier 에서 web-was 를 구분짓고, 연동까지 완료한 단계입니다. 이제 DB를 설치하고, DB와 was연동 후 테스트만 하면 3tier 구축은 끝입니다. 

그 부분이 내용이 조금 길어서 다음에 포스팅 하도록 하겠습니다. 


 이번 포스팅은 VM,LB 등을 만들 때 설정값들을 하나하나 다 넣으면 포스팅이 너무 길어져서 넣지 못하였습니다. 저도 이때까지 업로드한 내용을 참고해서 작성하였기 때문에, 포스팅들을 보시고 천천히 따라해보시면 잘 될 것 같습니다.

 

궁금하신 점은 댓글로 남겨주세요!   그럼 다음시간에 만나요 베바~~~~~~~~~~~~!!

'CSP (Cloud Service Provider) > Azure' 카테고리의 다른 글

Azure의 전체 스택 모니터링 소개  (0) 2022.06.16
Azure 3tier 구축 (2) WAS+DB 연동 및 마무리  (1) 2022.06.15
Azure VMSS란?  (0) 2022.05.31
Azure Bastion이란?  (0) 2022.05.27
Azure LoadBalace  (0) 2022.05.13

댓글