프로젝트/사이드프로젝트

3tier 아키텍쳐 구성하기_1

dudung__ 2023. 10. 30. 21:52

 

혼자 공부를 계속 하고 있고, 각각의 서비스는 사용왔다

또한, 아키텍쳐 자체는 draw.io를 통해서 이렇게 저렇게 그려봤지만, 본격적으로 서비스를 다 엮어서 해본적은 없기 때문에 한번 구성해봐야겠다는 생각이 들었다 

 

 

 

● 아키텍쳐

 

 

 

 

● 네트워크

VPC 및 서브넷 설정
VPC 네트워크 대역 : 10.0.121.0/24 =>  서브네팅 /28 
서브넷의 개수 : 8개
서브넷 주소

=> 서브넷은 이렇게 구성했음

 

 

- vpc

 

 

- subnet

 

=> 구성도 

 

 

 

- nat table 

=> private subnet에 있는 서비스들이 공인망으로 나가기 위한 라우팅

 

 

- igw table 

=> nat(서비스들의 아웃바운드 트래픽) + bastion-host   =>  igw  => 공인망

 

 

 

 

 

● 서비스 

 

- bation host  => 10.0.121.16/28

 

 

- web1  => 10.0.121.32/28

 

 

- web2  => 10.0.121.48/28

 

 

 

 

- ALB application loadbalancer 

===> eip / 공인망이 박혀있는 서브넷들을 장착

 

=>  target group -> web1 / web2

 

 

 

==> 외부 공인망 -> ALB 도메인 -> webserver 접근 및 로드밸런싱 확인

 

 

 

 

- was1  => 10.0.121.64/28

sudo wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.95/bin/apache-tomcat-8.5.95.tar.gz

sudo yum install java-1.8*

java -version => 버전확인 

 tar xvfz apache-tomcat-8.5.95.tar.gz => 압축해제 

mv apache-tomcat-8.5.95 /usr/local/tomcat8.5

cd /usr/lib/jvm/

 

java-1.8.0-openjdk-1.8.0.382.b05-1.amzn2.0.2.x86_64

=> 받아온 jdk를 환경변수로 지정 

 

 sudo vi /etc/profile

 


export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.amzn2.0.2.x86_64
export CATALINA_HOME=/usr/local/tomcat8.5

export CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar
export JDK_HOME=$JAVA_HOME

export PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

 


 

 

 

 

=> profile 파일을 쓰겠다고 말해줌 -> 확인 

 

sudo vi /usr/local/tomcat8.5/conf/server.xml


    -->
    <Connector port="8080" protocol="HTTP/1.1"
               URIEncoding="UTF-8" -> 이거 추가 
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000"
               />


cd /usr/local/tomcat8.5/bin

 

chmod +x startup.sh
chmod +x shutdown.sh

 

 

 

 

 

vi /usr/lib/systemd/system/tomcat.service


[Unit] 
Description=tomcat 8.5
After=network.target syslog.target

[Service]
Type=forking

User=root
Group=root

# 실행 파일 경로
ExecStart=/usr/local/tomcat8.5/bin/startup.sh

# 중지 파일 경로
ExecStop=/usr/local/tomcat8.5/bin/shutdown.sh

# 디렉토리 권한 770 && 새로운 파일 권한 660
UMask=0007

[Install]
WantedBy=multi-user.target


 

=> 로컬에서 지정한 포트로 잘 접근이 되는 것을 확인 

+ 내용이 들어오는것을 확인 -> 잘실행되는것을 확인 

 

=> 쉘 스크립트 실행 -> 잘 실행되고 / 종료 되는것을 확인

 

 

- was2  => 10.0.121.80/28

 

=> 2도 똑같이 진행해주고 

 

코드를 짜임새 있게 잘 수 있는 단계가 아니기도 하고, 빠른시일내에 간단하게 구성을 하려는것이기 때문에,

alb => web 서버로 접근하면  web  => nlb 로 트래픽을 뿌려주어  => was에 넣어놓은 내용이 보이게 할 것임 => 당연히 web 및 was는 직접 접근할 수 없음 

 

web을 프록시 서버로 구성 -> was 서버의 보안 강화 및  캐싱을 통한 성능 향상을 위함

==> 가상호스트를 통해서 구현 

 

 

=> 성공적으로 접근이 가능한것을 볼 수 있었음

 

=> 내일은 DB와 was를 연결해볼 것임 

===> RDS를 사용하면 좋겠지만, 일단 ec2-instance에서 먼저 연결을 해보고 성공적으로 프로젝트가 끝나면 추후 RDS에 연결하고, 다른 서비스들도 사용해서 구성을 해볼 생각임