티스토리 뷰
Naver Cloud Platform에서 web, was 분리해서 구성해보기 - 1
Naver Cloud Platform에서 web, was 분리해서 구성해보기 - 2
Naver Cloud Platform에서 web, was 분리해서 구성해보기 - 3
Naver Cloud Platform에서 web, was 분리해서 구성해보기 - 4
WAS Load Balancer 및 WEB/WAS 연동하기
- WAS Load Balancer 구성 (추후에 WEB, WAS 연동할때 mod_jk로 연동시 8009번 포트 사용)
- 현재 8009포트로 tomcat service가 정상적으로 올라왔다면 아래처럼 성공, 하지만 아직 web, was연동을 안해놨기때문에 tomcat default port가 8080 이므로, 실패가 보일것 (아래 web, was를 연동하면 LB가 아래처럼 정상적으로 연결 성공 모습 확인)
- WEB / WAS 연동하기
- WEB / WAS 연동 간단한 설명
- WAS의 환경설정 파일을 외부에 노출시키지 않도록 하기 위함 / 클라이언트와 연결하는 포트가 직접 WAS에 ㅇ녀결이 되어 있다면 중요한 설정 파일들이 노출될 수 있기 때문에 WAS 설정 파일을 외부에 노출시키지 않도록 하기 위해서 웹 서버를 앞단에 배치 즉, 웹 서버와 WAS에 접근하는 포트가 다르기 떄문에, WAS에 들어오는 포트에는 방화벽을 쳐서 보안을 강화할 수도 있음
- Tomcat 서버는 본연의 임무인 서블릿 컨테이너의 역할만 하고, Apache HTTP Server는 웹서버의 역할을 하도록 각각의 기능을 분리하기 위해 연동할 수 있다.
- 대규모 사용자가 사용하는 시스템을 구축할 때 웹 서버인 아파치와 연동을 하면 부하 분산의 효과를 가질 수 있다. mod_jk의 Load Balancing과 FailOver 기능,, 하지만 우리는 NBP LB 서비스를 이용하니깐 알아서 해줍니다
1. mod_proxy_ajp 연동
- tomcat 단독 구성
- cd /apache/tomcat8.5.50/webapps
# hello 폴더 만들고 거기안에 test용 jsp 입력하기
[tomcat@was01 hello]$ pwd
/apache/tomcat8.5.50/webapps/hello
[tomcat@krish-pwas01 hello]$ ls
index.jsp WEB-INF
- vi index.jsp (처음에 아래 tomcat page가 보일것임)
<html>
<body>
<h1>Tomcat Page</h1>
</body>
</html>
- vi web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
</web-app>
- 톰캣 실행 테스트 ( LB 연결 전이라면 NBP 공인아이피를 꼭 등록해줘야 합니다 / 확인차원에서)
♠ 톰캣 재실행
♠ http://톰캣공인아이피:8080/hello
♠ Tomcat Page 뜨는거 확인 아래는 localhost지만 NBP 위에서 했을때는 공인아이피,, 아까 캡쳐못해서 인터넷에 있는거 들고옴
- AJP/1.3 프로토콜 확인
- apache를 통해 액세스로 변경하기 위해 현재 8080 포트에서 실행하고 있는 tomcat에 직접 연결을 못하게 함
- /apache/tomcat8.5.50/conf에 있는 server.xml에서 아래 내용 주석
<Connector port="8080" protocol="HTTP/1.1"
URIEncoding="UTF-8"
connectionTimeout="20000"
redirectPort="8443" />
-->
- AJP 검색해서 아래 내용 확인
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
- mod_proxy_ajp 사용하여 연동 (앞에서 만들어놓은 web server에서 설정해줘야함)
- vi /apache/apache2.4.38/conf/httpd.conf 아래 내용 주석 해제 및 추가
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
- 아래도 똑같이 httpd.conf에 추가 10.10.10.10은 NBP tomcat 서버의 비공인 아이피 (보안상 10.10.10.10으로 함)
- NBP에서 tomcat <-> apache 연결할때 acg 둘다 열어줘야함
<Location /hello/>
ProxyPass ajp://10.10.10.10:8009/hello/
</Location>
- LB를 연결했다면 아래 그림[1-1]처럼 was1, was2의 비공인아이피 10.2.2.2 / 10.3.3.3을 넣어줘야 하지만 LB가 구성되어있다면 10.1.1.1으로 넣어줘야함
2. mod_jk 연동
* WEB, WAS Server에서 하는게 나누어져있으므로 주의!
- 사이트가서 링크 복사하고 install (WEB Server)
$ wget http://mirror.apache-kr.org/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.46-src.tar.gz
$ tar xvfz tomcat-connectors-1.2.46-src.tar.gz
$ cd tomcat-connectors-1.2.46-src/native
- 빌드
$ ./configure --with-apxs=/apache/apache2.4.38/bin/apxs
$ make
$ make install
$ls -l /apache/apache2.4.38/modules
- apache에서 AJP 프로토콜로 tomcat에 접근하는 포트는 8009이므로, tomcat의 server.xml 파일에서 이를 확인
- vi /apache/tomcat8.5.50/conf/server.xml (Tomcat Server)
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
- apache worker 설정
- vi /apache/apache2.4.38/conf/workers.properties (Web Server)
- 여기서도 host IP가 was server의 비공인 아이피가 될텐데 LB를 연결했으므로 LB 사설 네트워크 10점대 입력해주기
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=10.1.1.1
worker.worker1.port=8009
- 아파치 톰캣 연동 (Web Server)
- vi /apache/apache2.4.38/conf/httpd.conf
(LoadModule 검색해서 맨 마지막줄 추가)
153 LoadModule jk_module modules/mod_jk.so
- tomcat connection 부분 추가
<IfModule mod_jk.c>
JkWorkersFile /apache/apache2.4.38/conf/workers.properties
JkLogFile /apache/apache2.4.38/logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]
JkShmFile /apache/apache2.4.38/logs/mod_jk.shm
JKMount /*.jsp worker1
JKMount /*.css worker1
</IfModule>
- httpd restart 하고 확인해보기
$ sudo systemctl stop httpd
$ sudo systemctl start httpd
- 아래처럼 img는 안보이는 이유는 아래와 같음
- vi /apache/apache2.4.38/conf/httpd.conf
- 밑에 JKMount를 jsp, css만 걸어놓았기때문에 worker1은 tomcat,, jsp, css만 인식함 연동은 잘 된것.
현재 아래 아키텍처에서 WEB LB의 접속정보 slb,,,로 시작하는 도메인 이름을 호스팅 업체의 CNAME에 등록함
NBP LB 가이드에도 LB DNS 이름을 아래와 같이 등록하라고 함
ex) www.hskim.com CNAME slb,,,,,
그렇다면 www.hskim.com으로 로 들어갔을때 위와 같은 화면이 뜨면 톰캣 연동이 정상적으로 된 것
- LB 테스트
WAS01, WAS02 서버의 index.jsp를 조금 바꾸어 한쪽 service stop 후 확인해보면 NBP LB가 알아서 동작해 무중단 서비스를 할 수 있게 됨.
'DevOps' 카테고리의 다른 글
[NBP] haproxy 구성 (2) | 2020.05.14 |
---|---|
[NBP] ELK Service 구성 (filebeat, logstash, elasticsearch, kibana) (0) | 2020.04.21 |
[NBP_Cloud] web / was 분리해서 구성해보기 - 3 (0) | 2020.01.28 |
[NBP_Cloud] web / was 분리해서 구성해보기 - 2 (0) | 2020.01.28 |
[NBP_Cloud] web / was 분리해서 구성해보기 - 1 (0) | 2020.01.28 |
댓글