서울 리전에서의 주의 사항
AZ는 a,c만 사용해야 한다. -> 무료 인스턴스인 t2.micro가 a,c에서만 가능해서
1. 네트워크 생성
1. VPC 생성
2. Subnet을 원하는 AZ에 생성
3. IGW 생성 후 VPC attach
IGW과 VPC는 1:1 관계이다. -> VPC에서 사용 할 수 있는 IGW은 1개 이다.
4. 라우팅 테이블 생성 IGW 연결, Subnet 연결
각각의 Subnet에 라우팅 테이블을 만들면 관리가 쉬워진다.
VPC 내 DNS 호스트 이름 활성화
DNS 호스트 이름 활성화를 한다. - 다른 AWS 서비스가 DNS를 통해서 EndPoint를 통해서 사용하기 때문에
2. 보안 그룹
외부(인터넷)와 연결이 필요한 보안 그룹은 anyway로 풀어놓아야 통신에 장애가 생기지 않는다.
그러면 보안은 어떻게? -> ACL을 통해 장애를 유발하거나 이상한 IP들을 차단하는 방식으로 보안을 챙긴다.
내부에서 동작은 보안을 위해서 보안 그룹을 소스 주소로 설정이 가능하다. -> 구분을 통한 보안
In : 기본적으로 다 막음 , Out : 기본적으로 다 허용
3. RDS 설치
Aurora RDS가 완전 관리형이지만 프리티어에서 되지 않는다. 일반 RDS를 설치해본다.
multi AZ가 되지 않는다.
DB를 위한 Subnet 그룹을 만들어 사용 할 수 있다. -> DB가 생성될 Subnet 정의
해당 VPC의 다른 Subnet에 무조건 만들어야 하는데 multi az를 위해서 aws에서 강제로 만들게 했다.
4. 인스턴스 만들기
인스턴스에 만든 코드를 올리는 방법은 다양하다. github, S3, SCP등 다양한 방법을 통해서 만든 코드를 인스턴스에 올릴 수 있다.
만약 인스턴스가 S3를 통해서 코드를 받으려 한다면 S3에 접근하고 이용 할 수 있는 권한이 필요하다. IAM을 통해서 역할을 부여함으로 S3를 인스턴스가 사용 할 수 있다.
IAM 역할 != agent
이부분이 어려웠는데 agent를 인스턴스에 설치 한다 해도 agent는 동작하지 않는다. 왜? 권한이 없기 때문이다. IAM을 통해서 권한을 얻지 않는한 agent를 통해 API 요청을 해도 권한이 없어서 응답을 보내주지 않는다.
반대로 IAM으로 권한을 얻더라도 agent가 없으면 API를 요청하지 못한다.
-> 서로 다르지만 둘다 필요하다
User Data 분석
#!/bin/bash
yum install -y httpd mysql #이 mysql? -> mysql client 설치
amazon-linux-extras install -y php7.2 #amazon-linux-extras도 패키지 매니저 yum에 php7.2가 없다
aws s3 cp s3://test0230/mzc_basic.zip . #aws s3에 대한 권한을 얻어서 사용할 수 있다
unzip mzc_basic.zip -d /var/www/html # unzip 파일 -d 원하는 폴더 위치
systemctl start httpd
systemctl enable httpd
5. 고가용성
AMI 만들기 -> 만드려는 인스턴스를 정지해야 AMI로 만들 수 있다. 만들어진 AMI는 다른 리전,계정과 공유가 가능하다
시작 템플릿 : AMI를 통해서 시작 템플릿을 만들 수 있다. 시작 템플릿의 네트워크는 Auto Scaling을 사용할 것이면 설정하지 않아도 된다 -> Auto Scaling의 네트워크가 덮어 버린다.
LB에서 네트워크 맵핑은 Public Subnet에 연결?
IGW하고 ALB하고 연결되지 않는다. LB는 네트워크 맵핑을 통해서 네트워크 인터페이스(NIC)을 연결 할 수 있다.
LB는 Public Subnet에서 사설IP, 공인IP를 가지게 된다. IGW이 받아오면 공인 IP를 통해 ALB에게 전달 ALB가 Target Group에게 보낸다.
Auto Scaling
Auto Scaling에서 설정하는 Subnet은 ASG가 어느 Subnet에 인스턴스를 생성 할지 선택하는 것이다.
탄력성 : 트래픽에 반응한 확장, 축소 기능
동적 크기 정책 : 대상을 정한 뒤 측정 값을 통해서 범위를 설정한다. up을 설정하면 down이 자동으로 설정 된다.
Simple : 하나씩 수동으로 정책하는 방식
6. Private Subnet의 인스턴스 접근하기
외부에서 SSH 접근 : Bastion Host를 만들어서 접근 가능 = SSH를 위한 중간 거점 인스턴스
내부에서 외부 접근 : NAT 게이트웨이(유료) -> NAT 인스턴스 (NAT 게이트웨이 기능을 가진 NAT 인스턴스)
Bastion을 통해 접근하기 위해서는 SSH 접근에 대한 보안 그룹을 잘 설정 해야 한다.
Bastion에 Private 인스턴스 접근을 위한 pem 키를 Bastion에 옮겨 줘야 한다. (SCP, FTP, S3등)
sudo ssh -i {key이름} ec2-user@{인스턴스 사설 IP}
Bastion 인스턴스에서 Private에 있는 인스턴스에 접근이 가능하다.
'경기도 미래기술학교 클라우드 > TIL' 카테고리의 다른 글
23.09.12 화 (0) | 2023.09.12 |
---|---|
23.09.06 AWS #8 (0) | 2023.09.06 |
23.09.01 AWS #5 (0) | 2023.09.01 |
23.08.31 AWS #4 (0) | 2023.08.31 |
23.08.30 ASW #3 (0) | 2023.08.30 |