안녕하세요 :)
오늘은 앞서 만든 Web Server와 WAS를 연동하여 ALB의 DNS를 타고 WAS로 접근을 해보겠습니다.
연동을 Mod_proxy방법을 사용하였습니다.
해당 실습을 진행하기 전 이전 포스팅한 게시물을 확인해주세요.
https://bigco-growth-diary.tistory.com/11
Apache 와 Tomcat을 연동하는 이유
- WAS만 사용할 경우, 정적 데이터 처리로 인해 동적 데이터에 대한 처리가 늦어질 수도 있습니다. 그래서 Tomcat서버는 서블릿 컨테이너의 역할만 하고, Apache는 웹서버의 역할을 하도록 각각의 기능을 분리하기 위해 사용합니다.
- 대규모 사용자가 사용하는 시스템을 구축할 때, 하나의 웹서버에 여러 개의 톰캣을 연결해서 부하를 분산시키는 로드 밸런싱을 구현하기 위해 사용할 수 있습니다.
순 서
1. WEB & WAS 연동 (Mod_proxy)
2. External ALB DNS로 WAS 접근
1. WEB & WAS 연동
// 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
'AWS > 3Tier architecture' 카테고리의 다른 글
[3 Tier Architecture #7] Web WAS DB를 이용한 웹 애플리케이션 동작 (0) | 2023.04.03 |
---|---|
[3 Tier Architecture #6] RDS생성 & 연동 (0) | 2023.03.31 |
[3 Tier Architecture #4] Tomcat & OpenJDK 설치 (0) | 2023.03.29 |
[3 Tier Architecture #3] WAS생성 및 Internal ALB 설정 (0) | 2023.03.27 |
[3 Tier Architecture #2] EC2생성 및 External ALB 설정 (0) | 2023.03.25 |