-
[AWS] 3-Tier Architecture에서의 Bastion Host 설정과 WEB, WAS, RDS 설정 및 연동Backend/AWS 2022. 9. 25. 21:20728x90
3-Tier Architecture 설명 및 인프라 설계
Bastion Host 설정 및 접속 설정
1. Bastion 접속
EC2 인스턴스 생성 시 사용했던 pem 키를 사용하여 Bastioin에 접속할 수 있다. 이때 pem 키를 잃어버리면 최초 접속할 수 없어 인스턴스를 재생성해야 하니 주의해야한다! (pem 키를 잃어버려서 인스턴스를 몇번 만들었던 사람의 조언,,,)
윈도우에서 SSH 접속을 위해 Putty를 사용했다. Putty 사용 시에는 pem 키를 putty에서 사용하는 ppk로 변경해야 하기 때문에 PuttyGen을 사용하여 변경한다.
이전에 Bastion에 설정했던 탄력적 Ip와 ppk를 통해 Bastion에 접속한다!
2. pem key 업로드
Local PC에서 Bastion으로 Pem key를 보내야 한다.
- Powershell에서 다음을 통해 pem key 업로드
scp -i [key 경로] [생성할 key name].pem ubuntu@<공인 IP>:/home/ubuntu scp -i ~\kmr-pem.pem kmr-pem.pem ubuntu@<공인 IP>:/home/ubuntu
- Bastion에서 Pem Key 확인
cd ls -al *.pem
PemKey 권한을 변경한다.
chmod 400 /home/ubuntu/kmr-pem.pem
Bastion에서 Password로 접속 가능하도록 변경한다.
sudo su root passwd ubuntu vim /etc/ssh/sshd_config #PasswordAuthentication yes 로 변경 systemctl restart sshd
3. WEB, WAS 인스턴스 Password 접속 설정
Bastion에서 Pemkey로 개별 서버에 접속한다.
ssh –i ~/cnu-pem.pem ubuntu@<개별 서버 사설 ip>
개별 서버에서 Password 접속 가능하도록 변경한다.
sudo su passwd ubuntu vim /etc/ssh/sshd_config #PasswordAuthentication yes 로 변경 systemctl restart sshd exit #root사용자에서ubuntu사용자로 전환 exit #개별서버에서Bastiond 환경으로 전환
Password로 접속을 확인한다.
ssh ubuntu@<개별서버 사설 IP> # 명령어 입력 후 기존 설정한 비밀번호 입력 exit # 개별서버에서 Bastion 환경으로 전환
WEB 서버 설정
1. Nginx 설치
sudo su apt-get update # 사용가능한 패키지와 최신버전 정보 업데이트 apt-get upgrade # 설치된 패키지 중 최신버전이 있으면 업그레이드 apt install nginx # Nginx 패키지 설치 nginx –v # 설치된 Nginx 버전 확인 systemctl start nginx # Nginx 실행
2. Nginx 실행 확인
- 로컬호스트 확인
curl -I 127.0.0.1
- ALB DNS로 접속하여 Nginx 웹페이지 확인
kmr-ext-web-alb-[~].ap-northeast-2.elb.amazonaws.com
3. Nginx 메인 페이지 변경
- 기본 html 파일 수정
sudo su cd /var/www/html vim index.nginx-debian.html # body h1 텍스트를 “WEB Nginx 01”로 수정
- ALB DNS로 접속하여 변경내역 확인
WAS 서버 설정
1. JDK 패키지 목록 확인 및 설치
sudo su apt-get update # 사용가능한 패키지와 최신버전 정보 업데이트 apt-get upgrade # 설치된 패키지 중 최신버전이 있으면 업그레이드 apt install openjdk-11-jdk # Openjdk 11 패키지 설치 java –version # 설치된 Java 버전 확인
2. Tomcat 설치
apt install tomcat9 # Tomcat9 패키지 설치 systemctl enable tomcat9 # Tomcat9 실행
3. Tomcat 실행 확인
systemctl status tomcat9 # status 명령을 통한 Tomcat9 실행확인 curl 127.0.0.1:8080 # curl 명령을 통한 Tomcat9 실행확인
4. Tomcat 메인 페이지 변경
cd /var/lib/tomcat9/webapps/ROOT vim index.html # body h1 텍스트를 “WAS Tomcat 01”로 수정
WEB ↔ WAS 연동
1. WEB 서버에서 Nginx 경로 수정
- default 파일에서 location/ 아래에 정보 추가
sudo su cd /etc/nginx/sites-available vim default # 아래와 같이 내용 추가 및 수정 systemctl restart nginx
proxy_pass http://[ALB DNS]:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; # try_files $uri $uri/ =404;
2. ALB DNS 접속하여 변경 내용 확인
RDS 접속 및 설정
1. 접속
nslookup [RDS Endpoint]
2. Mysql Client 설치
sudo su apt install mysql-client
3. Mysql Client로 RDS 접속
mysql -u admin -h [RDS Endpoint] -p
4. Mysql Database 생성
create database my_database default character set utf8; show databases; # 데이터베이스 조회
5. Mysql 작업자 계정 생성 후 데이터베이스 권한 부여
create user '[username]'@'%' identified by '[password]';
grant all privileges on cnu_database.* to '[username]'@'%'; flush privileges; quit
6. 작업자 계정으로 RDS 접속
mysql -u [username] -h [RDS Endpoint] -p show databases; use my_database;
7. 테이블 및 레코드 생성
create table my_table(id int not null auto_increment primary key, firstname varchar(32) not null, lastname varchar(32) not null); describe my_table; insert into cnu_table (firstname, lastname) values('user1', 'one'); insert into cnu_table (firstname, lastname) values('user2', 'two'); select * from my_table;
WAS ↔ RDS 연동
1. JDBC 드라이버 설치
JDBC는 java언어로 관계형 데이터베이스에 접속하고, SQL 문을 수행하여 처리하는 표준 SQL Interface API로 servlet이라는 *.java 파일로 동작하는 JSP 페이지를 위해 필요하다. java는 DB에 접근하여 DB를 제어할 수 있는 Driver가 필요한데 이 파일이 *.jar 파일이다.
- mysql-connector-java-8.0.30-tar.gz 다운로드
sudo su cd /usr/local wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.30.tar.gz
- mysql-connector-java-8.0.30-tar.gz 압축해제
tar -zxvf mysql-connector-java-8.0.30.tar.gz
- 압축해제한 jar파일을 usr/share/tomcat9/lib에 복사
cd /usr/local/mysql-connector-java-8.0.30 cp -a ./mysql-connector-java-8.0.30.jar /usr/share/tomcat9/lib
- 복사한 파일 확인
cd /usr/share/tomcat9/lib ls -al
2. DB 접속 테스트를 위한 jsp 파일 생성
cd /var/lib/tomcat9/webapps/ROOT vim [name].jsp # 아래 샘플 내용 붙여넣기
<%@ page contentType = "text/html; charset=utf-8" %> <%@ page import = "java.sql.DriverManager" %> <%@ page import = "java.sql.Connection" %> <%@ page import = "java.sql.Statement" %> <%@ page import = "java.sql.ResultSet" %> <%@ page import = "java.sql.SQLException" %> <html> <head><title>WAS 01</title></head> <h1> WAS 01 ↔ RDS </h1> <body> CNU Table Contents <table border="1"> <tr> <td>id</td> <td>first name</td> <td>last name</td> </tr> <% // MySQL JDBC Driver Loading Class.forName("com.mysql.jdbc.Driver"); Connection conn = null; Statement stmt = null; ResultSet rs = null; try { String jdbcDriver = "jdbc:mysql://[ALB_DNS]:3306/my_database"; String dbUser = "[username]"; String dbPass = "[password]"; String query = "select * from my_table"; // Create DB Connection conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass); // Create Statement stmt = conn.createStatement(); // Run Qeury rs = stmt.executeQuery(query); // Print Result (Run by Query) while(rs.next()) { %> <tr> <td><%= rs.getString("id") %></td> <td><%= rs.getString("firstname") %></td> <td><%= rs.getString("lastname") %></td> </tr> <% } } catch(SQLException ex) { out.println(ex.getMessage()); ex.printStackTrace(); } finally { // Close Statement if (rs != null) try { rs.close(); } catch(SQLException ex) {} if (stmt != null) try { stmt.close(); } catch(SQLException ex) {} // Close Connection if (conn != null) try { conn.close(); } catch(SQLException ex) {} } %> </table> </body> </html>
3. jsp 반영 내용 확인
변경 내용 반영을 위해 tomcat 서버 재실행한다.
sudo systemctl restart tomcat9
ALB DNS 끝에 /[name].jsp를 추가하여 변경 내용을 확인한다.
728x90'Backend > AWS' 카테고리의 다른 글
[AWS] AWS EC2에 ELK 세팅하기 (0) 2022.10.31 [AWS] EC2에 Kafka 서버 띄우기 (1) 2022.10.25 [AWS] 3-Tier Architecture 인프라 설계 (0) 2022.09.25 [AWS] AWS 3-Tier Architecture 정리하기 (1) 2022.09.25 [AWS] 클라우드 컴퓨팅 / AWS란? (0) 2022.09.19