AWS환경의 기본적인 웹서비스 아키텍쳐이다.
우리는 이것을 온프레미스 환경에서 구축하는 실습을 진행하였다.
모든 시스템을 구할수는 없고 1차 실습에는
1번 웹서버(apache) > 어플리케이션서버(tomcat1) > mysql 서버
2차실습에서는
1번 웹서버(apache) > 로드벨런싱 -> 어플리케이션서버(tomcat1) > mysql 서버(마스터 - 쓰기전용)
ㄴ>어플리케이션서버(tomcat2) < mysql 서버(슬레이브 - 읽기전용)
위와같은 형태로 구축하였으며 마지막 자체실습으로 전날배운 시스템을 합쳐
로드벨런싱서버 -> 웹서버(apache1) > 로드벨런싱(to 1or2) -> 어플리케이션서버(tomcat1) > mysql 서버(마스터 - 쓰기전용)
ㄴ>웹서버(apache2) > 로드벨런싱(to 1or2) -> 어플리케이션서버(tomcat2) < mysql 서버(슬레이브 - 읽기전용)
까지 진행하는 실습을 진행하였다
1번실습 내용
vm웨어 같은 네트워크 대역에 서버를 7개 셋팅한다
서버2(222) 웹서버 apache
서버4(224) tomcat 서버 tomcat1
서버6(226) 데이타베이스 서버 mysql1
아키텍쳐
하드웨어+소프트웨어 시스템 전체 설계
수직 분할형 : 서버별로 다른역할
수평 분할형 : 용도가 같은 서버를 늘려 안정성 및 성능을 향상
지리 분할형 : 업무 연속성 및 시스템 가용성을 높이기 위해 지리적으로 분할함
------------------------------------------------------------------------------------------------------------
웹 서버와 웹 어플리케이션와 DB 서버 연동
------------------------------------------------------------------------------------------------------------
(1) 아파치 서버 설정
0) 웹서버 설치
yum -y install httpd
1) 방화벽 해제
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2) 관련 패키지 및 모듈 설치
yum install -y httpd httpd-devel gcc gcc-c++
yum install -y wget
wget https://dlcdn.apache.org/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz
3) 모듈 설치
tar zxvf tomcat-connectors-1.2.48-src.tar.gz 압축 풀고
cd tomcat-connectors-1.2.48-src/native/ 이동하고
./configure --with-apxs=/usr/bin/apxs
yum install -y make
yum install -y redhat-rpm-config
make
tomcat-connectors-1.2.48-src/native/apache-2.0 밑에
mod_jk.so 생성됨
cp mod_jk.so /usr/lib64/httpd/modules/mod_jk.so
chmod 755 /usr/lib64/httpd/modules/mod_jk.so
4) 서버에서 모듈 적용 설정
vi /etc/httpd/conf/httpd.conf 파일 60번 라인에 다음 내용 추가
LoadModule jk_module /usr/lib64/httpd/modules/mod_jk.so
<IfModule jk_module>
JkWorkersFile /etc/httpd/conf/workers.properties
JkLogFile /var/log/httpd/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkMount /*.jsp worker1
</IfModule>
5) 워커 파일 생성
vi /etc/httpd/conf/workers.properties
파일 안에 다음 내용 작성
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=[톰캣의 IP]
worker.worker1.port=8009
6) 테스트 파일 생성
vi /var/www/html/index.html 파일 새로 만들어서 내용을 다음과 같이 설정
apache1
7) 톰캣 설정 후 서버 재시작
systemctl restart httpd
(2) 톰캣 서버 설정
1) 방화벽 해제
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2) 설치
1) JDK 설치
yum -y install java-1.8.0-openjdk-devel.x86_64
버전 확인
java -version
2) 톰캣
yum install -y wget
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
tar zxvf apache-tomcat-9.0.65.tar.gz
mv apache-tomcat-9.0.65 /usr/local/tomcat9
3) 톰캣 설정
vi /usr/local/tomcat9/conf/server.xml 파일에서 153번 줄에 다음 내용 추가
<Context path="" docBase="[이니셜]" reloadable="true" />
121번 라인에 다음 내용 추가
<Connector protocol="AJP/1.3"
address="0.0.0.0"
secretRequired="false"
port="8009"
redirectPort="8443" />
저장 및 종료
/usr/local/tomcat9/webapps 디렉토리 밑에 [이니셜] 디렉토리 생성
/usr/local/tomcat9/webapps/[이니셜] 디렉토리 밑에 index.jsp 파일 생성
vi /usr/local/tomcat9/webapps/[이니셜]/index.jsp 파일에 다음 내용 작성
test
4) 톰캣 서버 실행
/usr/local/tomcat9/bin/shutdown.sh
/usr/local/tomcat9/bin/startup.sh
5) 톰캣 실행 확인
yum -y install net-tools
netstat -anlp | grep :8080
netstat -anlp | grep :8009
(3) 중간 확인
본체 웹 브라우저에서 http://[아파치 서버 IP]/index.jsp 입력했을 때
톰캣에서 만든 index.jsp 파일의 내용이 나와야 함
---------------------------------------------------------------------------------------------------------------------
(4) DB 서버 설정
1) 방화벽 해제
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2) mysql 설치 및 초기 설정
yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum -y install mysql-community-server
설치 후
systemctl restart mysqld 로 mysql 실행
cat /var/log/mysqld.log | grep root@localhost 명령어로 임시 패스워드 확인
mysql_secure_installation
임시 패스워드 입력 후 새로운 패스워드 입력
y로 대답 패스워드 다시 설정하라그러면 패스워드 다시 설정
나머지 y로 대답
패스워드는 qwer1234 으로 통일
3) DB 및 테이블 생성
DB 접속 후
CREATE DATABASE [DB 이름];
use [DB 이름];
CREATE TABLE [테이블 이름] (sname VARCHAR(10), sage INT);
데이터 몇개 넣기
INSERT INTO student VALUES('kim',10);
INSERT INTO student VALUES('lee',20);
INSERT INTO student VALUES('park',30);
INSERT INTO student VALUES('sim',40);
4) 원격 접속 허용 계정 생성
CREATE USER '[DB 계정]'@'%' identified by '[DB 비번]';
GRANT ALL PRIVILEGES ON [DB이름].* TO '[DB 계정]'@'%';
FLUSH PRIVILEGES;
5) 톰캣이랑 DB 연동하기
톰캣 서버에서
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.19.tar.gz
아카이브 해제
해당 디렉토리로 이동
cp mysql-connector-java-8.0.19.jar /usr/local/tomcat9/lib/
톰캣 재시작
/usr/local/tomcat9/bin/shutdown.sh
/usr/local/tomcat9/bin/startup.sh
(5) 최종 확인
톰캣에 db.jsp 파일 생성
<%@page import="java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<body>
<table border=1>
<tr><td>이름</td><td>no</td></tr>
<%
Connection conn = null;
ResultSet rs = null;
String url = "jdbc:mysql://192.168.179.226:3306/yoskr_db?serverTimezone=UTC";
String id = "yoskr";
String pwd = "qwer1234";
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, id, pwd);
Statement stmt = conn.createStatement();
String sql = "SELECT * FROM student";
rs = stmt.executeQuery(sql);
while(rs.next()){
%>
<tr>
<td><% out.println(rs.getString("sname"));%></td>
<td><% out.println(rs.getString("sage"));%></td>
</tr>
<%
}
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
%>
</table>
</body>
</html>