AWS- 5

박형준·2024년 4월 15일

*VPC 개념

  • Virtual Private Cloud : 사용자 전용 가상 프라이빗 클라우드

    • 리전마다 독립적으로 구성(서울, 아메리카 등), 각각의 VPC는 독립적으로 분리되어 있음
    • 리전당 5개 만 생성 가능함. 더 생성 하고 싶다면 본사 요청(메일)해서 증설이 가능
    • VPC는 AWS사용자 계정의 가상 네트워크 입니다.
    • VPC는 AWS 클라우드에서 다른 가상네트워크와 분리되어 있음.
    • EC2를 생성하면 , VPC안에서 같은 리소스를 사용.
    • IP범위 지정( CIDR ) , 서브넷 지정, 보안그룹에 연결한다음 라우팅.
    • 요금은 Giga 단위로 사용량을 계산 하며, 1시간 미만도 1시간으로 청구
  • *VPC 구성 요소

    • 프라이빗 IP( 내부에서만 사용) ⇐ 탄력적 IP ⇒ 퍼블릭 IP(외부와 연결이 되는 IP)
    • *VPC 피어링 : 서로다른 VPC를 연결하는 기능( 주소가 중복되면 연결안됨 )
    • *전송 게이트웨이 : 여러 개의 VPC를 한곳으로 연결하는 중앙라우터역할
    • *NAT(네트워크 주소 변환): 내부의 사설IP를 외부 공인IP로 매핑시켜주는 기능.
  • *VPC의 보안 그룹과 ACL

    • 보안그룹은 인스턴스등의(EC2) 자원 접근을 제어 컨트롤(허용 규칙만 나열, 허용이 없는건 모두 거부)
    • ACL은 서브넷을 제어 컨트롤.(허용/거부) 기본값은 거부
  • VPC
  • VPC 요약도 1
  • VPC 요약도 2
  • VPC의 사설 IP
  • 서브넷팅 개념(기존 범위보다 적게)
  • 라우터의 기능을 이용해서 서로 연결
  • 보안그룹(ssh, http)
  • 내부와 외부 통신(프라이빗: 내부 통신, 퍼블릭: 외부 통신 가능)

VPC의 기본으로 존재하는 리소스

  • 기본 리소스
  • 기본 VPC
  • 기본 서브넷
  • 기본 라우팅 테이블
  • 기본 게이트 웨이
  • 기본 ACL

삭제 금지


VPC생성

*VPC, 게이트웨이, 라우팅, EC2 생성 및 SSH접속

  • VPC생성 / VPC만 선택 , 이름 입력, CIDR: 10.0.0.0/16 나머지는 기본으로 놔두고 생성
    • 생성된 VPC 클릭 후 DNS확인은 필수로 활성화로 변경(안되어 있으면) => 작업 / VPC편집에서 설정
  • VPC(서브넷) 생성하기, CIDR 조정하기
  • VPC 생성된 것 확인
  • VPC 생성 정보 확인
  • DNS 확인, DNS 호스트 이름 비활성화를 활성화
  • DNS 확인이 활성화 된것 확인

*서브넷 생성 /

  • 서브넷 생성하기
  • 가용 영역과 CIDR 조정해주기

*서브넷을 하나더 생성 ,

  • 이름 mytest-subnet2 ,
    • 가용영역-b, CIDR 10.0.1.0/24
    • 서브넷을 두개 만든 이유는 서브넷 문제 발생시 두번째로 동작 시키기 위해서.
  • 백업용 서브넷 생성(기존 서브넷이 고장났을 때를 대비해서)
  • mytest-subnet-1과 서브넷 범위가 겹치지 않게 생성
  • 서브넷 생성 확인

*EC2생성

  • 인스턴스 시작 / 이름입력 후 VPC, 서브넷은 생성 하고 선택(a,b중), 퍼블릭 활성화,
    • 보안그룹에 HTTP 추가 , 생성

⇒ 인스턴스 생성 후 접속 해보면 접속 안됨 . (게이트웨이가 없어서)

  • 인스턴스 생성(EC2)
  • 서브넷 연결하고 퍼블릭 IP 자동할당 활성화
  • 보안 그룹 생성(ssh와 httpd)
  • ssh 연결이 안되는 것 확인( 연결 x )

