서버와 네트워크 자원을 제공하는 시설
IDC(Internet Data Center)
CDC(Cloud Data Center)
리전은 Data Center가 구축된 도시나 국가
하나의 리전에 여러 개의 Data Center가 있으면 좋다.
하나의 Data Center가 장애가 발생했을 때, 또 다른 Data Center에서 서비스를 제공받을 수 있으니 무중단 서비스 이용이 가능하다.
이러한 Data Center들을 가용 영역이라 하며 Data Center가 많으면 많을수록 가용 영역이 높다라고 할 수 있다.
소프트웨어 기술로 가상의 머신을 생성하는 기술.
과거에는 하나의 물리적인 서버에 어떠한 서비스를 돌리는데 30%를 차지했더라도 나머지 70%를 활용할 수 없었음.
그러나 가상화를 통해 나머지 70%의 공간을 또 다른 서비스가 활용할 수 있음.
Image는 OS, 설치된 프로그램, 설정 등이 포함된 파일이다.
이미지를 가상 서버에 적용하여 동일한 환경을 구성할 수 있음.
AMI를 만드는 방법은 EBS를 스냅샷을 뜨고 S3에 저장을 한다. 그리고 이것을 AMI로 등록을 한다.
만드는 자세한 방법은 https://www.youtube.com/watch?v=ieG7hup-R8U 을 참고하면 좋다.
가령 내가 DB 설정을 엄청난 삽질을 해서 최적화를 했다고 하자.
다른 사람도 이러한 최적화를 해야 한다면 내가 직접 최적화한 DB 설정을 AMI로 만들어서 다른 사람에게 주기만 하면 된다.
그럼 상대방은 AMI를 받아서 새로운 EC2를 실행할 수도 있고 이 AMI를 복사해서 또 다른 사람에게 넘겨줄 수도 있다.
EC2 인스턴스는 Private IP, Public IP를 보유하고 있다.
기본적으로 할당되는 Public IP는 인스턴스 재실행 후에는 변경된다.
그래서 영구적인 Public IP를 설정하려면 Elastic IP를 사용해야 한다.
Elastic IP는 실행 중인 인스턴스에 연동하여 사용하면 무료이다.(생성 후 사용하지 않는 경우에는 비용이 발생하기 때문에 사용하지 않으면 삭제를 해야한다.)
인스턴스 레벨에서 운영되는 보안 그룹이다. (서브넷 레벨에서 운영되는 보안 그룹은 NACL이다.)
Security Group은 Stateful한 특징을 가진다.
Stateful은 InBound가 열려있지만 OutBound가 none이어도 (나가는 아웃 바운드가 열려있지 않아도) 상관없이 클라이언트와 통신할 수 있다.
Security Group 안에서 트래픽이 들어오고(InBound) 나가는(OutBound)를 이미 알고 있기 때문이다.
반면에 NACL(Network Access Control List)에서는 Stateless한 성격을 띈다.
그래서 InBound가 열려있고 OutBound가 닫혀있다면 트래픽을 처리할 수 없다.(클라이언트와 통신할 수 없다)
따라서 OutBound도 지정해줘야 한다.
NACL라고도 하고 ACL이라고도 한다.
EC2에는 보안 그룹(Security Group)이 있다면 VPC도 보안 그룹이 존재한다.
VPC에 존재하는 보안 그룹이 NACL이다.
연결된 서브넷의 모든 인스턴스에 자동으로 지원된다.
Stateless한 성격이라 인바운드 뿐만 아니라 아웃바운드 또한 설정을 해줘야 한다.
ELB는 들어오는 애플리케이션 트래픽을 EC2 인스턴스, 컨테이너, IP 주소, Lambda 함수와 같은 여러 대상에 자동으로 분산시킨다.
IP가 지속적으로 바뀌기 때문에 도메인 기반으로 사용을 해야 한다.
ELB는 직접 트래픽을 발생시켜 인스턴스가 살아있는지 죽었는지 상태를 체크하는데 이를 Health Check라 한다.
인스턴스가 살아있다면 InService라 하고 죽었으면 OutofService라 한다.
3가지 종류가 있다. (Application Load Balancer, Network Load Balancer, Classic Load Balancer)
Sticky Session을 통해 지정된 인스턴스를 사용할 수 있게 한다(로그인을 한 번만 해놓아도 됨)
만약 VPC의 CIDR block이 168.192.0.0/16이라면 Subnet의 CIDR block은 저 범위보다 작아야 한다.
만약 Subnet을 두 개 만든다고 가정한다면 168.192.0.0/24, 168.192.1.0/24로 CIDR block을 잡아야 한다.
슬래시 뒤에 있는 숫자는 CIDR를 가리킨다.
168.192.0.0/16 이라면 할당할 수 있는 IP의 범위는 168.192.0.0 ~ 168.192.255.255로 약 65000개가 넘는다.
168.192.0.0/24 라면 168.192.0.0 ~ 168.192.0.255로 256개가 할당 가능하다.
168.192.1.0/24 라면 168.192.1.0 ~ 168.192.1.255로 256개가 할당 가능하다.
트래픽이 어디로 가야 할지 알려주는 이정표?이다.
위 사진에서 첫 번째는 10.0.0.1 ~ 10.0.0.255까지 IP로 요청이 오면 local로 라우팅을 해주라는 의미이고 두 번째는 외부에서 접근하는 모든 사용자들 IP로부터 요청이 오면 igw-092dc9cee1daf958f로 라우팅을 해주겠다는 의미이다.
igw는 Internet GateWay를 의미한다.
https://www.youtube.com/watch?v=FeYagEibtPE 을 참고했습니다.
NAT(Network Address Translation)
같은 VPC 안에 2개의 subnet이 존재한다고 가정하자.
1번째 subnet은 public subnet이고 2번째 subnet은 private subnet이다.
기본적으로 private subnet 안에 존재하는 인스턴스는 Internet Gateway가 없어 외부의 인터넷과 통신을 할 수 없다.
그런데 통신할 수 있는 방법이 존재한다. 바로 NAT Gateway를 설정해주면 되는 것.
NAT Gateway는 public subnet안에 설치되어 private 인스턴스가 외부의 인터넷과 통신을 할 수 있는 통로이다. AWS에서 서비스로 제공한다.
NAT를 쓰게되면 private subnet의 인스턴스를 인터넷에 연결을 시킬 수 있지만 인터넷에서 해당 인스턴스로 접근하지 못하게 할 수 있다.
NAT Gateway를 만드려면 이 게이트웨이가 속할 public subnet을 만들어야 한다.
그리고 NAT 게이트웨이와 연결할 Elastic IP도 지정해야 한다.
또한 private subnet과 연결된 라우팅 테이블을 NAT 게이트웨이를 바라보게 해야한다.
바스쳔? 바스티온? 이라고 불리는 얘는 Private Instance에 접근하기 위한 Instance이다.
NAT Gateway가 Private Instance가 외부의 인터넷과 통신하기 위한 통로라면 Bastion host는 외부의 사용자가 Private Instance와 통신하기 위해 사용되는 Instance이다.
AWS 서비스와 리소스에 대한 접근을 안전하게 관리할 수 있다.
그리고 사용자 및 그룹을 만들고 리소스에 대한 접근을 허용 및 거부할 수 있다.
VPC간에 네트워킹을 할 수 있도록 하는 연결을 뜻한다.
AWS 계정이 다른 VPC와도 연결이 가능하고 리전이 달라도 가능하다.
VPC에서 발생하는 로그를 기록하는 서비스이다.
https://www.youtube.com/watch?v=IwaJoXpO4l4&t=1037s
https://www.youtube.com/watch?v=FeYagEibtPE
https://www.youtube.com/watch?v=lqnncuQgz28&t=145s
https://www.youtube.com/watch?v=rMx0MHlgpMY
https://medium.com/harrythegreat/aws-%EA%B0%80%EC%9E%A5%EC%89%BD%EA%B2%8C-vpc-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0-71eef95a7098
https://pjh3749.tistory.com/283