AWS 인프라 구축 실습 3회 - Route53, EBS
AWS 인프라 구축 실습 3회 - Route53, EBS
1. Route 53
확장가능한 DNS 및 도메인 이름 등록. 최종 사용자를 인터넷 어플리케이션으로 라우팅하는 안정적이고 비용 효율적인 방법이라고 안내하고 있습니다.
53이라는 번호는 DNS UDP port 53을 의미합니다. 라우트 53은 ip와 도메인을 매핑(연결)하는 기능을 담당하고 있습니다.
이를 위해서는 영역생성이라는 (A record 생성) 작업이 필요합니다.
이 실습을 위해서 도메인을 먼저 구매해야 합니다.
HTTPS 보안 연결에는 인증서 도메인이 필요합니다.
이제, 도메인등록 사이트에 가서 도메인을 등록합니다.
도메인 관련 설정은 시간이 좀 필요한 작업입니다.
등록한 도메인이 사용가능하기 까지 몇분에서 몇 십분이 필요할 수 있기 때문에, 도메인 설정에 관한 작업은 우선적으로 처리하는게 좋습니다.
저는 도메인을 'sbrich.shop'으로 준비하였습니다. 앞으로 이 도메인을 사용해서 테스트 하도록 하겠습니다.
1.1. Route53 메뉴
Route53 대시보드로 이동합니다.
1.2. 호스트 영역 생성
도메인이름 : 'sbrich.shop' 을 입력하고 생성합니다.
생성된 결과는 유형이 'ns', 'soa' 가 생성됩니다.
여기에 나온 값을 도메인 등록사이트의 Name Server 에 등록합니다.
참고 : 호스팅 영역당 등록 12시간 후부터는 과금시작이 됩니다. 0.5$/월 입니다. 실습 중에는 참고 하세요.
도메인 설정이 되었으니 다음 과정으로 이동합니다.
2. EBS
2.1. EBS Storage Service
Block Storage Service 단위는 hdd/ssd 디바이스의 드라이브(볼륨) 단위입니다.
기본 스토리지 구성은
1) 블록 스토리지 (os, app)
2) 객체스토리지
3) 파일 스토리지 (file, etc)
2.1.1. 레코드 생성
서울리전에 EC2 인스턴스('my-web-01')를 생성하고 public IP 를 복사합니다.
public ip : 52.78.34.244
레코드 이름 : web01
레코드 유형 : A-IPv4
참고 : cname 도메인과 도메인 연결
값 : 52.78.34.244
레코드 생성합니다.
도메인 web01.sbrich.shop 접속 테스트를 브라우저에서 해봅니다.
'볼륨'의 경우 운영 중에 추가(마운트)/제거(언마운트)가 가능합니다.
EC2 메뉴의 EBS에서 볼륨 메뉴를 선택합니다.
$ ping web01.sbrich.shop
$ ssh web01.sbrich.shop
2.1.2. 웹 서버를 설치
볼륨에 웹 서버를 설치합니다. 볼륨 마운트 현황을 확인합니다.
* lsblk 명령을 사용하면 사용 가능한 디스크 디바이스 및 마운트 포인트(해당하는 경우)가 표시되어 사용 가능한 올바른 디바이스 이름을 결정하는데 도움을 받을 수 있습니다. lsblk 명령의 출력에서는 전체 디바이스 경로 중 맨 앞에 /dev/ 가 생략됩니다.
# 설치, 실행, 데몬 등록
$ sudo yum install -y httpd
$ sudo systemctl start httpd
$ sudo systemctl enable httpd
# index.html 만들기
$ cd /var/www/html
$ vi index.html
webserver
# 웹 페이지 확인
# 볼륨 정보 보기
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 482M 0 482M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 464K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 1.5G 6.6G 19% /
tmpfs 99M 0 99M 0% /run/user/0
tmpfs 99M 0 99M 0% /run/user/1000
# 볼륨 마운트 정보
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
2.1.3. 볼륨 생성
EBS > 볼륨 메뉴로 이동합니다. 볼륨생성에는 동일 가용영역(AZ)이어야 합니다.
볼륨 생성 버튼을 클릭하고 볼륨을 생성합니다.
2.1.4. 볼륨을 EC2에 연결을 선택합니다.
인스턴스를 EC2로 선택하고 연결합니다.
2.1.5. 볼륨 보기
xvdf는 아직 탑재되기 전 볼륨입니다.
(file -s 명령은 파일 시스템 유형 등의 특정 디바이스 정보를 확인할 수 있습니다.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 1G 0 disk
# 1) 포맷 (xfs 보다 호환성 좋은 ext4 사용)
$ sudo mkfs -t ext4 /dev/xvdf
# 2) 마운트
$ sudo mkdir /data
# device 와 마운트할 data 연결
$ sudo mount /dev/xvdf /data
# 3) 마운트 확인
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 482M 0 482M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 468K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 1.5G 6.6G 19% /
tmpfs 99M 0 99M 0% /run/user/0
tmpfs 99M 0 99M 0% /run/user/1000
/dev/xvdf 976M 2.6M 907M 1% /data
2.1.6. 원본 백업
# EC2 리부팅 후 연결된 볼륨을 자동으로 탑재하기(unmount 방지)
# /etc/fstab 파일의 백업 생성
$ sudo cp /etc/fstab /etc/fstab.orig
$ sudo blkid
/dev/xvda1: LABEL="/" UUID="55ee5a5f-d155-47e0-9121-e6f4522cb2bf" TYPE="xfs" PARTLABEL="Linux" PARTUUID="a9bb03dd-5c0b-4ec4-b2b6-a2f146781286"
/dev/xvdf: UUID="2921a4c8-7a49-409f-bc06-bc398e3fb6a6" TYPE="ext4"
# Ubuntu 18.04의 경우 lsblk 명령을 사용합니다.
# 마운트된 드라이브 uuid를 복사
# sample : UUID="2921a4c8-7a49-409f-bc06-bc398e3fb6a6"
$ sudo vi /etc/fstab
# 새 라인에 추가 후 저장 [nofail:볼륨 탑재 시 오류가 있어도 부팅]
UUID="baa87aee-1528-46c7-aaff-d8c63be2af3f" /data ext4 defaults,nofail 0 2
# 지금까지 EC2에 마운트한 볼륨입니다.
# 마운트 해제 (디바이스 데이터는 살아있음)
$ sudo umount /data/
# 확인
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 482M 0 482M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 472K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 1.5G 6.6G 19% /
tmpfs 99M 0 99M 0% /run/user/0
tmpfs 99M 0 99M 0% /run/user/1000
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 1G 0 disk
2.1.7. 다른 인스턴스에 마운트 하기
볼륨을 분리
AWS 볼륨 페이지에서 선택한 볼륨
작업 팝업 메뉴에서 볼륨 분리 선택하여 볼륨을 분리합니다.
분리된 볼륨은 다음과 같이 표시됩니다.
2.2. EBS Snapshot
현재 상태를 백업(다른말로 타임머신)하고 다른 리전으로도 보낼 수 있는 기능입니다.
스냅샷의 용도는 '볼륨생성'과 '이미지생성'입니다.
'볼륨 생성'은 데이터 용도를 위한 것이고 '이미지 생성'은 os, app 와같은 용도입니다.
그러면, 먼저 스냅샷 생성을 해볼까요.(스토리지를 다른 리전으로 복사하기를 해볼려고 합니다)
2.2.1. EC 인스턴스 생성
EC2 메뉴로 가서 EC2 인스턴스를 생성합니다.
ubuntu 18.04로 VPC: 'my-vpc', subnet : ap-northeast-2c, 퍼블릭IP자동설정: 활성화,
사용자데이터에 명령어를 입력하여 web server 2도 설치합니다.
#!/bin/bash
apt-get update
apt-get install -y apache2
echo "web02" > /var/www/html/index.html
이제, web01, web02 두개의 EC2가 생성되었습니다.
2.2.2. 스냅샷 생성
볼륨 메뉴에서 스냅샷 생성을 클릭합니다.
name tag는 'add-vol-snapshot' 로 합니다.
스냅샷 메뉴 확인
생성된 'add-vol-snapshot' 확인
시간이 지나면 상태는 '완료'로 변경됩니다.
2.2.3. 스냅샷 복사
스냅샷 복사 기능은 리전을 변경하여 사용할 수 있습니다. 통신 데이터에 대해서는 사용량이 유료입니다. 참고하세요.
2.2.4. 볼륨 생성
복사된 스냅샷으로 볼륨을 생성합니다.
가용영역을 'ap-northeast-2c' (web02)로 마운트할 예정입니다.
2.2.5. 볼륨연결
생성된 볼륨을 '볼륨연결'로 'web02'에 연결합니다.
EC2 인스턴스에서도 볼륨이 연결된 것을 확인가능합니다.
2.2.6. 마운트하기
web02 터미널에서 확인합니다.
# 확인
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 476M 0 476M 0% /dev
tmpfs 98M 772K 98M 1% /run
/dev/xvda1 7.7G 1.4G 6.4G 18% /
tmpfs 490M 0 490M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 490M 0 490M 0% /sys/fs/cgroup
/dev/loop0 33M 33M 0 100% /snap/snapd/11588
/dev/loop1 56M 56M 0 100% /snap/core18/1997
/dev/loop2 34M 34M 0 100% /snap/amazon-ssm-agent/3552
tmpfs 98M 0 98M 0% /run/user/1000
# 확인
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 32.3M 1 loop /snap/snapd/11588
loop1 7:1 0 55.5M 1 loop /snap/core18/1997
loop2 7:2 0 33.3M 1 loop /snap/amazon-ssm-agent/3552
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 8G 0 disk
└─xvdf1 202:81 0 8G 0 part
# 마운트하기(ubuntu)
$ sudo mkdir /test
$ sudo mount /dev/xvdf /test
# 마운트 해제하기 (마운트 경로 외에서 작업하세요)
$ sudo umount /test/
2.3. 이미지 생성
부트볼륨을 '스냅샷' 생성하고 '스냅샷' 이미지를 생성합니다.
이미지 > AMI 페이지로 이동
이미지가 생성되었습니다.
2.4. 인스턴스 복원
2.4.1. 인스턴스 생성
인스턴스 > 인스턴스 시작
인스턴스 단계1 에서 '나의 AMI'를 선택
EC2 생성
* key 분실 경우 유용함. 새 키 페어 생성 (키 분실 시 : snapshot 생성 > 이미지 생성 > 인스턴스 생성 > route53에서 도메인 연결)
AWS 인프라 구축 실습 3회 - Route53, EBS에 대하여 알아봤습니다.
다음 회에는 IAM에 대하여 알아보겠습니다.