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 |