Cloud/Cloud 공부일기

Day 62.5 - AWS 3tier 구성하기

갬미 2022. 4. 11. 00:24

tomcat was를 사용한 3tier를 GCP에서는 만들었는데 AWS에서 구축은 안해본 상태였다

우리가 한번 도전해보자라는 팀원분의 의견이 있었고 토요일 저녁 10시~일요일 새벽 3시 40분까지,, 대장정을 거쳐 구현을 성공할 수 있었다 

 

구성도 아닌 구성도는 다음과 같다 (정말 정말 간략하게 그림)

구성도를 두개정도 그렸는데 이게 더 보기가 편해서 이걸로 가져왔다

하핫 

 

다같이 동일한 조건으로 구축하기 위해 다음과 같은 rule을 정했다 

  name IP / CIDR -
VPC 3tier-vpc 10.0.0.0/20  
subnet (web) 3t-web-sub 10.0.0.0/22 Public
subnet (web2)   10.0.9.0/24 다른가용영역
subnet (was) 3t-was-sub 10.0.4.0/23 Private
subnet (was2)   10.0.10.0/24 다른가용영역
subnet (redis) 3t-redis-sub 10.0.6.0/24 Private
subnet(rds) 3t-db-sub 10.0.7.0/24 Private
임시 CIDR  (rds생성위해)   10.0.8.0/24 다른가용영역
라우팅 / 인터넷 게이트 3t-rt / 3t-ig   연결할 서브넷 만! (3t-web-sub)
Load balancer(was)
3t-lb-was
   
Load balancer(web)
3t-lb-web
   
was LB 타겟그룹 was-lb-tg    
web LB 타겟그룹 web-lb-tg    
SG
3t-sg   all tcp / icmp open

 

크게 고민했던(?), 중간에 수정이 들어갔던 사항은 다음과 같다

 

1. RDS를 사용하려면 VPC subnet에서 두 지역 이상의 가용영역에 위치하고 있어야 한다

-- 처음 subnet을 만들때 모든 subnet을 가용영역을 한군데로 지정하고 만들었다가 RDS가 만들어 지지않아 급하게 한 서브넷 가용영역을 옮겨주었다 

 

2. ALB를 사용하려면 이또한 다른 가용영역을 사용하는 서브넷이 있어야 한다(최소 2개)

-- 이 사실을 몰라서 처음 subnet을 만들때 web, was, rds 하나씩 주었다 web, was단 앞에는 LB를 넣어주었는데 

ALB를 만들기 위해서 다른 가용영역을 사용하는 2개의 서브넷이 있어야 하는걸 알게되어 중간에 추가하게 되었다

 

이 두가지는 모두 서비스 안정성을 위한 방법이다 가용영역은 IDC 센터로 볼수있는데 만에하나 하나의 IDC 센터가 다운되더라도 다른 IDC 센터의 서브넷에서 서비스를 운영할 수 있도록 하는 것

 

3. nginx conf 파일 문제

-- nginx.conf에 upstream - proxy_pass 설정시 css가 깨져서 나오는 문제가 있었다 회원가입이나 로그인창을 누르면 nginx error가 발생했는데 was vm에 직접 접속했을때는 문제가 없는걸보면 nginx 설정문제라고 생각했다 (캡쳐 못함,,)

 

nginx 설치 후 생성되는 nginx.conf 파일에 proxy_pass를 설정하지 말고 k8s 컨테이너로 3tier(java-was) 구성시 사용한 nginx.conf 파일로 proxy_pass를 구성하면 css가 깨지지 않고 잘 나왔다 

 

문제의 두 파일은 이부분만 달랐는데 .. 음 모르겠다

문제 파일

types_hash_max_size 4096;

include /etc/nginx/mime.types;

 

문제 없는 파일

types_hash_max_size 2048;

include 설정 없음

 

  • types_hash_max_size, server_names_hash_bucket_size
    • 호스트의 도메인 이름에 대한 공간을 설정하는 것으로 이 값이 낮을 경우 많은 가상 호스트 도메인을 등록한다거나, 도메인 이름이 길 경우 bucket 공간이 모자라 에러가 생길 수 있으므로 넉넉하게 설정한다.
  • include 옵션 :
    • 가상 호스트 설정이나 반복되는 옵션 항목을 inlcude를 통해 불러올 수 있다. EX) 리버스 프록시를 각 도메인에 설정한다고 했을 떄 헤더 처리 옵션등을 conf.d 디렉토리에 넣어두고 incldue 명령을 통해 불러올 수 있다.

문제가 났던 파일이 types_hash_max_size가 더 커서 정말 의아하다.. ㅋㅋ

 

보완사항

1. 방화벽을 어떻게 해야할지 몰라 일단 tcp,icmp를 모두 열고 했는데 다음에는 필요한 port만 열어서 구축해보는 방식으로 하고싶다

 

느낀점

aws를 또 나름 오랜만에 첨부터 구현하니까 부족한 점이 많이 보였다 ,,(저번 2tier는 급하게 하느라 vpc 마법사를 사용했었다)

cidr 계산이나 구성도 부분은 다른 조원분이 많이 도와주셨는데 큰 도움이 되었다

또 중간중간 모르는 부분이나 헷갈리는 부분은 같이 토론하고 공유하면서 해결해갈 수 있어서 좋은 경험이었다 만약 혼자 도전했더라면 ㅜㅜ 죙일걸렸을 것 같다 함께 문제를 해결해갈 수 있는 동료들이 있어서 감사했다

CIDR을 배우고나서 한번 더 조원들과 메뉴얼 만들기를 따로 진행해볼 것 같다 아자아자 화이팅!