EC2(Elastic Compute Cloud)이란?
Amazon Elastic Compute Cloud(Amazon EC2)는 Amazon Web Services(AWS) 클라우드에서 확장 가능 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하면 하드웨어에 선투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 사용하여 원하는 수의 가상 서버를 구축하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있습니다. Amazon EC2에서는 확장 또는 축소를 통해 요구 사항 변경 또는 사용량 스파이크를 처리할 수 있으므로 트래픽을 예측할 필요성이 줄어듭니다. - 공식 아마존 문서
EC2는 독립된 컴퓨터 한대를 임대해서 사용할 수 있게 해주는 서비스입니다.
EC2의 장점
- 매우 쉽게 컴퓨터 한대를 구성할 수 있습니다.
- 원하는 스펙을 맞추기 쉽고 그에 따른 돈만 지불하면 됩니다(ㅠ)
- EBS (Elastic Block Store) 볼륨을 구성하여 영구 스토리지로 저장이 가능합니다.
- EIP (Elastic IP Address)를 사용하여 고정 IP를 할당할 수 있습니다.
VPC & EC2 사용
vpc설정은 전 블로그에서 설정을 다 끝내고 난 후 입니다. EC2페이지입니다, Launch instaces를 눌러줍니다.
AMI는 Amazon Linux로 선택하였지만 원하시는 걸로 선택하시면 됩니다. 더 자세한 AMI정보들은 Quick Start 오른쪽 Browse more AMIs를 눌러서 확인해 줄 수 있습니다.
Instance type에는 여러 성능에 맞는 여러 인스턴스 정보들이 쭉 있습니다. 원하는 것을 골라서 사용하면 됩니다. 그 다음 Key pair를 인증서가 없기 때문에 만들어줘야합니다. 오른쪽 Create new key pair를 눌러줍니다.
키 이름만 제대로 설정해 주고 Create key pair를 눌러줍니다. 키는 분실하지 않게 잘 보관해 둬야합니다.
바로 아래 있는 Network settings입니다. 위와 같은 화면이 아니실텐데 Edit를 누르면 됩니다. VPC와 Subnet를 설정해줍니다. Auto-assign public IP는 Public IP를 자동적으로 할당시켜주는 건데 저희는 EIP를 사용하여 고정 IP를 넣어줄거기 때문에 Disable로 하였습니다.
나중에 이 서버의 용도에 따라 알맞게 설정해 주면 됩니다. 저는 웹 서비스로 이용하기 위해서 HTTP, HTTPS 포트를 추가로 열어주었습니다.
- Request Spot Instances는 사용자 제시 가격부터 커지면 인스턴스를 종료하고 작아지면 시작하는 Spot Instances를 사용할꺼냐는 체크박스입니다. 제가 원하는건 온디맨드, 즉 사용자가 원할땐 언제든지 요청을 보내줘야하기 때문에 체크를 하지 않을 것 입니다.
- Domain join directory는 AWS의 Microsoft Active Directory 완전관리형 서비스입니다. 이 서비스를 이용할 것 인지 확인하는 칸입니다.
- IAM instance profile는 IAM(identity and access management)의 약자로 aws에대한 리소스 권한을 제어하고 관리할 수 있는 서비스 입니다. 이미 IAM이 존재한다면 여기 칸에서 할당하시면 됩니다.
- Hostname type는 인스턴스를 생성을 할 때 호스트이름에 IP를 넣을 것인지 인스턴스ID와 같은 리소스들을 넣을 것인지 정하는 곳입니다.
- Instance auto-recovery는 인스턴스가 시스템 상태 확인에 실패하면 인스턴스가 이를 자동적으로 복구를 할지 정하는 곳입니다.
- Shutdown behavior는 운영체재 영역에서 shutdown이 실행되때 instance를 STOP할건지, TERMINATE할건지 선택하는 곳입니다.
- terminate instance는 인스턴스를 종료하면 가상머신이 영구적으로 제거되며 모든 데이터가 삭제됩니다. 또한 EBS 볼륨이 분리되고 삭제됩니다.
- stop instance는 인스턴스를 종료하면 가상머신이 영구적으로 제거되며 모든 데이터가 삭제됩니다. 중요한 차이는 stop instance는 EBS 볼륨이 삭제 않는다는 것 입니다. EBS 볼륨에 대한 표준 요금이 적용됩니다.
- Stop - Hibernate behavior는 인스턴스를 최대절전모드로 변경하는 옵션을 선택할 수 있는 곳입니다.
- Termination protection는 인스턴스가 갑자기 종료되지 않도록 보호하는 옵션입니다. 이 기능을 Enable시키면 CLI나 management console등에서 바로 인스턴스를 종료할 수 없게됩니다.
- Stop protection는 인스턴스가 갑자기 중지되지 않도록 보호해주는 옵션입니다.
- Detailed CloudWatch monitoring는 저희가 인스턴스를 만들면 아마존의 CloudWatch를 통해 인스턴스에 대한 지표를 모니터링 할 수 있는데 이 옵션을 Enable하면 무료로 제공하는 CloudWatch 기능 외에 추가적인 세부 모니터링 지표를 볼 수 있는 옵션입니다. 이에 따론 추가 요금은 당연히 나오게 됩니다.
- Elastic inference는 딥러닝처럼 하드웨어 가속화가 필요할 때 사용되는 옵션입니다.
- Credit specification, aws instance에서는 burstable performance instances를 지원을 합니다.
- 이는 평소에 기본적이고 고정적인 성능을 사용을 하다 특정 시점에 해당 성능 이상의 컴퓨팅이 필요할 경우에 크레딧을 이용하여 순간적으로 컴퓨팅성능을 버스트시키는 것을 말합니다.
- 이 옵션에서 unlimited를 선택하게 되면 크레딧이 다 떨어져도 aws으로 부터 크레딧을 추가적으로 제공받아 필요한 시점에 성능을 끌어올릴 수 있게 됩니다. 당연히 이 옵션은 유료이며 잘못사용하면 상위 인스턴스를 사용하는 것 보다 비싼 요금을 낼 수도 있습니다.
- Placement group는 인스턴스를 만들때 해당 인스턴스를 어디에 배치할지 결정하는 옵션입니다.
- EBS-optimized instance는 EBS의 개선된 성능을 제공하는 옵션입니다. 이 옵션은 제한된 instance type에서만 활성화가 됩니다.
- Capacity reservation는 특정 가용영역에서 사용할 인스턴스 용량을 미리 예약해주는 옵션입니다.
- 미리 할당해둔 Capacity reservation에 인스턴스를 사용하고자 할때는 Target by ID 또는 Target by Group옵션을 선택합니다.
- 이 옵션을 사용하지 않을 경우에는 None를 선택합니다.
- 지금 만든 인스턴스를 나중에 만들 Capacity reservation에 적용하고자 한다면 open를 선택해주면 됩니다.
- Tenancy는 물리적으로 다른 사람과 같은 서버에서 인스턴스를 사용할 수도 있기 때문에 물리적으로 다른 사람들과 분리를 해서 전용 인스턴스나 전용 호스트를 사용할 필요가 있을 때 이 옵션을 설정합니다. 이에 따른 추가요금도 발생합니다.
- 전용 인스턴스를 사용한다면 Dedicated - run a dedicated instance 옵션을 선택하시면 됩니다.
- 전용 호스트 인스턴스를 사용한다 하면 Dedicated host - launch this instance on a dedicated Host를 선택하시면 됩니다.
- 이 외에는 Shared - run a shared hardware instance를 선택하시면 됩니다.
- RAM disk ID, Kernel ID값은 Select값 드대로 나두는 것을 추천합니다.
- Nitro Enclave는 인스턴스내에서 민감한 정보를 보호하고 안전하게 처리할 수 있는 옵션입니다. 특정 instance type에 활성화 됩니다.
- License configurations는 aws license manager에서 설정한 license 고정을 인스턴스에 적용할 수 있는 옵션입니다.
- Metadata accessible는 인스턴스 메타데이터에 Access할 수 있는 여부를 선택하는 옵션입니다.
- Metadata version는 인스턴스 메타데이터의 버전을 선택할 수 있는 옵션입니다.
- Metadata response hop limit는 인스턴스 메타데이터 허용된 홉 수 제한을 하는 옵션입니다.
- Allow tags in metadata는 인스턴스가 메타데이터에서 인스턴스 tag에 대한 접근을 허용할지 선택하는 옵션입니다.
- User data는 인스턴스가 생성되면서 root권한으로 실행되는 스크립트를 넣는 공간입니다.
- 예시링크 ← 이러한 사이트에서 보면 자신이 원하는 대로 bash script를 짜서 넣는 것을 볼 수 있습니다.
전부 다 설정했으면 Launch instance를 클릭하여 인스턴스를 만들어줍니다.
정상적으로 생성된것을 확인할 수 있습니다. 하지만 Instance auto-recovery를 Disable 해줬기 때문에 Public IPv4는 없는 것을 볼 수 있습니다. EIP를 설정하러 갑시다.
Network & Security에서 Elastic IPs를 눌르고 Allcate Elastic IP address를 클릭해줍니다.
Tags에서 Name만 설정해주고 Allocate로 생성해줍니다.
잘 만들어진 것을 볼 수 있습니다. 여기서 맨위 Assciate this Elastic IP address를 눌러 EC2에 할당해줍니다.
위 사진처럼 Instance를 선택한 후 Associate로 할당시켜줍니다.
Public Ipv4가 잘 할당된 것을 확인할 수 있습니다. 이제 인스턴스에 접속해 봅시다. 이제 ~/.ssh/config파일에 아래와 같이 정보를 넣어주세요.
Host public-ec2-a1
HostName [DNS or IP]
User ec2-user
IdentityFile [.pem file location]
Port 22
넣었다면 cmd에서 "ssh public-ec2-a1"이렇게 치면 생성한 인스턴스에 접속할 수 있습니다.
이렇게 잘 접속되는 것을 확인할 수 있습니다. 이제 public IP로 웹사이트에 접속해보겠습니다.
Apache가 잘 깔린것을 확인할 수 있었습니다. 이제 맨 마지막에 있던 phpinfo.php에 접속해봅시다.
아주 잘! 접속되는 것을 확인할 수 있습니다.
user-data에 적어둔 스크립트가 잘 작동한 것을 확인하였습니다. 이제 public-subnet-c1를 만들어봅시다. public-subnet-a1을 AMI로 저장한 후 똑같이 만들면 됩니다.
public-ec2-a1를 체크하고 우클릭합니다. 그 후 Image and templates, Create image를 눌러 AMI를 만들어줍니다.
AMIs에 들어가면서 제대로 만들어진것을 확인할 수 있습니다.
위 사진처럼 새롭게 인스턴스를 생성시키고 위에서 했던 세팅 user-data빼곤 그대로 하시면 됩니다. 그 후 EIP도 만들어서 적용시켜줍니다.
Host public-ec2-c1
HostName [DNS or IP]
User ec2-user
IdentityFile [.pem file location]
Port 22
이제 c1로 위 코드를 적용합니다. 그리고 ip 또는 도메인으로 웹 사이트도 잘 접속되는 것을 확인할 수 있습니다.
수고하셨습니다. 기본적인 EC2사용방법은 전부 익히셨습니다!
'기능반공부 > 클라우드 컴퓨팅' 카테고리의 다른 글
[CC] AWS Organiztions & AWS IAM (0) | 2023.02.22 |
---|---|
[CC] AWS EFS(Elastic File System) (0) | 2023.01.12 |
[CC] VPC / Subnet / Internet Gateway / Route Table (4) | 2023.01.11 |
[CC] AWS CloudFront (CDN) (0) | 2023.01.10 |
[CC] AWS S3(Simple Storage Service) (0) | 2023.01.10 |