- Internet Gateway : 인터넷과 연결용
- Nat Gateway : Private Subnet의 인스턴스들이 외부와 통신하기 위해 사용
- ALB : 외부 사용자들이 WEB에 접근하기 위해 사용
- Bastion Host : 개발 및 관리시 해당 노드에 접속하여 각 인스턴스에 ssh를 통해 우회 접근한다
- NLB : WEB의 APACHE가 WAS의 TOMCAT과 연결할때, NLB를 사용한다.
- 각 보안그룹은 INBOUND에는 서비스하는 포트를, OUTBOUND에는 이전 단계의 인스턴스를 위해 포트를 설정하자 ( WEB - 80 & 22 , WAS - 8080 & 22 , DB - 3306 & 22 , Bastion Host - 22 )
- 어떠한 플랫폼이나 애플리케이션을 3 계층으로 나누어 별도의 논리적 / 물리적인 장치에 구축 및 운영하는 형태. 보통 프레젠테이션 계층, 어플리케이션 계층, 데이터 계층으로 나눈다
- 프레젠테이션 계층 : 사용자가 애플리케이션과 상호작용하는 애플리케이션의 사용자 인터페이스. 일반적으로 HTML, JS, CSS 등이 이 계층에 포함되며, 프론트엔드 OR GUI라고 부른다
- 애플리케이션 계층 : 요청되는 정보를 어떠한 규칙에 따라 처리하고, 가공한다. 미들웨어 OR 백엔드로 불린다
- 데이터 계층 : 데이터 베이스와 데이터 베이스에 접근하여 데이터를 CRUD 한다
- 각 계층이 분리되어 있어 계층별 작업을 나눌 수 있으므로 업무 분담이 가능해지고, 계층별 서로 다른 팀이 동시에 개발할 수 있으므로 업무 효율성이 증가한다
- 서버를 계층별 독립적으로 존재하기에 확장하기 편하다
- 한 계층에서 일어난 장애가 다른 계층의 가용성이나 성능에 큰 영향을 미치지 않는다
- 계층별 순차적인 접근으로 인해 외부에서 직접적인 접근이 불가능하므로, 보안적인 측면에서 2계층이나 1계층보다 좋다
1,2 계층보다 관리가 더 필요하며, 설계 및 구축이 어렵다. 또한, 비용이 많이 발생한다
- 컴파일 설치를 통해 Apache, Tomcat, MySql을 설치해보자
컴파일 설치는 세부적인 설정 및 기능 선택을 통해 불필요한 기능 및 파일 설치를 방지하여 자원 낭비를 방지할 수 있으며, 직접 컴파일을 하기에 해당 시스템에 안정적이고, 적합하고, 효율적인 구성이 가능하다
- 위 사양에 맞게 생성해주자
서브넷 | 대역 | 공인 IP | 허용 포트 |
---|---|---|---|
public nat | 10.0.118.0/28 | 탄력적 IP | |
public bastion | 10.0.118.16/28 | 탄력적 IP | 22 |
private web1 | 10.0.118.32/28 | 80,22 | |
private web2 | 10.0.118.48/28 | 80,22 | |
private was1 | 10.0.118.64/28 | 8080,22 | |
private was2 | 10.0.118.80/28 | 8080,22 | |
private db1 | 10.0.118.96/28 | 3306,22 | |
private db2 | 10.0.118.112/28 |
- 계획한 네트워크 대역으로 VPC를 생성하자. 이름과 태그에 주의해야 한다
- 해당 VPC에 Subnet 8개를 추가하자. 미리 계획한대로 네트워크 대역을 설정하며, 가용영역은 아키텍쳐 그림과 같이 a와 c 구분해야 한다
- 그런데 생성 화면에는 Private / Public 설정이 없다? AWS에서 Public / Private은 인터넷 게이트웨이에 연결되있느냐 아니냐로 구분된다
- 8개를 모두 생성하자
- 인터넷 게이트웨이를 생성하자
- VPC에 연결을 누르자
- 연결할 VPC를 선택하자
- 라우팅 테이블을 생성하자
- 먼저, 모든 모든 IP 주소에 대해 인터넷 게이트웨이로 라우팅하게끔 설정하자
- local은 기본 라우팅 설정으로 VPC 내부 네트워크에 대한 트래픽은 local ( 내부 통신 ) 하게끔 설정된 것이다
- 그런 다음, Public 서브넷을 연결해주자
- Nat Gateway는 Internet Gateway와 연결된 서브넷 ( 퍼블릭 서브넷 )에 위치해야 한다!! Nat Gateway도 외부망과 연결되어야 하기 때문이다
- NAT GW를 생성해주자. 유형이 프라이빗이라면, 외부와 통신이 안되기에 퍼블릭으로 설정하자.
- 탄력적 IP는 외부와 통신하기 위한 IP로, 인스턴스에서 외부와 통신을 할 때 사용하는 출발지 IP이다. 하나 할당해주자
- 라우팅 테이블을 생성하자
- 모든 주소에 대해 NAT GW를 타겟을 하자
- Private Subnet을 모두 연결해주자
- 네트워크 기본 구성이 끝났다! 이제 LB, EC2, 보안그룹 설정을 해주면 된다!
- 키페어를 생성하자. 해당 키페어를 이용해 Putty로 접속해야 하므로 잃어버리면 안된다!!!
- 보안 그룹의 경우, 인바운드는 나만 ssh 접속 가능하게 설정하자
- 아웃바운드의 경우, 추후 다른 인스턴스를 생성 후 추가할 계획이다
- 탄력적 IP를 할당하자
- 탄력적 IP 연결을 누르자
- Bastion Host 인스턴스를 선택해서 연결해주자
- Putty에 들어가서 퍼블릭 주소를 입력하자
- Private Key를 지정하자
- ec2-user로 접속이 된다