AWS

EC2_hands-on

JAEJUNG 2021. 8. 10. 14:30
Overview

1. EC2 인스턴스 생성하기

2. 툴을 이용한 SSH 접속하기

3. 웹 서버 설치 후 Public IP로 접속하기

4. EC2 백업 및 복원하기

5. EBS Volume 확장하기

6. 인스턴스에 EIP(Elastic IP) 할당하기


Step1. EC2 인스턴스 생성하기

- AWS 콘솔에서 [인스턴스 시작]을 통해 새 인스턴스를 생성한다.

 

- AWS에서 프리티어에 기본적으로 제공해주는 리눅스 이미지를 선택한다.

 

- 인스턴스 유형 역시 프리티어에 제공되는 t2.micro를 선택한다.

 

- step3, step4의 경우 변경할 사항이 없기 때문에 [다음]을 클릭한다.

 

- 아래와 같이 태그를 추가해준다.

 

- 새 보안그룹을 만들어준다.

[소스]의 경우 접근 가능한 IP를 설정해주는 기능으로 보안을 위해 custom하게 설정해야 하지만

테스트를 위해 0.0.0.0/0으로 설정한다.

 

- 외부에서 SSH 접속을 위한 프라이빗 키를 새로 생성해준다.

다시 다운로드 받을 수 없으니 [키 페어 다운로드] 후 키를 잘 보관한다.

 

- 인스턴스 대시보드에서 방금 만든 인스턴스가 실행 중인 것을 확인할 수 있고, 상세 정보를 통해 Public IP 주소를 확인한다.

 

Step2. 툴을 이용한 SSH 접속하기

- AWS 콘솔에서 손쉽게 SSH 접속이 가능하게 기능을 구현해놨지만, 외부에서 다운받았던 key를 사용하여

웹 서버로 접속해보자.

Putty, SecureCRT 등의 접속을 위한 여러 툴이 있고, 물론 CMD를 통한 방법도 가능하다.

이번 실습에선 SecureCRT를 사용하겠다.

 

- [Hostname]엔 아까 확인했던 퍼블릭 ip를, Username에는 ec2-user를 적어준다.

 

- 처음 접속할 땐 key 등록을 위해 아래와 같이 알림창이 뜨고 Accept & Save를 누른다.

 

- 아까 다운받았던 key 파일을 열어준다.

- key를 이용하여 정상적으로 SSH 접속이 된 것을 확인할 수 있다.

 

Step3. 웹 서버 설치 후 Public IP로 접속하기

이제 생성한 인스턴스에 원하는 웹서버를 설치한 후 브라우저를 통해 접속해보자.

 

- 먼저 설치가능한 패키지 목록을 update 해주자.

[ec2-user@ip-172-31-5-79 ~]$ sudo yum -y update
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                               | 3.7 kB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package curl.x86_64 0:7.61.1-12.amzn2.0.4 will be updated
---> Package curl.x86_64 0:7.76.1-4.amzn2.0.1 will be an update
...
...
Complete!

 

- 간단한 테스트를 위해 아파치 웹 서버를 설치해주고 실행시켜주자.

