1. WEB 서버, WAS 서버란?
WEB 서버는 HTML 문서와 같은 정적 컨텐츠를 처리하는 것(HTTP 프로토콜을 통해 읽을 수 있는 문서)
Web 서버에 대표적인 예로는 apache, nginx, IIS 등이 있습니다.
WAS 서버는 asp, php, jsp등 개발언어를 읽고 처리하여 동적 컨텐츠, 웹 응용 프로그램 서비스를 처리하는 것.
WAS 서버의 대표적인 예로는 tomcat, jboss, jeus, web sphere 등이 있습니다.
최근에는 WAS서버에는 WEB기능이 포함되어 있는 경우가 많습니다.
2. WEB서버와 WAS 서버를 분리하는 이유?
- 기능을 분리하여 서버의 부하를 방지
WAS서버에서는 정적과 동적 처리가 가능한데, 정적처리를 하게 되면 부하가 많이 걸리게 됩니다.
그렇기 때문에, 접속자 수가 많은 경우, 부하를 방지하기 위해서 사용합니다.
- 물리적으로 분리하여 보안 강화
- 여러대의 WAS를 연결 가능
로드밸런싱 설정을 함으로써, 한 시스템이 작동이 멈췄을 때, 대체 서버로 작동해 장애 시간을 줄일 수 있습니다.
- 웹 어플리케이션 서비스 가능
java서버, php서버등 하나의 웹서버를 통해서 서비스를 가능합니다.
3. WEB 서버와 WAS 서버 구축 예제
※ ubuntu 18.04 에서 테스트 진행.
WEB 서버 IP : 192.168.0.10
WAS 서버 IP : 192.168.0.20
1) WEB 서버 셋팅
- Apache 설치 및 Apache-tomcat 연동 모듈 설치
# apt-get update
# apt-get install apache2
# apt-get install libapache2-mod-jk
- Apache-tomcat 연동 묘듈 설정
# vi /etc/apache2/mods-available/jk.conf
JkWorkersFile /etc/libapache2-mod-jk/workers.properties
Jkworkfile 참조하면 workers.properties 경로가 나와있습니다.
해당 경로 들어가면 workers.properties를 수정해줍니다.
# vi /etc/libapache2-mod-jk/workers.properties
worker.list=ajp13_worker
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=192.168.0.20
worker.ajp13_worker.type=ajp13
worker.ajp13_worker.lbfactor=1
[설정 설명]
- worker.list = 이름 // 이름설정으로 연결할 tomcat서버를 구분 명을 쓰면됩니다.
- worker.이름.port = port번호 // tomcat 서버의 ajp 포트를 말합니다.
- worker.이름.host = IP나 url 주소 // tomcat 서버주소
- worker.이름.type = ajp13 // apache서버와 tomcat 서버가 통신하는 프로토콜 명으로, ajp13으로 설정하면 됩니다.
- worker.이름.lbfactor=1 // 부하분산 설정으로 분산지수로 기본은 1입니다.
# vi /etc/apache2/sites-available/000-default.conf
JkMount /*.jsp ajp13_worker
해당 url로 들어갈 때, .jsp파일은 was 서버로 향하게 됩니다.
2) WAS 서버 셋팅
- tomcat 설치
# apt-get update
# apt-get install tomcat8
# vi /etc/tomcat8/server.xml
아래 내용 주석해제해줍니다. ajp 프로토콜을 통해서 연동해야 하므로, 해당 부분 설정해줍니다.
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
정상적으로 실행하는지 test.jsp 파일을 was 서버에 만들어 놓았습니다.
# vi /var/lib/tomcat8/webapps/ROOT/test.jsp
<html>
<body>
<%
String str = request.getParameter("name");
if(str == null)
{ str = "JSP"; }
%>
Hello, <%= str %>!!!
</body>
</html>
3) 테스트 진행
- URL에 WEB 서버 IP로 들어가게 되면 기본 index 페이지인 ubuntu의 apache 파일이 뜹니다.
- URL에 WEB서버IP/test.jsp 을 치게 되면, 동적 모듈으로 인식해, was 서버로 보내게 되며, was서버에 있는 test.jsp 파일이 열리게 됩니다.
4. 로드밸런싱 설정
worker.list=loadbalancer
worker.loadbalancer.type=lb
worker.loadbalancer.sticky_session=0
worker.loadbalancer.method=R
worker.loadbalancer.balance_workers=tomcat1,tomcat2
옵션 설명은 아래와 같습니다.
worker.list=loadbalancer // 로드밸런싱 이름으로 잡았습니다.
worker.loadbalancer.type=lb // 로드밸런싱 타입
worker.loadbalancer.sticky_session=0 // sticky_session을 설정하는 부분입니다.
worker.loadbalancer.method=R // 다양한 방식으로 로드밸런싱을 설정하는 부분입니다.
workers.loadbalancer.balance_workers=tomcat1,tomcat2 // 로드밸런싱을 설정하는 그룹 명
worker.tomcat1.lbfactor=1 // tomcat1의 부하분산지수입니다.
* sticky_session 이란 mod_jk에서 세션을 생성할 때, 사용자 PC에 쿠키에 기록되는 세션 아이디를 이용하여 기존에 세션 정보에 따라 어디 서버로 향할지 결정을 하는 것으로
한번 세션정보가 설정이 되면, 해당 서버에만 계속 접근이 됩니다. 설정을 할 때에는 1로 설정을 하며, 여기서는 설정을 안했습니다.
* method : 다양한 방식으로 로드밸런싱을 설정할 수 있습니다.
R : default 값으로 요청에 따른 분산 설정
S : 연결된 세션에 따라 분산
T : 발생하는 트래픽에 따라 분산
B : 서버의 부하에 따른 분산
'LINUX > WEB' 카테고리의 다른 글
CentOS8 - Apache + Mysql + PHP 소스설치 (0) | 2020.01.08 |
---|---|
한 서버의 여러 PHP버전 설치 (0) | 2019.07.07 |
Cronolog 설치 (0) | 2019.06.03 |
awstats 설치 및 설정 (0) | 2019.06.03 |
PHP에러 (0) | 2019.06.03 |