클라우드 엔지니어/클라우드 캠프과정

2022.09.23 실습 3뎁스 어플리케이션

해아's 2022. 9. 24. 09:18

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>
728x90
반응형