AWS/3Tier architecture

[3 Tier Architecture #5] WEB & WAS 연동

BigCo 2023. 3. 30. 22:55

안녕하세요 :)

오늘은 앞서 만든 Web Server와 WAS를 연동하여 ALB의 DNS를 타고 WAS로 접근을 해보겠습니다.

연동을 Mod_proxy방법을 사용하였습니다.

해당 실습을 진행하기 전 이전 포스팅한 게시물을 확인해주세요.

https://bigco-growth-diary.tistory.com/11

 

[3 Tier Architecture #4] Tomcat & OpenJDK 설치

안녕하세요 :) 오늘은 EC2에 Tomcat을 설치하여 WAS(Web Application Server)설정을 해줄겁니다. 오늘 진행하게 될 설정들은 2개의 WAS에 모두 설치해줬습니다. 해당 실습을 진행하기 전 이전 포스팅한 게시

bigco-growth-diary.tistory.com

 

Apache 와 Tomcat을 연동하는 이유

  • WAS만 사용할 경우, 정적 데이터 처리로 인해 동적 데이터에 대한 처리가 늦어질 수도 있습니다. 그래서 Tomcat서버는 서블릿 컨테이너의 역할만 하고, Apache는 웹서버의 역할을 하도록 각각의 기능을 분리하기 위해 사용합니다.
  • 대규모 사용자가 사용하는 시스템을 구축할 때, 하나의 웹서버에 여러 개의 톰캣을 연결해서 부하를 분산시키는 로드 밸런싱을 구현하기 위해 사용할 수 있습니다.

 

 

 

 

 순 서 

1. WEB & WAS 연동 (Mod_proxy)

2. External ALB DNS로 WAS 접근

 

 

 

1. WEB & WAS 연동

1-1
1-2

 

// WEB에서 진행하였습니다.
// http.conf파일을 찾기위해 find 명령어를 사용해봤습니다.

find / -name httpd.conf

// httpd.conf의 맨아래 다음과 같이 추가해줍니다.
vi  /etc/httpd/conf/httpd.conf 



<VirtualHost *:80>
ServerName 3Tier-ABL-1343547142.ap-northeast-2.elb.amazonaws.com
ErrorLog logs/counterjp.fureweb.com-error_log
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
        Order deny,allow
        Allow from all

</Proxy>

ProxyPassMatch ^/(.*\.do)$ http://internal-IN-ALB-1323125724.ap-northeast-2.elb.amazonaws.com:8080/
ProxyPassMatch ^/(.*\.jsp)$ http://internal-IN-ALB-1323125724.ap-northeast-2.elb.amazonaws.com:8080/
ProxyPassReverse / http://internal-IN-ALB-1323125724.ap-northeast-2.elb.amazonaws.com:8080/
</VirtualHost>

<VirtualHost *:80>

ServerName [external 로밸 DNS]

-> 저는 EX_alb를 안넣어주면 web으로 접근해도 무조건 was페이지로 자동으로 이동해지더라구요

ErrorLog logs/counterjp.fureweb.com-error_log

ProxyRequests Off   

-> 리버스 프록시 모드

ProxyPreserveHost On 

->was로 리다이렉트할시 host정보 함께 전달



<Proxy *>

Order deny,allow -> 명령 우선순위  deny ->allow

Allow from all -> 서버 접근 허용



ProxyPassMatch ^/(.*\.do)$ http://[internal 로드밸런서 DNS]:8080/

-> IN_ALB의 DNS주소를 복사해서 넣어줍니다.

ProxyPassMatch ^/(.*\.jsp)$ http://[internal 로드밸런서 DNS]:8080/
-> IN_ALB의 DNS주소를 복사해서 넣어줍니다.


ProxyPassReverse / http://[internal 로드밸런서 DNS]:8080/ 

-> IN_ALB의 DNS주소를 복사해서 넣어줍니다.

</VirtualHost>

 

 

 

// WAS에서 진행하였습니다.

// 웹페이지 수정을 위해 해당 경로로 이동을 해줍니다.
// cd [tomcat이 설치되어 있는 경로]/webapps/ROOT/
cd /home/tomcat/apache-tomcat-9.0.73/webapps/ROOT/

// test.jsp 파일을 만들어서 해당 내용을 넣어줍니다.
vi test.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP Test scriptlet.jsp</title>
</head>
<body>
        <%
                out.println("Test Web Application Server <BR>");
                out.println("WAS 테스트");
        %>
</body>
</html>
~


// tomcat을 재시작 시켜주기 위해 bin디렉터리로 이동한다.
cd /home/tomcat/apache-tomcat-9.0.73/bin

// tomcat 종료
./shutdown.sh

// tomcat 시작
./startup.sh

 

여기까지가 WEB과 WAS의 연동하는 과정입니다.

저는 test.jsp파일을 만들어주고  http://[EX_ALB]/test.jsp 이렇게 was에 접근했는데 계속 오류가 났었습니다.

그 이유는 설정을 해주고 꼭 tomcat을 재시작 시켜줘야 했습니다.

 

 

 

 

2. External ALB DNS로 WAS 접근

 

 

 

 

 

오류

저는 mod_proxy설정을 했을 때 ServerName에  external 로밸 DNS를 안넣고 진행하였습니다.

그 결과 원래는 was 서버에 접근하려면 http://ELB_DNS/test.jsp 이 경로로 진입해야 하는데

http:// EX_ELB_DNS로 접속을 하면 바로 WAS로 넘어가 Web의 웹페이지를 볼 수 없었습니다.

그래서 여기저기 찾아본 결과  ServerName [external 로밸 DNS]를 넣어주는 방법을 찾을 수 있었습니다.

 

오늘은 Web과 WAS서버를 연동하는 실습을 진행해봤습니다.

감사합니다 :D