*게이트웨이 생성 하고 접속

  • VPC서비스 / 인터넷 게이트웨이 선택 / 생성 , 이름 입력 하고 생성
  • VPC와 EC2 연결
  • 인터넷 게이트웨이 생성
  • 게이트웨이 생성된 것 확인
  • VPC와 인터넷 게이트웨이 연결 (인터넷 게이트웨이에서, 외부로 나갈 수 있게)
  • VPC와 인터넷 게이트웨이 연결된 것 확인

*라우팅 테이블 편집

  • 생성한 게이트웨이 선택 / [작업]에서 생성된 VPC연결
  • 라우팅 편집 클릭 / 대상 0.0.0.0/0 , 대상 연결된 게이트웨이 선택 (자동 찾아줌)
    • -EC2연결해보면 잘 연결됨 ⇒ httpd 설치 하고 로컬PC에서 접속 해보기.
    • ( 라우팅 테이블에서 연결을 설정했기에 .)
  • 라우팅 연결
  • 라우팅 편집에서 인터넷 게이트웨이와 연결 (내부로 통신 할 수 있게)
  • 라우팅 연결된 것 확인

-순서 : VPC생성 ⇒ 서브넷 생성 ⇒ 게이트웨이 생성 ,VPC에 연결 ⇒라우팅 테이블 생성 과
게이트웨이에 연결 ⇒ 인스턴스 생성과 접속

*리소스 삭제 [ EC2 , 게이트웨이, VPC, 서브넷, 라우팅 테이블 ]

  • EC2는 기본 종료, 게이트웨이 - 분리 후 삭제 ,
  • EC2와 연결 완료(ssh)

*VPC생성 :

  • 이름 [test-VPC] , CIDR [10.3.0.0/16]
  • ⇒ 퍼블릭 서브넷 : test-pubilc-sub , 10.3.1.0/24 생성
    • 게이트웨이 생성 ,VPC에 연결 ⇒라우팅 테이블 생성 과
      • 보안그룹 생성 및 SSH, HTTP 등록 , 내 PC IP만
    • 게이트웨이에 연결 ⇒ 인스턴스 생성과 접속
      • ⇒ EC2생성 과 로컬PC에서는 접속 성공, 기타 다른 PC나 휴대폰으로는 접속 X
  • VPC 생성(CIDR 설정)
  • VPC 생성하고 생성정보 확인
  • 네트워크 ACL - 인바운드와 아웃바운드 규칙으로 보안 지정
  • 서브넷 생성(VPC 지정)
  • public으로 생성(가용영역, CIDR 주의)
  • 생성 후 가용영역, IPv4, 라우팅 테이블, VPC가 제대로 설정되었는지 확인
  • public 서브넷과 라우팅 테이블 연결
  • public 서브넷과 라우팅 테이블 연결 확인
  • public 서브넷과 라우팅 연결 세부 내용 확인
  • 서브넷 연결 정보에서도 라우팅이 잘 연결되었는지 확인
  • 인터넷 게이트 웨이 생성 후
  • 게이트 생성 확인
  • 생성한 VPC와 연결
  • VPC와 연결된 것 확인
  • 라우팅 테이블로 이동 후 인터넷 게이트 웨이와 연결 설정 후 저장
  • 라우팅 테이블에서도 라우팅 연결이 되었는지 확인
  • 보안 그룹 생성(ssh와 httpd)
  • 보안 그룹 생성된 것 확인
  • ec2 생성
  • VPC 지정하고 퍼블릭 ip 할당, 보안 그룹 선택
  • ssh에 접속 확인
  • ip address 확인
  • curl 명령어로 웹 호출 확인
  • 웹 페이지 설정 후 확인 (보안 정책을 내 IP만으로 해놔서 로컬 PC로는 접속이 되지만 다른 PC에서는 접속이 안된다)

*VPC ⇒ 퍼블릭 서브넷 , 프라이빗 서브 넷 ⇒ 통신 확인

  • 프라이빗 서브넷 : test-private-sub

