https://mamdragors.tistory.com/28
AWS - 4. 이중화(ALB) 및 Tomcat 설치
이중화(ALB)다음과 같은 구성으로 2중화를 진행할 것이다.보안 서버는 공인아이피로 접속하고 NAT 게이트웨이를 통해 was 서버에 접속할 것임web 서버는 공인아이피를 할당받아 다이렉트로 접속해
mamdragors.tistory.com
전 단계에서 이중화 및 톰켓 설치 까지 진행함.
퍼블릭 영역의 Nginx 2A 를 호출시 Tomcat 2A 로 연결되도록,
퍼블릭 영역의 Nginx 2C 를 호출시 Tomcat 2C 로 연결되도록
설정 할 것이다.

Nginx2A 에 접속하여 진행한다.
Nginx 설정파일 편집
sudo vi /etc/nginx/conf.d/default.conf

원래 내용을 전부 지우고 아래 코드를 붙여넣는다
server {
listen 80;
server_name localhost;
# 톰캣 서버(10.250.2.240:8080)로 모든 요청 프록시
location / {
proxy_pass http://10.250.2.240:8080;
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;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
}
}

GPG 키 추가
sudo nginx -t
nginx 재가동
sudo systemctl restart nginx
재가동 후 "http://nginx 의 ip" 로 접속하면 tomcat의 화면을 볼 수 있음

Nginx2C 도 동일하게 진행.
default.conf 파일의 ip 만 다르고 나머지는 동일하다. 아래 빨간 글씨 참고
Nginx 설정파일 편집
sudo vi /etc/nginx/conf.d/default.conf
--- 내용 ---
server {
listen 80;
server_name localhost;
# 톰캣 서버(10.250.12.240:8080)로 모든 요청 프록시
location / {
proxy_pass http://10.250.12.240:8080;
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;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
}
}
--- 내용 끝---

예제 jsp 를 FTP로 보안서버(BASTION 서버) 영역에 올린다.
DB 연결하여 insert/update/delete/select 기능이 작성되어 있다.


