카이도스의 Tech Blog

1주차 - AWS & 컴퓨트 서비스 본문

AWS

1주차 - AWS & 컴퓨트 서비스

카이도스 2023. 3. 3. 17:04
728x90
반응형

모든 교육은 가시다님의 도움으로 진행됩니다.


👨‍💻 (사전 지식) : 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 제품 - 참고링크

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] EC2(인스턴스) 배포 및 사용

(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에서는... ㅂㅇㄱㄹ을 확인해보면된다.

#문제를 해결하고 나면 아래와같이 사이트가 뜨게된다.!

 

728x90
반응형

'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
Comments