[ec2-user@ip-172-31-5-79 ~]$ sudo yum -y install httpd
[ec2-user@ip-172-31-5-79 ~]$ sudo systemctl start httpd
[ec2-user@ip-172-31-5-79 ~]$ sudo systemctl status httpd
[0m httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-08-10 04:17:14 UTC; 1s ago

 

- 이제 퍼블릭 ip를 통해 웹 서버에 접속하려 하면 아래와 같이 연결할 수 없음이 표시된다.

웹 서버에 접속이 안될 때 생각해야 할 것은 크게 두 가지다.

 

1. Service가 잘 실행되고 있는가?

2. Port가 잘 열려있는가?

 

조금 전 systemctl start httpd 명령어를 통해 Service를 실행시켜주었고, active 돼있는 것을 확인했다.

이제 port가 잘 열려있는지 확인해보자.

 

- 다시 인스턴스 세부정보에서 [보안] 탭을 클릭하여 [인바운드 규칙]을 살펴보자.

22번 포트(SSH)는 잘 등록돼있어 외부 접속이 가능했지만 웹 접속을 위한 80포트가 등록돼있지 않다.

 

- 보안 그룹을 클릭하여 [Edit inbound rules]를 클릭한다.

 

- [규칙 추가]를 통해 80번 포트를 추가해준다.

 

- 다시 브라우저를 열어 퍼블릭 ip 주소를 입력해보자.

정상적으로 잘 접속된다.

 

Step4. EC2 백업 및 복원하기

이렇게 웹 서버가 설치된 인스턴스는 AMI(Amazon Marchine Image) 기능을 통해 백업과 복원이 가능하다.

 

- 아래와 같이 이미지를 생성해준다.

- 적당한 이름을 주고 [이미지 생성]을 클릭한다.

- [AMI]에서 이미지가 생성되고 있는 것을 확인한다.

이 작업은 시간이 다소 소요된다.

- 생성이 완료되면 [시작하기] 버튼이 활성화된다.

- [태그]에서 인스턴스 구분을 위해 Server 2 태그를 추가한다.

 

- 보안그룹 또한 새로 생성하지 않고 아까 만들어두었던 Web Server 보안그룹을 선택한다.

- 키 페어 또한 기존 키페어를 사용한다.

- AMI를 이용한 인스턴스가 만들어졌다.퍼블릭 ip로 접속해보자.

 

- 정상적으로 웹 페이지가 표시된다.

 

Step5. EBS Volume 확장하기

마지막으로 처음 만들었던 인스턴스의 Volume을 확장해보자.

 

- [볼륨] 탭에서 [볼륨 수정]을 클릭하여 8GB -> 10GB로 수정한다.

 

- 확장된 용량을 바로 사용할 수 있지만, 모두 반영될 때까진 속도가 느릴 수 있다.

또한 콘솔에 접속하여 추가 파티션 작업이 필요하다.

 

- lsblk 명령어를 통해 볼륨 상태를 확인해보면, 용량은 10G이지만 파티션에는 8G만 할당돼있다.

[ec2-user@ip-172-31-5-79 ~]$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  10G  0 disk 
└─xvda1 202:1    0   8G  0 part /

 

- sudo growpart /dev/xvda 1 명령어를 통해 파티션의 용량을 확장해준다.

여기서 숫자 1은 파티션 넘버이다.

[ec2-user@ip-172-31-5-79 ~]$ sudo growpart /dev/xvda 1
CHANGED: partition=1 start=4096 old: size=16773087 end=16777183 new: size=20967391 end=20971487
[ec2-user@ip-172-31-5-79 ~]$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  10G  0 disk 
└─xvda1 202:1    0  10G  0 part /

 

+ 실습이 완료된 후에는 인스턴스를 꼭 삭제해주고 AMI, 스냅샷도 함께 삭제해준다.

대시보드를 확인하면서 지워지지 않는 게 있는지 꼭 확인해준다.

(보안 그룹, 키 페어는 과금요소가 아니지만 불필요한 요소이니 삭제)

 

Step6. 인스턴스에 EIP(Elastic IP) 할당하기

인스턴스를 생성하면 public ip 하나가 할당된다.

그러나 중지 -> 시작하거나, 재부팅되는 경우 public ip가 변경되기 때문에 고정된 IP를 부여해야 할 경우

Elastic IP를 할당해준다.

 

- [탄력적 IP 주소 할당]을 클릭해준다.

 

- [할당]을 클릭하면 아래와 같이 공인 IP 주소가 할당된다.

 

- 이 EIP를 EC2 인스턴스에 할당해야 하기 때문에 [탄력적 IP 주소 연결]을 클릭한다.

릴리스는 더이상 EIP가 필요하지 않아서 반환해야 할 때 클릭한다.

인스턴스에 할당되지 않고 놀고 있는 EIP에 대해선 AWS의 과금 요소 중 하나이다.(공인ip 낭비 방지)

 

- 이제 인스턴스에 연결해보자

연결할 인스턴스를 클릭한 후 [연결]을 클릭한다.

 

- 인스턴스에 고정된 EIP가 할당된 것을 확인할 수 있다.

인스턴스를 삭제해도 EIP는 삭제되지 않으므로, 꼭 릴리스를 통해 수동으로 삭제해준다.

'AWS' 카테고리의 다른 글

AWS CLI를 통한 Amazon S3 데이터 업로드  (0) 2021.08.11
VPC_hands-on  (0) 2021.08.10
S3_hands-on  (0) 2021.08.10
AWS CloudWatch를 통한 장애 탐지 및 모니터링  (0) 2021.07.21
VPC(Virtual Private Cloud)란?  (0) 2021.07.21