Tomcat2A, Tomcat 2C 에 파일을 전송한다.
Bastion 접속된 쉘에서 진행
scp *.jsp tomcat2a:/home/ubuntu/
scp *.jsp tomcat2c:/home/ubuntu/
위에서 tomcat2a 라는 별칭을 사용할수 있는것은
/home/ubuntu/.ssh/config 파일에 해당 정보를 설정해 두었기 때문이다
위 명령어 대신 서버주소와 보안 키파일을 명시하여 복사할 수 있다.
명령어 형식
scp -i [키파일] [로컬 파일 경로] [사용자ID]@[서버주소]:[원격 저장 경로]
scp -i /home/ubuntu/.ssh/jongnoaws.pem /home/ubuntu/*.jsp ubuntu@10.250.2.240:/home/ubuntu
scp -i /home/ubuntu/.ssh/jongnoaws.pem /home/ubuntu/*.jsp ubuntu@10.250.12.240:/home/ubuntu


Tomcat2A, Tomcat 2C 에서 전부 작업
톰켓 서버의 root 폴더로 jsp 파일을 이동한다.
mv *.jsp /home/tomcat/apache-tomcat-9.0.108/webapps/ROOT/

Tomcat2A, Tomcat 2C 를 구분하기 위해 각 서버에서 파일을 수정한다
index.jsp, list.jsp 파일에서 h1 의 color 를 Tomcat2A 는 red, Tomcat 2C 는 blue 으로 수정한다.



브라우저에 도메인을 입력하고 접속해 본다.

최초화면 하단의 [게시판 시작하기] 클릭시 "데이터베이스 연결 실패:" 라는 메시지가 보일 것이다.

RDS(Relational Database Service) 설치
1. 보안그룹 생성
aws.com 에서 EC2 > 보안그룹 에서 데이터베이스 서버를 위한 보안그룹을 생성한다.

보안 그룹 이름/설명 : JON-PRD-VPC-DB-PRI-SG-2A
VPC : JON-PRD-VPC

생성한 보안그룹 선택 > 인바운드 규칙 > [인바운드 규칙 편집]

유형 : MYSQL/Aurora
소스 : Anywhare-IPv4

2. 서브넷 생성
VPC > 서브넷 > [서브넷 생성]
VPC : JON-PRD-VPC
서브넷 이름 : JON-PRD-VPC-DB-PRI-2A
가용영역 : 아시아 태평양(서울) / ap-northeast-2a
IPv4 서브넷 CIDR 블록 : 10.250.3.0/24

서브넷 하나더 생성
VPC : JON-PRD-VPC
서브넷 이름 : JON-PRD-VPC-DB-PRI-2C
가용영역 : 아시아 태평양(서울) / ap-northeast-2c
IPv4 서브넷 CIDR 블록 : 10.250.13.0/24

3. 라우팅 테이블에 서브넷 추가
목록에서 JON-PRD-RT-PRI 선택 > 서브넷 연결 탭에서 [서브넷 연결 편집]

JON-PRD-VPC-DB-PRI-2A, JON-PRD-VPC-DB-PRI-2C 를 추가로 체크하고 [연결 저장]

4. 서브넷 그룹 생성
Aurora and RDS > 서브넷 그룹 > [DB 서브넷 그룹 생성] 클릭

이름 / 설명 : JON-PRD-VPC-DB-GROUP
VPC : JON-PRD-VPC
서브넷추가
가용영역 : ap-northeast-2a , ap-northeast-2c 2개선택
서브넷 : JON-PRD-VPC-DB-PRI-2A, JON-PRD-VPC-DB-PRI-2C 2개 선택
하단 서브넷이 생성됨 영역에 선택된 정보가 맞는지 확인하고 [생성]


5. 데이터베이스 생성
Aurora and RDS > 대시보드 > [데이터베이스 생성]

또는 Aurora and RDS > 데이터베이스 > [데이터베이스 생성]

데이터베이스 생성 방식 : 표준생성
엔진 옵션 : MySQL
에디션 : MySQL Community
엔진 버전 : MySQL 8.0.39
템플릿 : 프리티어
가용성 및 내구성 : 단일 AZ DB 인스턴스 배포(인스턴스 1개)
설정
DB 인스턴스 식별자 : MyDB
마스터 사용자 이름 : admin
자격증명관리 : 자체관리
마스터암호 : 임의로 지정
인스턴스 구성
DB 인스턴스 클래스 : 버스터블 클래스 의 db.t3.mirco
스토리지
스토리지 유형 : 마그네틱
할당된 스토리지 : 5
연결
컴퓨팅 리소스 : EC2 컴퓨팅 리소스에 연결 안함
네트워크 유형 : IPv4
VPC : JON-PRD-VPC
DB 서브넷 그룹 : JON-PRD-VPC-DB-GROUP
퍼블릭 액세스 : 예
VPC 보안 그룹 : 기존항목 선택
기존 VPC 보안 그룹 : JON-PRD-VPC-DB-PRI-SG-2A
가용 영역 : ap-northeast-2a
인증기관 : 기본값
데이터베이스 인증
데이터 베이스 인증 옵션 : 암호 인증
추가구성
초기 데이터베이스 이름은 : JON_PRD_DB
자동 백업 활성화 : 체크 해지
유지관리 : 마이너 버전 자동 업그레이드 체크 해지
유지 관리 기간 : 기본 설정 없음









생성 버튼을 클릭하면 에러가 날것이다

VPC > JON-PRD-VPC 들어가서
[작업] > VPC 설정 편집

DNS 호스트 이름 활성화 체크 후 [저장]

VPC 설정 후 데이터베이스 생성 화면으로 돌아가서 생성 버튼을 클릭하면 정상 생성될 것이다.

생성과정은 최대 5분까지 걸릴수 있다.

6. 로컬PC에서 데이터베이스 접속
MySQL Workbench 프로그램을 다운받아 설치한다.
https://dev.mysql.com/downloads/workbench/
MySQL :: Download MySQL Workbench
dev.mysql.com
Aurora and RDS > 데이터베이스 > 생성한 DB 세부정보 에서 앤드포인트 를 복사한다.

MySQL Workbench 를 실행하고 + 버튼 클릭

Connection Name : MyDB
Connection Method : Standard TCP/IP over SSH
SSH Hostname : Bastion 서버의 공인 IP
SSH Username : Bastion 서버의 user
SSH Key file : pem 키 선택
MySQL Hostname: 복사한 앤드포인트
MySQL Username : DB 생성시 지정한 마스터 사용자 이름
Store in Vault 는 하지 않는다.
[Test Connection] 클릭하면 비밀번호 입력창이 나오고 입력하면 성공 실패를 알려준다.
성공하면 [OK] 클릭

생성된 커넥션을 더블클릭

데이터 베이스에 접속된다.
테이블 생성 및 샘플 테이터를 등록한다.
-- 게시판 테이블 생성
CREATE DATABASE IF NOT EXISTS board_db;
USE board_db;
-- 게시글 테이블
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200) NOT NULL,
content TEXT NOT NULL,
author VARCHAR(50) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
ALTER TABLE posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER DATABASE board_db CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
-- 샘플 데이터 삽입
INSERT INTO posts (title, content, author) VALUES
('첫 번째 게시글', '안녕하세요! 3Tier 아키텍처 테스트용 게시판입니다.', '관리자'),
('두 번째 게시글', 'Nginx + Tomcat + MySQL 연동 테스트 중입니다.', '사용자1'),
('세 번째 게시글', 'AWS RDS와 연동이 잘 되고 있나요?', '사용자2');
-- 테이블 확인
SELECT * FROM posts;

7. Tomcat 에 데이터베이스 연결
Tomcat2A, Tomcat2C 둘 다에 작업한다.
라이브러리 폴더로 이동하여 MySQL JDBC 드라이버 다운로드
cd /home/tomcat/apache-tomcat-9.0.108/lib
sudo wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-8.0.33.tar.gz

다운로드파일 압축해제
sudo tar -xzf mysql-connector-j-8.0.33.tar.gz
압축 해제 후 폴더 안에서 /home/tomcat/apache-tomcat-9.0.108/lib 경로로 jar 파일복사
sudo cp mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar ./

소유자:그룹 변경
sudo chown tomcat:tomcat mysql-connector-j-8.0.33.jar

설정파일에 DB 접속정보 등록
sudo vi /home/tomcat/apache-tomcat-9.0.108/conf/server.xml

<GlobalNamingResources></GlobalNamingResources> 사이의 내용 지우고 아래 입력
<Resource name="jdbc/MyDB"
auth="Container"
type="javax.sql.DataSource"
maxTotal="20"
maxIdle="5"
maxWaitMillis="10000"
username="your-db-username"
password="your-db-password"
driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://your-rds-endpoint:3306/your-database-name?useSSL=true&serverTimezone=UTC"/>

context.xml에도 ResourceLink 추가
sudo vim + /home/tomcat/apache-tomcat-9.0.108/conf/context.xml

</context> 바로 위에 추가
<ResourceLink name="jdbc/MyDB" global="jdbc/MyDB" type="javax.sql.DataSource"/>

톰켓 재시작
sudo systemctl restart tomcat


브라우저에서 게시글 작성 후 데이터 확인

'클라우드 | 가상화 > AWS' 카테고리의 다른 글
| AWS + kubernetes + GitHub + ArgoCD (1) | 2026.04.21 |
|---|---|
| AWS + kubernetes 3tier 설정 (0) | 2026.04.19 |
| AWS - 4. 이중화(ALB) 및 Tomcat 설치 (0) | 2025.12.09 |
| AWS - 3. NGINX 설치 및 이중화(CLB) (0) | 2025.12.05 |
| AWS - 2. VPC생성하여 쉘접속 (0) | 2025.12.03 |