본문 바로가기
한화시스템 Beyond SW Camp/기반기술

[리눅스] nginx로 Tomcat 분산 처리

by taeh00n 2024. 12. 4.

※ 이 글에서 다룬 기반기술, 프론트엔드, 백엔드, 데브옵스 등 풀스택 개발 지식은 모두 한화시스템 Beyond SW Camp 12기에서 배운 내용을 복습한 것입니다.

 

서버 구조

위의 그림과 같이 하나의 nginx 서버에서 2개의 Tomcat으로 부하 분산을 해보겠다.

1. nginx 설치

	apt update
	apt install -y nginx

 

2. nginx 설정

vi /etc/nginx/sites-enabled/default

nginx 설정 파일로 이동하는 명령어이다.

 

설정 파일에 주석이 너무 많아 주석은 다 지우고 설정하였다.

upstream tomcat_backend {
        server [Tomcat1 IP주소]:8080;
        server [Tomcat2 IP주소]:8080;
}

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                try_files $uri $uri/ =404;
        }


        location /api {
            rewrite ^/api(/.*)$ $1 break;
            proxy_pass http://tomcat_backend;  # 업스트림 그룹으로 프록시
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
}

upstream tomcat_backend 부분에서 Tomcat의 주소를 설정해 하나의 그룹으로 묶어 로드 밸런싱을 처리해야한다. 이렇게 하면 nginx가 요청을 Tomcat 서버로 분산할 것이다.


1. 자바 설치

apt update
apt install -y openjdk-17-jdk

Tomcat은 자바 기반의 어플리케이션 서버이기 때문에 자바를 설치 해줘야 한다.

 

2. 톰캣 다운로드

wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.33/bin/apache-tomcat-10.1.33.tar.gz

3. 톰캣 압축 해제

tar zxvf apache-tomcat-10.1.33.tar.gz

4. 폴더 이동

mv apache-tomcat-10.1.33 /usr/local/tomcat10

 

5. JSP 코드 파일 생성

rm -rf /usr/local/tomcat10/webapps/ROOT/*

tomcat/webapps/ROOT 밑에 파일이 너무 많아 삭제하였다.

vi /usr/local/tomcat10/webapps/ROOT/db.jsp

db.jsp 파일 생성 및 설정

 

<%
    String dbURL = "jdbc:mariadb://[DB IP 주소]:3306/web";
    String dbUser = "[DB user 이름]";
    String dbPassword = "[password]";
    Connection conn = null;
    try {
        Class.forName("org.mariadb.jdbc.Driver");
        conn = DriverManager.getConnection(dbURL, dbUser, dbPassword);
        System.out.println("DB success!");
    } catch (Exception e) {
        e.printStackTrace();
        response.setContentType("text/html;charset=UTF-8");
        out.println("DB failed!");
    }
%>

 

6. 라이브러리 다운

cd /usr/local/tomcat10/lib
wget http://192.0.0.100:10000/mariadb%2djava%2dclient%2d3.3.3.jar

 

7. 톰캣 실행

/usr/local/tomcat10/bin/shutdown.sh
/usr/local/tomcat10/bin/startup.sh

 

8. 톰캣 실행 확인

ps -ef | grep /usr/bin/java
netstat -anlp | grep :8080

 

9. JSP 파일 다운 및 압축 해제

cd /usr/local/tomcat10/webapps/ROOT
wget http://192.0.0.100:10000/1.doc/03.%20%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0%ec%9d%b4%ec%8a%a4/jsp.tar.gz
tar zxvf jsp.tar.gz