-서브넷 생성 과 명시적 서브넷 연결

  • VPC 지정
  • private 서브넷 설정
  • private 서브넷의 생성된 정보 확인
  • 라우팅 테이블 생성
  • 라우팅 테이블 생성 확인
  • 라우팅 테이블 세부 정보 확인

*NAT게이트웨이 생성 ( 퍼블릭과 프라이빗이 있기 때문에 )

  • NAT gateway 생성(public과 private으로 나눠져 있기 때문에)
  • public subnet 선택( public이 외부로 나가기 때문에 )
  • NAT 게이트웨이 생성 확인

생성 클릭 ⇒ Pending ⇒ Available로 변경 됨.

*라우팅 테이블 편집

  • 프라이빗 라우팅 클릭 / 편집 /
  • 라우팅 테이블 편집
  • NAT 게이트웨이와 라우팅 연결 설정(탄력적 ip: 인스턴스 종료해도 ip가 남아있다)
  • NAT 게이트웨이와 라우팅 연결 확인

-EC2생성 이름 [test-private-ec2] 및 나머지는 똑같고 보안그룹 생성 , 후 맨 아래에

[고급세부정보] ec2-user 인증키 등록

  • private EC2 생성
  • private 생성후 인증 필요 고급 설정 밑 부분에 복사하기
  • 네트워크 설정

생성 클릭 후 네트워킹 정보 확인 및 각각의 EC2에 SSH접속

  • 퍼블릭 EC2 IP ⇒ 43.203.220.47
  • 프라이빗 EC2 IP ⇒ 43.203.204.17 (IP가 안보인다면 )
  • 퍼블릭 EC2에 접속 후 ⇒ 프라이빗으로 접속 ssh ec2-user@10.3.1.113 ⇒ ping -c 2 www.google.com
    • EC2 인스턴스 삭제 ⇒ NAT게이트웨이 삭제 ⇒ 탄력적IP 삭제(릴리즈) ⇒ VPC 등 남은 자원 삭제
    • (서브넷, 라우팅 테이블, 인터넷 게이트웨이 , 보안 그룹 )
  • private 인스턴스 생성 후 정보 확인 ,
  • 서로 다른 ip를 가지고 있다 (public과 private) , public 인스턴스 public ip: 43.202.62.253
  • private 인스턴스 public ip: 43.203.195.216
  • public 인스턴스 public ip로 ssh 접속
  • private 인스턴스 public ip로 ssh 접속

Auto scaling 개념

*AWS 클라우드의 대표적인 장점 중 하나.

  • ⇒ 필요에 따라서 서비스를 늘리거나 축소를 자유롭게 가능
  • ⇒ 시스템의 자원들( CPU, RAM, HDD, 네트워크)에 대한 성능을 향상, 축소

*Auto scaling 용어

  • 스케일 업 (Scale Up): 스케일 업은 시스템의 성능을 향상시키기 위해 단일 서버 또는 가상 머신의 리소스를 증가시키는 것을 의미합니다.
    • 이는 CPU, 메모리, 디스크 공간 등의 리소스를 늘리는 것을 포함할 수 있습니다.
    • *스케일 업 비용은 성능에 비례하지는 않음 ( RAM-1G/ 100) ⇒ RAM-16G 스케일업을 하면 가격이 1600 이 아닌 2000~3000 사이값으로 정해져 버림.
  • 스케일 아웃 (Scale Out): 스케일 아웃은 시스템의 성능을 향상시키기 위해 서버 또는 가상 머신의 수를 증가시키는 것을 말합니다.
    • 이는 여러 대의 서버 또는 가상 머신을 추가하여 부하를 분산시키는 것을 의미합니다.
    • *스케일 아웃 비용 : 1000원짜리 EC2 생성 ⇒ 서버 16개로 스케일 아웃을 하면 1000x16 형성됨
  • *스케일 다운 : 자동설정을 해 놓으면 물리적 설정 값에 따라 적은값에 적용됨.

*오토 스케일링을 할때 정책

  • EC2 인스턴스 숫자 [ 최소, 최대 ]
  • CPU부하 정책 에 따라 늘리거나 줄이는게 가능.
  • 분배와 관련 정책 : 장애가 발생시 새로 생성해서 서비스 가능하게.

