priavate subnet 상의 EC2 instance 관리 방법
프라이빗 서브넷에 위치한 AWS 리소스(EC2, RDS등)는 직접적인 인터넷 접속이 불가능!
인터넷 게이트웨이가 연결되지 않고 로컬 네트워크만 있다!
priavate subnet 안에 EC2같은 리소스가 인터넷에 접속하여 사용하기 위해서는 NAT Gateway를 사용해야 한다
NAT Gateway가 퍼블릭 라우팅테이블에 연결 후 외부랑 연결이 된다!
인터넷과 연결을 수행하는 서비스
인터넷과 단방향 통신만 수행 -> 이게 핵심!!
인터넷 게이트웨이는 양방향이지만 NAT Gateway는 단방향이다!!
통상 private subnet에 위치한 AWS리소스(EC2, RDS등)가 인터넷에 연결하여 사용할때 활용하는 서비스
일반 클라가 프라이빗 서브넷에 있는 AWS 리소스접근은 불가능 - 단방향 통신!
NAT Gateway 서비스는 퍼블릭 서브넷에 위치해야한다!
NAT Gateway 서비스는 EIP를 사용!!
Bastion server
EX) 만들때 SSH 접근 되게 보안을 사용해야 Bastion 서버 사용가능
서브넷 - 프라이빗 서브넷에 위치
퍼블릭 IP 할당 - 당연히 비활성화 => Putty 나 Xshell로 접근 불가능!
1. EIP 먼저 만들기 - 태그 명을 NATGateway-EIP로 해줬음
2. NAT 게이트웨이 인스턴스 생성
VPC- NAT게이트웨이 메뉴로 들어가기
생성 -> 태그 해주기 ->
가장 중요한 public subnet에 위치시키기!!
연결 유형 -> 단방향 통신이 목적이지만 인터넷 연결을 위해서 퍼블릭으로 설정
탄력적 IP 할당하기
3. 프라이빗 서브넷의 라우팅 테이블에 NAT 게이트웨이에 대한 라우팅 추가
VPC - 라우팅테이블 메뉴 들어가기 -> 라우팅 들어가서 편집 누르기
-> NAT 게이트웨이 추가
-> 모든 대상(0.0.0.0/0) 대상 - NAT게이트웨이 클릭하면 끝
4. 프라이빗 서브넷에 위치한 EC2 instance는 NAT Gateway는 인터넷 접속이 가능한 상태가 되었으나
외부에서 인터넷을 통해 private subnet에 위치한 EC2 인스턴스에 직접 접속은 불가능하다!!
(단방향 통신이어서!!)
5. 관리자가 public 서버에 위치한 bastion server를 통해 private 서브넷에 위치한 EC2 instance를 제어한다 bastion 서버에 프라이빗 서브넷의 EC2 instance에 접속하기 위해서는 keypair 파일이
bastion 서버에 위치해야한다.!
bastion 서버에 프라이빗 서브넷의 keypair 저장방법
- VSC 원격 접속을 통하여 키페어 파일 업로드
일단 bastion server라는 인스턴스 만듬
보안그룹을 -> 내 IP로 설정
chmod 400 ~~.pem
들어가지면 exit 하고나오기
ssh - i gurum-aicore0942-20220906.pem ec2-user@10.0.5.220
네트워크 통신
패킷단위로 통신 -> 송신자 수신자 IP 와 PORT가 포함되어있다
AWS 네트워크 보안 -> 리눅스가 아닌 AWS 자체 보안 설정임!
보안그룹 - EC2 인스턴스 단위로 설정
인바운드 규칙과 아웃풋 규칙으로 구성
허용 규칙만 생성가능!
기본적으로 모든 보안 그룹의 아웃풋 바운드 규칙은 모든 트래픽을 허용
인풋 규칙은 모든 트래픽을 불허
각 EC2 인스턴스는 서로 다른 보안 그룹 할당 가능
설정된 EC2 인스턴스는 연결되어 있는 보안 그룹의 모든 룰을 적용 받는다
모든 보안 그룹은 statefull(상태 유지)을 갖는다
inbound 규칙을 통과하는 패킷은 outbound 규칙을 적용받지 않는다
상태 저장 후 한번 outbound를 통과하는 패킷은 inbound 규칙을 적용받지 않는다!!
네트워크 ACL()
인바운드 규칙과 아웃바운드 규칙으로 나뉨
NACL은 여러 서브넷에 적용 가능
하지만 서브넷은 한 개의 NACL만 연결 가능
허용 규칙뿐만 아니라 거부 규칙 생성 가능
규칙번호는 숫자가 매겨져 가장 작은 숫자값을 지니는 규칙을 우선적으로 적용
-> (100과 101이 같은 유형과 프로토콜에대한 각각의 허용과 거부라면 더 낮은 번호꺼만 받음 )
NACL의 인바운드, 아웃바운드 규칙은 최대 20개까지 지정가능
stateless(상태 저장 X)이므로
한 번 inbound를 통과하는 패킷은 outbound 규칙을 적용 받는다
outbound로 통과한 패킷도 inbound 규칙 적용 받음
VPC메뉴에 ACL 있음
네트워크 ACL 선택
-> 이 안에 서브넷 들아가서 연결 편집하기 누르기
-> 인바운드 규칙과 아웃바운드 규칙설정하기
-> 인바운드 들어가서 규칙번호 , 유형 , 프로토콜, 포트범위, 소스 지정하면 끝 -> 허용 거부까지!!
규칙번호는 중복 안됨!
데이터나 객체를 저장하기 위한 목적으로 사용하는 AWS 서비스
블록 형태 데이터 저장 스토리지 서비스 - EBS(Elastic Block Storage)-
> 접근가능대샅은 같은 가용영역만!
일반적인 데이터 저장 - 외장 하드 느낌
외장 HDD/SSD 성격
EC2 instance와 연결하여 사용
파일 형태 데이터 저장 스토리지 서비스 - EFS(Elastic File Storage)
>네트워크를 이용한 파일 저장 및 공유 -> 특징!, 가용영역 큰 상관 X, 네트워크 연결만 되어있으면 됨
NAS(하드디스크를 네트워크에 연결한거)성격,
데이터 공유, EC2 instance에서 사용 가능 - NFS
객체 형태 데이터 저장 스토리지 서비스 - S3(Simple Storage Service)
객체 단위로 저장
serverless 방식 - 별도의 EC2 instance와 연결 안해도 사용가능!
EC2 인스턴스의 저장공간으로 사용하는 EBS
EC2 루트 불륨 의미 -> 우리가 instance 생성할 때 자동으로 EBS하나 생성함
EC2 연동하여 사용 -> 외장하드의 파티션처럼 mount 해주어야함
EC2 인스턴스 삭제시 같이 삭제 되므로 중요 정보 따로 보관하기
어플리케이션의 기본 스토리지로 사용하거나 시스템 스토리지로 사용하는데 적합
필요시 EC2 인스턴스에 마운트 하여 사용
같은 가용영역만 EBS를 공유할 수 있다.
중간에 크기 바꾸기 불가능!
사용목적
데이터 보관 및 스냅샷 저장
EBS 공유 실습
2개의 인스턴스 간에 EBS불륨을 이용한 데이터 공유 ->EC2 instance 한개씩 차례대로 설정해주기
EC2메뉴 -> 불륨 생성 -> 크기 결정 -> 가용영역 선택 -> 태그명 지정
연결 방법 -> EC2 instance와 EBS 불륨 연결
EC2메뉴 -> 불륨 -> 작업메뉴 -> 불륨 연결
인스턴스 선택하고 디바이스 이름확인!! => O/S에서 마운트할때 연결할 Device 이름이다!!
연결된 불륨에 대하여 EC2 instance의 O/S 에서 mount 작업
xSHELL 들어가서 lsblk 적기!
lsblk -> 연결된 디바이스 정보 확인
df -h => 디바이스 연결 상태확인
sudo mkfs -t ext4 /dev/xvdf - 연결할 EBS 불륨에 대한 파일 시스템 생성
sudo mount /dev/xvdf /mnt -> /dev/xvdf에 연결된 EBS불륨과 /mnt 디렉토리에 마운트
sudo umount /mnt
기존 EC2 연결 해제하고 다시 다른 인스턴스랑 연결해서 데이터 공유시키는거 !!
다른 인스턴스와 연결 후 xSHELL에서 열기
이때는 sudo mount /dev/xvdf /mnt 이것만 적으면 됨
scale out
- 클라이언트 수에 따른 서버 분산 처리
- EC2 instance를 복제하여 여러 개의 EC2 인스턴스를 생성하는 동작
- 클라이언트 동시 접속 증가에 따라 Server 처리 능력을 높이기 위하여 같은 동작을 하는
Server를 여러개를 생성하여 동시접속 대한 처리 효율 높이는 방법
AWS Scale out 을 위한 서비스
ELB(Elastic Load Balancing)
- 동시 클라 접속을 여러 서버에서 분산 처리
Auto Scailing
- 서버 처리량에 따라 서버를 자동 증설 및 감소 시키는 서비스
ELB
트래픽 분산 , 자동확장(Auto scailing), EC2인스턴스 상태를 자동 감지하여 오류 있는 시스템 제외
사용자 세션을 톡정 instance에 고정가능
SSL 암호화 지원
SSL의 경유지로 ELB를 사용하는 경우에 SSL 처리에 따른 부하를 ELB가 수용
IPV4,6를 지원
Amazon CloudWatch를 통한 모니터링
사용한 시간과 통과한 트래픽에 따른 종량제 과금
OSI 7 계층 네트워크 프로토콜에서 L4(transport) 계층과 L7(어플리케이션) 계층에 대한 서버 부하 분산 기능 제공
L4 계층
- 네트워크 로드 밸런서
L7 계층
- HTTP, HTTPS 등에 대한 처리 계층 - Application Load Balancer
Auto Scailing
다중 서버를 운영할때 서버의 일정한 부하 임계치를 넘거나 줄었을 경우 -> 자동으로 서버 증가 및 감소
(EIP가 하나는 연결하면 과금이 안되는데 그 다음꺼부터는 연결이 되도 과금이 됨)