EC2
Elastic Cloud Computing (탄력적)
물리서버에서 가상된 컴퓨터 환경을 생성(인스턴스) 생성한다.
EC2의 다양한 옵션
1. 인스턴스 유형(사진 클릭 시 AWS 인스턴스 유형 목록 url로 이동)
2. 운영 체제
3. 스토리지 옵션
4. 보안 그룹
5. Avaliability Zone ...
* 별다른 설명없이 바로 생성한다라 하고 넘어가는 부분들은 특별히 설정할 것들이 없어서 넘어가는 것(단순히 이름만 정해주면 되는 경우)
인스턴스 생성해보기
세부 내용가서 security -> 인바운드 규칙과 아웃바운드 규칙을 설정해준다.
보통 인바운드 규칙의 경우에는 다 닫혀있고, 아웃바운드 규칙의 경우에는 다 열어주는 편이라고 한다.
그래서 인바운드 규칙에서 http, https를 열어준다.
그리고 인스턴스에서 connect 선택한 후 실제 connect를 하면 해당 컴퓨터 안으로 들어올 수 있다.
# 패키지 업데이트
$sudo apt-get update
# nginx 서버 설치
$sudo apt-get install nginx
# nginx 시작
$sudo systemctl start nginx
# nginx 상태 확인 (active인지)
$sudo systemctl status nginx
# => 그러면 Welcome to nginx라고 뜬다.(안뜨면 시크릿 창에서 캐시가 없는 상태로 확인)
# 위의 페이지 확인
$cd /var/www/html
$ls => # index.nginx-debian.html이라고 뜸
# 해당 페이지 수정하기
$sudo vim index.nginx-debian.html # => html 파일 열리면서 Welcome to nginx 내용도 수정할 수 있음
# nginx 재시작
$sudo systemctl restart nginx
Elastic IPs
`Public IPv4 address` -> 고유해야 해서, 인스턴스 중단했다가 키면 계속 바뀐다.
`Private IPv4 addresses` -> 바뀌지 않는다.
따라서 public IP주소를 고정하려면 Elastic IP를 설정해야 한다.
Allocate Elastic IP address 선택 해서 만들면 하나의 IP를 배정해준다.
해당 주소를 선택한 후 Actions, Associate Elastic IP address 선택해준 후 원하는 인스턴스 할당 해주면 변경되지 않는 IP를 얻게 된다. 그러면 인스턴스 중단했다가 켜도 바뀌지 않는다. 하지만 이 친구는 요금이 나가기 때문에 주의하자. 꼭 해제하기!!
보안 규칙을 위한 Security Group과 Ports
[Security Group]
- 보안 규칙을 만들어두면 여러 인스턴스 해당 규칙들을 할당할 수 있다.
- `Time out` 에러가 나면 보안 규칙 이슈일 가능성이 높다.
- `connection refuse`는 ec2 내부 이슈(꺼져있다던가 등)
- 모든 `inbound`는 디폴트로 막혀있고, 모든 `outbound`는 디폴트로 열려있다.
[Ports]
- `22` = ssh(secure shell)로 인스턴스에 원격 접속
- `21` = FTP 파일전송 프로토콜
- `80` = http 웹 접속
- `443` = https 안전한 http 접속, 현재의 스탠다드
EC2에 접속하는 두 가지 방법 SSH & EC2 Instance Connect
1. SSH
난 주로 이 방식을 사용한다.
# ssh폴더 생성 후 .pem 파일 이동 시켜두기
$cd ssh
# 해당 파일(ex. newkeypair.pem)에 권한 부여하기(111, 222, 400...)
$chmod 400 newkeypair.pem # new까지 작성하고 tab만 해도 자동 완성된다.
#접속하기
$ssh -i newkeypair.pem ubuntu@본인 public IPv4 주소
#테스트용(선택)
$touch test.txt # test 메모파일 생성
$ls
2. Instance Connect
위의 인스턴스 생성해보기에서 한번 해봤기 때문에 패스
EC2 인스턴스를 백업하기 위한 Elastic Block Store(EBS)
EBS는 마치 usb같은 친구. 데이터 백업 해두기
너무 EBS가 많아지면 EBS Snapshot을 쓴다. 보관하는데 시간은 걸리지만 보관료가 싸다.
EBS Snapshot같은 경우에는 그냥 EBS와 다르게 다른 Region으로 보낼 수가 있다.
=> 인스턴스에 들어가서 Storage를 들어가보면 이미 Volum이 있다. 이것이 Elastic Block Store이다.
새 Volume을 만들어도 된다. 만든 후 인스턴스와 연결 시켜야 하는데, actions의 Attach Volume들어가서 연결해주기.
대신에 Avaliability Zone이 같아야 연결할 수 있으니 주의하자.
참고) 나중에 프로젝트가 끝나서 Terminate를 할 건데 백업을 해두고 싶다면 Volume으로 만들어 두면 된다.
Snapshot 사용해보기(ex.시간별 백업)
Volume 선택후 Actions의 Create Snapshot 클릭. => snapshot에 생성된다.
해당 snapshot에서 다시 볼륨을 만들 수 있다! + copy snapshot 을 누르면 다른 지역에 다른 Region으로 이동시킬 수 있다.
참고) 사용안하는데 삭제를 안하면 과금이 발생할 수 있다.
EC2 인스턴스를 복사하기 위한 Amazon Machine Image(AMI)
처음 인스턴스 생성 시 Application and OS Images라고 여러 운영체제중에 선택하는 항목이 있었다. ex. Amazon Linux, macOS, Ubuntu 등... 그때 한 번 봤을 단어인 AMI. 저 example들이 특정 AMI이다. 다양한 종류의 인스턴스를 시작할 수 있다.
EC2 인스턴스를 생성할 때 사용되며 운영 체제와 애플리케이션, 라이브러리 등이 포함되어있다(기본적인 것들 설치).
개발자가 직접 이미지를 생성하여 사용할 수 있으며 다른 사람과 공유할 수도 있다.
비교) AMI는 처음에 시작할 때 쓰는 설치CD같은 것, EBS는 사용하고 있는 EC2의 데이터를 백업하기 위한 것이다.
AMI 생성해보기
인스턴스에 오른쪽 마우스 클릭해서 Image and templates 클릭, create Image를 해본다.
생성하고나면 왼쪽 Images 카테고리의 AMIs에 만든 image가 생성되어있다.
상태가 가능으로 바뀌면 해당 이미지 선택후 `Lanch instance from AMI` 클릭한 후 여러가지 설정 후 Lanch instance해주면 된다. 해당 인스턴스에 connect해볼 건데, User name이 Linux의 디폴트인 root로 되어있는데, 해당 부분을 ubuntu로 변경하자.
그러면 이전 인스턴스에 만들어두었던 test.txt 파일이 그대로 들어있다.