[관점에 따른 3티어 아키텍처]
1) 네트워크 엔지니어 관점
액세스 계층(access layer)
- 서버, 컴퓨터, 프린터 등의 장치들을 네트워크 연결하는 수단을 제공 하고 통신하는데 사용되는 계층
분배 계층(distribute layer)
- 분배계층은 액세스 계층과 코어계층 사이에 존재하며 네트워크에 대한 정책과 보안을 정의
- 신뢰성 높은 가용성과 리던던시를 가지는 네트워크
코어 계층(core layer)
- 고속으로 트래픽을 전송하고 최적의 경로를 통해 전송하는 계층
- 모든 분배계층 장치들의 데이터 흐름을 통합하여 많은 양의 데이터를 빠르게 전달하는 역할
2) 서버 엔지니어 관점
서버 : initiator 로 host 서버 서비스의 역할
SAN 스위치 : 경로 이중화 및 리던던시를 고려한 분배 스위치 역할
스토리지 : target으로 데이터를 저장하고 읽고 쓰는데 사용
3) 어플리케이션 개발자 관점
1. Presentation layer
프레젠테이션 계층은 응용 프로그램 최상위 위치하며 서로 다른 계층의 로직과 연동
- 사용자 인터페이스 지원(ex: web)
- Gui, front-end - 정적 데이터를 제공
- 비즈니스 로직과 데이터관리 로직이 포함되지 않음
- 주로 웹서버로 사용 (ex : apach, nginx, HTML, CSS, JSP, image)
2. Application layer
요청된 정보를 규칙에 의해 데이터를 처리하고 가공하는담당, (동적 데이터를 제공)
- 비즈니스 로직 또는 트랜젝션 계층이라고도 함
- 첫 번째 계층 또는 클라이언트계층에서 바라보기에 서버처럼 동작(응답)하고 세 번째 계층 에서는 클라이언트 처럼 동작(요청)함
- 동적 데이터를 제공
- middleware, back-end
- java, PHP, tomcat, Jboss, weblogic등 해당
3. Data layer데이터 베이스에 엑세스하여 읽거나 쓰는 것을 관리
- 데이터베이스를 의미
- Back-end라고 함
- DB서버를 말함
- Mysql, mariadb 등
[간단한 용어 정리]
1. VPC생성 : 내 인프라 영역을 만들어서 그 안에서 사용하겠다는 의미
1-2. VPC 특징 : VPC는 리전별로 생성하고, 서브넷은 AZ 별로 생성, AZ 안에 public, private 서브넷 생성
- public 서브넷 : 외부 인터넷에서 내부로 연결될 수 있는 영역
- private 서브넷 : 내부망에서만 접근할 수 있는 영역(외부로 통신할 수 없음)
2. 인터넷 게이트웨이 : VPC와 외부인터넷을 연결해주는 통로( 외부 인터넷에서 VPC로 들어만 올 수 있음)
3. NAT 게이트 웨이 : private 서브넷에서 외부로 연결 해줄 수 있는 통로(내부망에서 외부로만 나갈 수 있음)
- 외부 공인IP를 할당 받아야 함(리전당 5개 허용)
4. 라우팅테이블 : 목적지를 찾아가기 위한 지도( 집 주소를 찾아갈때 주소목록이라 볼 수 있다.)
- 보통 0.0.0.0/0 을 internet gateway로 잡는데 이는 주소 목록에 없는 ip는 internet gateway로 보내라는 의미
5. 보안그룹 : 방화벽의 의미로 포트를 열어주는 작업 (디폴트로 deny 다.)
6. 네트워크 ACL : 서브넷 경계의 방화벽으로 서브넷끼리 네트워크를 제어하기 위해 inbound/outbound 정책 설정이 필요
7. Bastion host : 일종의 CMS 서버처럼 관리용 서버라고 보면 된다. 외부에서 내부VPC안의 EC2 linux로 접속을 하려면 반드시 bastion host에서만 접속 할 수 있다.
[목표]
3티어 아키텍처를 AWS 구성하고 구성방법 및 동작원리를 이해하기
1. 네트워크 설정
1) VPC 생성
- AZ 왼쪽 : ap-northeast-2a
- AZ 오른쪽 : ap-northeast-2c
VPC 생성 클릭
확인
2) 서브넷 생성( 퍼블릭2개, 프라이빗 6개)
서브넷 생성
- 나머지는 표를 보고 똑같이 생성하기
- AZ 는 구성도상 왼쪽이 ap-northeast-2a, 오른쪽이 ap-northeast-2c
- AZ에서 서브넷 이름 끝에 숫자가 01이면 ap-northeast-2a, 02면 ap-northeast-2c (예를들면, pri-web-02면 ap-northeast-2c로 함)
- pri-db AZ는 ap-northeast-2a로 함
pub-01 서브넷 만들기
pub-02 서브넷 만들기
pri-web-01 서브넷 생성
pri-web-02 서브넷 생성
pri-was-01 서브넷 생성
pri-was-02 서브넷 생성
pri-db 서브넷 생성
2. 네트워크 설정
1) 인터넷 게이트웨이 설정
- 외부에서 public subnet을 통해 elb로 접속하고 web으로 바인딩 할 수 있도록 설정
2) NAT 게이트웨이 설정
- private subnet 들은 nat 게이트웨이를 통해 인터넷을 통해 필요한 파일들을 다운 받음
3) 라우팅테이블 생성
IGW 설정
NAT 게이트웨이 설정
라우팅테이블 설정( public routing table)
서브넷 연결
pub-01, pub-02 체크
라우팅 편집
라우팅테이블 설정( private routing table)
private 서브넷 연결
pri-web-01, pri-web-02, pri-was-01, pri-was-02, pri-db 체크
라우팅 테이블 설정
3. EC2, 보안그룹 설정
1) 보안그룹 설정
2) EC2 설정
보안그룹 설정
b-sg 보안그룹 설정
ex-elb-sg 보안그룹 설정
web-sg 보안그룹 설정
in-elb-sg 보안그룹 설정
was-sg 보안그룹 설정
db-sg 보안그룹 설정
EC2 생성
bestion EC2 생성
체크 후 다음클릭
아래사항 체크 후 나머지 그대로 둠, 그리고 다음 클릭
그대로 두고 다음 클릭
태그 추가 하고 다음 클릭
보안그룹 서택하고 검토및 시작 클릭
확인 후 시작하기 클릭
키페어 선택 후 인스턴스 시작 클릭
인스턴스 보기 클릭
※ 나머지 web-01, web-02, was-01, was-02, db-01 도 동일한 방법으로 세팅함
Bastion host에 pem key 다운 받기 - bastion host에서 다른 ec2로 접속하기 위한 key 파일
내 PC에서 접속하기
id : ec2-user 후 엔터
scp 프로그램으로 bastion host에 접속하기
파일 끌어다 넣기
각 EC2 접속확인
nat를 통해 외부로 통신되는 지 ping 테스트
4. ALB 구성
External-ALB 구성
ALB 생성 클릭
external alb는 퍼블릭 구간에 배치하기 위해 가용영역을 public 쪽에 선택
그대로두고 다음
이름 : ex-alb-gr 으로 하고 다음 클릭
Internal-ALB 구성
ALB 생성 클릭
이름 : int-alb
체계 : 내부
리스너 포트 : 8080
가용영역 : vpc-1 / pri-was-01, pri-was-02
다음 클릭
이름: int-alb-gr
포트 : 8080
다음 클릭
was-01, was-02 선택 -> 등록된 항목 추가 -> 다음 클릭
생성클릭
닫기 클릭
확인