카이도스의 Tech Blog
1주차 - AWS & 컴퓨트 서비스 본문
모든 교육은 가시다님의 도움으로 진행됩니다.
- 참고 링크
- AWS Site - 클라우드 컴퓨팅 소개
- Youtube AWS Korea - AWS와 함께하는 클라우드 컴퓨팅
- YouTube 생활코딩 - EC2 기본 사용법
- AWS EC2 Connect - 링크
- 🧗🏻(심화) Youtube (AWS Korea) AWS Builders - 컴퓨트서비스 네트워크서비스 스토리지서비스
👨💻 (사전 지식) : SSH(생활코딩) & CLI/Shell & (심화) Linux 링크1 링크2 링크3 링크4 & (심화) HTML 링크1 링크2
1. 클라우드란?
1.1 클라우드란?
클라우드는 인터넷을 통해서 언제 어디서든지 원하는 때 원하는 만큼의 IT 리소스(컴퓨팅, 스토리지, 네트워크)를 손쉽게 사용할 수 있게 하는 서비스를 말합니다.
클라우드 서비스 종류
크게 4가지로 분류 ⇒ 스터디는 IaaS 기반 인프라('컴퓨트 네트워크 스토리지 보안')을 중심으로 진행
? 서버리스와 SaaS 의 대표적인 서비스는? (예. AWS 람다 Lambda , Dropbox)
클라우드 구현 모델 3가지
1. 퍼블릭 클라우드 ⇒ 스터디는 퍼블릭 클라우드('AWS') 환경으로 진행
2. 프라이빗 클라우드
3. 하이브리드 클라우드
2. AWS 클라우드 소개
AWS Amazon Web Services는 전 세계적으로 분포한 데이터 센터에서 다양한 서비스를 제공하고 있는 클라우드 플랫폼입니다.
AWS 제품 - 참고링크
3. 실습 전 사전 준비 사항
- AWS Free Tier 가입 후 진행
- AWS 웹 관리 콘솔 접근 : '서울 리전' 변경
-SSH 키 페어 생성 (서울 리전) : AWS EC2 → SSH 키페어
SSH 인증 방식(키 파일) 사용 : pem(권장) 선택 → 다운로드 : 이 파일은 스터디 기간 동안 실습(EC2 접속)에서 사용됨
# chmod 400 <키파일.pem>
ex) chmod 400 PJH-aws-test.pem
-'기본' VPC 존재 확인 (서울 리전) : 서비스 → VPC → 가상프라이빗 클라우드 → VPC 클릭
-('기본' VPC 가 없을 경우) ⇒ 예를 들면 '기본' VPC를 삭제한 경우 ⇒ 아래 처럼 '단일 퍼블릭 서브넷이 있는 VPC' 생성 따라하기
4. [데모 실습] EC2(가상 서버) 배포 및 사용
AWS EC2 인스턴스를 배포 후 해당 인스턴스에 웹을 통하여 SSH 접속을 하고, 웹 서비스 설치 및 확인하는 실습을 합니다.
(1) AWS 관리 콘솔에 접속 후 EC2 배포
이름:AWS-TEST, Amazon Linux 2 AMI : 64bit(x86), 퍼블릭 IP 자동 할당 활성화, 볼륨 유형(범형 SSD - gp2), 크기(8 GiB) ,
(2) SSH 통해 EC2 로 접속 및 정보 확인
# 접속
ssh -i PJH-aws-test.pem ec2-user@3.38.178.17
# 현재 접속한 사용자 확인
whoami
ec2-user
# 현재 Linux 버전 정보 확인
cat /etc/system-release
Amazon Linux release 2 (Karoo)
# CPU 확인
cat /proc/cpuinfo |egrep '(processor|name)'
processor : 0
model name : Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
# 메모리 확인
cat /proc/meminfo |grep MemTotal
MemTotal: 987912 kB
# 다양한 시스템 관련 부하 확인 툴 설치
# sudo 는 슈퍼유저의 권한으로 실행
sudo yum -y install dstat htop
# dstat 로 시스템 관련 부하 확인
# 예시) dstat -t(일시)l(평균부하)m(메모리)a(cdngy CPU Disk Network Paging System) --output (출력을 csv파일로 저장) 3(초마다)
dstat -tlma 1
----system---- ---load-avg--- ------memory-usage----- ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
time | 1m 5m 15m | used buff cach free|usr sys idl wai hiq siq| read writ| recv send| in out | int csw
03-03 07:49:00|0.07 0.05 0.01|98.5M 2088k 525M 339M| 10 2 87 2 0 0|1561k 3932k| 0 0 | 0 0 | 154 883
03-03 07:49:01|0.07 0.05 0.01|98.5M 2088k 525M 339M| 0 0 100 0 0 0| 0 0 | 52B 1412B| 0 0 | 33 55
03-03 07:49:02|0.07 0.05 0.01|98.5M 2088k 525M 339M| 0 0 100 0 0 0| 0 0 | 116B 1122B| 0 0 | 37 57
# htop 으로 CPU Memory 등 시스템 자원 확인
htop
# 프라이빗 IP 정보 확인
ip -br -c addr show
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 10.0.0.34/24 fe80::5c:60ff:fe8d:d540/64
# 퍼블릭 IP 정보 확인
curl ipinfo.io
{
"ip": "3.38.178.17",
"hostname": "ec2-3-38-178-17.ap-northeast-2.compute.amazonaws.com",
"city": "Seoul",
"region": "Seoul",
"country": "KR",
"loc": "37.5660,126.9784",
"org": "AS16509 Amazon.com, Inc.",
"postal": "03141",
"timezone": "Asia/Seoul",
"readme": "https://ipinfo.io/missingauth"
}
# 스토리지 확인 : 부트볼륨(EBS) 정보 확인
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 474M 0 474M 0% /dev
tmpfs tmpfs 483M 0 483M 0% /dev/shm
tmpfs tmpfs 483M 408K 482M 1% /run
tmpfs tmpfs 483M 0 483M 0% /sys/fs/cgroup
/dev/xvda1 xfs 8.0G 1.6G 6.5G 20% /
tmpfs tmpfs 97M 0 97M 0% /run/user/1000
# 서비스 확인
sudo netstat -nlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2615/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3215/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 3070/master
tcp6 0 0 :::111 :::* LISTEN 2615/rpcbind
tcp6 0 0 :::22 :::* LISTEN 3215/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 2875/dhclient
udp 0 0 0.0.0.0:111 0.0.0.0:* 2615/rpcbind
udp 0 0 0.0.0.0:668 0.0.0.0:* 2615/rpcbind
udp 0 0 127.0.0.1:323 0.0.0.0:* 2658/chronyd
udp6 0 0 fe80::5c:60ff:fe8d::546 :::* 2924/dhclient
udp6 0 0 :::111 :::* 2615/rpcbind
udp6 0 0 :::668 :::* 2615/rpcbind
udp6 0 0 ::1:323 :::* 2658/chronyd
# aws 메타데이터 확인
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/
(3) EC2 인스턴스에 웹 서비스 설치
# 실습의 편리를 위해서 root 계정으로 전환합니다.
# 실제 현업에서 root(관리자, 수퍼유저)로 사용은 되도록 금합니다. 하지만 실습의 경우이니 편리성을 위해서 관리자로 전환하여 진행합니다.
sudo su -
# Web 서비스를 설치합니다.
yum install httpd -y
# Web 서비스를 실행합니다.
systemctl start httpd
# 웹 페이지를 구성합니다.
# 기본 웹 페이지 디렉터리는 /var/www/html 이다.
# 아래 명령어는 본문 내용을 담아서 index.html 파일을 생성한다
## (심화) Apache는 파일에 접근 시에 디렉토리만 지정될 경우에 기본으로 반환하는 파일을 "DirectoryIndex"로 지정하며 보통 'index.html' 포함됨
echo "<h1>Test Web Server</h1>" > /var/www/html/index.html
# ls 로 파일 생성 확인
ls /var/www/html/
index.html
# cat 로 생성된 파일 내용 확인
cat /var/www/html/index.html
<h1>Test Web Server</h1>
# curl(CLI 웹 요청 명령어) 명령어로 웹 접속을 확인합니다.
curl localhost
<h1>Test Web Server</h1>
# 웹 서비스 동작 확인 - TCP 80(HTTP)를 사용
netstat -nlp | grep http
tcp6 0 0 :::80 :::* LISTEN 3553/httpd
(4) 웹 브라우저에서 해당 EC2의 퍼블릭 IP 로 접속하여 웹 서비스 접속 확인 → 문제 해결 → 재접속하여 웹 서비스 정상 접속 확인
# 퍼블릭아이피로 url 호출이 안될것이다.. 왜그럴까??
힌트는 베어메탈에서는 보통 방화벽을 먼저 확인할텐데... AWS에서는... ㅂㅇㄱㄹ을 확인해보면된다.
#문제를 해결하고 나면 아래와같이 사이트가 뜨게된다.!
'AWS' 카테고리의 다른 글
ALB- S3 로그 연동 (0) | 2023.04.04 |
---|---|
AWS MongoDB backup - S3 (0) | 2023.04.04 |
EC2-cloudwatch 로그 연동 (0) | 2023.03.29 |
2주차 - 컴퓨팅 서비스 (0) | 2023.03.07 |
AWS EC2 볼륨 증가 (0) | 2023.03.03 |