*템플릿을 이용한 오토 스케일링 생성.

  • 템플릿을 이용한 생성 - EC2서비스 / 시작 템플릿 [생성] /
    • 이름 입력, 버전 입력, 지침에 체크 , 네트워크는 보안그룹 Default,
    • 퍼블릭IP 활성화 / 템플릿 생성 / 템플릿 보기
  • 템플릿을 통해 EC2 생성
  • 템플릿 이름과 버전 지정
  • OS 지정
  • 인스턴스 유형 선택, 키 페어 지정
  • 기존 보안 그룹 선택
  • 퍼블릭 ip만 활성화
  • 템플릿 형성된 것 확인
  • 템플릿 세부 정보 확인

-오토스케일링 그룹 / 이름 입력 [다음] / 가용영역은 2곳 선택 [a,b] / 고급 옵션은 기본 /

  • 그룹 크기 설정 [ 원하는 용량-2, 최소-1, 최대-3 ] , 대상 추적 크기 조정 선택 체크 / 다음
  • 알림 추가 / 주제 생성 클릭 후 내용 입력 [다음] / 생성까지 쭉~~
    • EC2 2개 생성 확인 생성이 끝나면 하나 삭제(종료) 시키면 잠시 후 다시 하나 생성 ,
  • auto scaling 그룹 생성
  • 템플릿 선택하고 이름 지정
  • VPC 지정하고 서브넷 2개 선택(하나는 백업용)
  • 상태 확인 유예 기간: 대기 시간
  • 원하는 용량 2개( 인스턴스 개수 )
  • 최소용량: 원하는 용량 보다 작고 , 최대용량: 원하는 용량보다 크게 설정, 대상 추적 크기 조정 정책 클릭
  • 템플릿을 만든 후 템플릿을 안 지우면 인스턴스가 지워지지 않는다(체크 해제하면 인스턴스 원하는 용량으로 인스턴스 용량 조절 가능)
  • 알림 추가 설정
  • 자동으로 인스턴스 생성
  • 인스턴스 종료하면 템플릿을 통해 인스턴스 생성

-오토 스케일링에서 EC2 수량 변경 해보기

  • EC2 서비스 맨 아래 오토스케일링 그룹 / 그룹 세부정보 [편집] /
  • 세곳 모두 3으로 변경 [업데이트] / EC2 확인
    • 다 생성이 끝나면 삭제 하지 말고 오토스케일링 그룹의 숫자를 변경 [ 2,2,2 로 변경 / EC2 확인]
    • ⇒ 제일 먼저 생성된 EC2 부터 자동 종료가됨.
  • 그룹 세부 정보 편집을 통해 인스턴스 개수 조절 가능
  • 인스턴스를 3개로 설정
  • 자동으로 인스턴스 생성

-서비스 삭제 시에는 수량을 0으로 설정 후 [그룹] 과 [템플릿] 삭제 하면됨.


*CloudFormation 을 이용한 인스턴스 생성 및 자동 배포.

*CloudFormation 서비스

스택 생성 /

-이름 입력 , 키네임 지정 [다음] / 스택 옵션 구성[다음] / 맨 아래 체크 하고 전송

  • 스택 생성
  • yaml 파일을 통해 원하는 VPC와 서브넷 등을 자동으로 생성
  • 스택 세부 정보 지정(이름만 변경)
  • 리소스 생성 승인
  • 스택 생성 확인
  • 잠시 기달리면 CREATE_IN_COMPLETE 가 되면 생성 완료
  • 생성된 VPC와 서브넷, 인스턴스, 보안 그룹, ALB 확인(yaml 파일과 비교)

*생성된 EC2 정보 확인

  • $aws --version
  • 1회성 정보 확인
    • $aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, State.Name, PrivateIpAddress]' --output text
  • 연속적인 정보 확인
    • while true; do aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, State.Name, PrivateIpAddress]' --output text; date; sleep 1; done

*자원 삭제시 하나 하나 찾아서 삭제 하기보다 [스택을 삭제] 하면 모두 삭제가됨.

  • 삭제 할 땐 스택만 삭제하면 된다

0개의 댓글