본문 바로가기
멀티 클라우드 인프라(AWS & 테라폼)

AWS 1

by 윤라경 2024. 10. 6.

[2024.09.21]

 

1) AWS

 

AWS(Amazon Web Services)

- 개인 사용자 또는 기업에게 클라우드 서비스를 제공하는 업체

 

 

 

2) 클라우드 컴퓨팅

 

 

 

3) 클라우드 컴퓨팅 이점

 

> 클라우드 서비스 장점

- 비용 절감

- 시간 단축

- 통합 운영 관리

 

 

 

3) 클라우드 컴퓨팅 유형

 

> 온-프레미스(On-Premise): 기업의 서버를 자체적으로 보유하고 직접 읶프라를 구축하는 방식

 

① 서비스형 프라(IaaS: Infrastructure as a Service)

② 서비스형 플랫폼(PaaS: Platform as a Service)

③ 서비스형 소프트웨어(SaaS: Software as a Service)

 

*비용 면에서는 IaaS에 비해 PaaS, SaaS가 가격이 높게 책정됨

 

 

 

4) 클라우드 컴퓨팅 배포 모델

 

 

 

5) AWS 글로벌 인프라

 

> 리전: AWS 클라우드를 가지고 있는 지역

> 가용 영역: 해당 리전 안에 보유하고 있는 AWS 데이터 센터

 

 

 

6) AWS 프리티어

 

> 무료로 사용할 수 있는 리소스

 

 

 

3. AWS에서 사용하는 심볼 및 용어 정리

 

1) 그룹

 

> AWS 환경에 대한 그림을 그릴 때 그림을 그리는 방식 및 그림에 그릴 때 필요한 아이콘이 제공됨

 

*파일은 강사님께서 압축 파일에 넣어 주신 파워포인트

 

 

https://app.diagrams.net 해당 링크로 접속하게 되면 위와 같은 화면이 나온다

사용자 기기를 누르고

 

 

다이어그램 만들기 화면이 나오고 만들기를 선택한다

 

 

만들기 선택 시 그림 그리는 칸이 먼저 나오게 된다

좌측 하단의 그 외 도형을 선택하면 AWS에 대한 아이콘이 나오며,

AWS 2024를 클릭하면 2024 버전의 아이콘과 도형들이 나오게 된다

 

 

리전: AWS 클라우드를 가지고 있는 지역

Availability Zone(가용 영역): 해당 리전 안에 보유하고 있는 AWS 데이터 센터

Security group(방화벽): 보안 솔루션

VPC: AWS 계정에게 할당하는 가상 네트워크

Private Subnet: 외부에서 접근이 불가능한 네트워크

Public Subnet: 외부에서 접근이 가능한 네트워크

EC2: 가상 시스템

ex) 만약 EC2를 4개를 만든다고 하면, Auto Scaling group을 거친 다음

4개의 EC2가 만들어지며, Auto Scaling group은 그런 역할을 맡고 있다

 

 

이런 식으로 AWS / Group을 통해 그림을 그릴 수 있다

대충 설명한 것들의 형태를 보면 이런 식이라고 보면 된다

 

 

EC2의 경우에는 네트워크 안에 들어가 있는 형태를 띄고 있다

 

 

2) 서비스 및 지역

 

 

우리나라의 경우에는 가용 영역이 4개가 있다

 

 

3) 서버 및 스토리지

 

 

S3, EBS, EFS의 경우 데이터를 저장하는 스토리지라고 보면 되고,

Route 53은 DNS로 53의 DNS 포트 번호를 따서 Route 53이다

 

 

4) 네트워크

 

 

 

왼쪽에서 아이콘을 찾을 수 있고 각각 EC2와 INTERNET GATEWAY다

 

 

다이어그램에서는 이런 형태를 띄고 있고 

 

 

NAT GATEWAY를 이용하여

 

 

NAT GATEWAY를 퍼블릭 쪽에 만들면 프라이빗 쪽에 있는 EC2는

NAT GATEWAY를 통해서 인터넷을 할 수 있다고 보면 된다

만약 NAT GATEWAY를 만들지 않으면 프라이빗에 있는 EC2는 인터넷 사용이 불가하다 

 

 

5) 데이터베이스

 

 

RDS의 경우 데이터베이스로 선택하여 사용할 수 있다

 

 

6) 인증 및 보안

 

 

MFA Token의 경우 OTP와 같은 일회용 패스워드라고 보면 된다

 

7) 관리 및 로그

 

 

IaC 코드를 이용하여 인프라를 만드는 서비스인데,

AWS에서는 CloudFormation이라는 서비스를 제공한다

또한, CloudWatch의 경우 이벤트나 로그를 모니터링하는 서비스다

 

 

4. 클라우드 스토리지 유형

 

1) 블록 스토리지(Block Storage)

 

 

블록 스토리지는 주차장이라고 생각하면 고유 주소라고 생각하면 된다

 

 

2) 파일 스토리지(File Storage)

 

 

파일 안에 디렉터리, 디렉터리 안의 디렉터리로 데이터를 저장하는 방식이다

 

 

3) 객체 스토리지(Object Storage)

 

 

주로 사용하는 것은 객체 스토리지다

파일 스토리지는 계층적 구조로 데이터를 저장한다면,

객체 스토리지의 경우 평면 구조로 데이터를 저장하는 방식이다

 

 

aws에서 S3를 검색하여 사용할 수 있다

S3가 객체 스토리지고, S3 안에 버킷을 생성할 수 있는데

버킷은 S3 안의 데이터를 저장할 때 사용하는 단위다

 

 

버킷 만들기를 선택하고 화면과 동일하게 입력해 준다

 

 

그런 다음 버킷 목록에서 확인하게 되면 mybucket-xcfoppa라는 버킷이 존재한다

 

 

aws에서 데이터를 저장할 수 있는 하드 디스크를 하나 만들었다고 생각하면 된다

파일을 업로드할 수 있는데 임의의 이미지 파일을 업로드하고

 

 

확인해 보면 파일이 정상적으로 업로드가 되었다

다운로드도 가능하며, 열기를 누르면 바로 이미지가 뜨는 것을 확인할 수 있다

 

 

이번에는 EC2의 인스턴스르 만들기 위해 인스턴스 시작을 누른다

 

 

이름은 myserver로 지정한다

 

 

ami 이미지라고 해서 ec2 인스턴스 가상 시스템에 사용할 운영체제 이미지이다

이 수업에서는 아마존 리눅스를 사용하고, 아마존 리눅스는 레드햇 계열이다

 

 

인스턴스 유형의 경우에는 가상 시스템으로 보면 된다

 

 

이런 식으로 여러 가지의 유형이 존재한다

고사양을 사용할수록 시간 당 요금을 지불하도록 되어 있다

이번 수업에서는 t2.micro를 사용하려고 한다

 

 

키 페어는 ec2를 만들면 본인의 pc에서 ssh로 접속을 하게 되는데,

키 페어가 있으면 아이디만 있으면 바로 접속할 수 있다

키 페어를 입력하여 로그인할 시 보안 상으로 더 안전하다고 생각하면 된다

 

 

새 키페어 생성을 눌러 화면과 같이 설정을 하고 키 페어 생성을 한다

 

 

MyKeypair에 대한 암호는 ssh 접속 시 필요하기 때문에

따로 키 폴더에 저정해 둔다

 

 

생성이 완료되었다면 로그 시작 부분에서 모두 성공이라는 문구가 나타난다

 

 

모든 인스턴스 보기를 클릭 후 새로고침을 하게 되면,

인스턴스 부분에 키 페어가 실행 중에 있고 상태 검사가 현재 초기화로 되어 있는데

초기화 상태에서 1~2분만 기다리면  검사 통과라고 변경된다

그때 작업을 이어서 진행하면 된다

 

*생성되는 시간은 몇 초밖에 걸리지 않지만,

실제 완벽하게 동작하는 데까지는 1~2분 걸린다고 생각하면 된다

 

 

이제 연결을 하기 위해 해당 인스턴스를 선택후 연결을 누른다

 

 

연결을 누르면 다양하게 연결이 가능하도록 되어 있는데,

현재는 EC2 연결을 하려고 한다

EC2 연결은 SSH를 통해 접속하게 된다

 

 

그 상태로 연결을 누르게 되면 내가 만든 가상 시스템에 접속된다

 

 

접속된 상태에서 $의 표시는 일반 사용자 표시로,

sudo -s의 명령어를 입력하여 #으로 바뀌게 되면 root 권한이 부여된 것이다

 

 

아마존 리눅스는 레드햇 계열로

CentOs7과 Rocky Linux, 페도라 등과 비교했을 때 별반 다른 점은 없다

 

 

본인의 aws.user1의 access key와 secret key를 입력하면 연동이 되면서

사용자의 버킷 목록을 확인할 수 있다

 

 

새로운 버킷을 만들기 위해 mb 명령어를 사용하여 생성했다

mb는 make bucket의 약자로 버킷을 만들겠다는 뜻이다

현재 사용하는 명령는 리눅스 명령어가 아니라 aws cli라는 명령어다

아마존 리눅스에는 이 명령어가 기본적으로 사용할 수 있으며,

기존 리눅스에서 사용할 때에는 아마존 리눅스의 명령어를 설치를 해야 사용할 수 있게 된다

 

 

파일 업로드를 위해 임의의 파일을 다운로드받고,

그런 다음 mybucket-xcfoppa-1234에 다운로드받은 이미지를 업로드한다

 

 

1234에 test.txt 파일을 생성하고,

다시 그 파일을 업로드하게 되면 xcfoppa-1234 버킷에 파일이 존재한다

 

 

다시 콘솔 홈으로 돌아와 즐겨찾기의 S3를 눌러 이동한다

이동하게 되면 버킷 목록에 mybucket-xcfoppa-1234가 생성된 걸 확인할 수 있다 

 

 

새로 만든 버킷에 들어가면 내가 업로드했던 파일도 그대로 나온다

 

 

EC2의 인스턴스도 삭제하려고 하는데,

삭제할 목록을 선택 후 인스턴스 상태 -> 종료(삭제)를 누른다

누르고 나면 종료됨으로 변경되면서 삭제되었다는 뜻이지만,

완전히 삭제되는 것까지는 1~2시간 정도 걸린다

 

 

5. AWS VPC 구성

 

1. VPC 다이어그램 제작

 

 

 

 

2. VPC 생성

 

1) VPC 생성

 

 

 

콘솔 홈에서 VPC를 검색 후 즐겨찾기로 저장한다

 

 

VPC 이름을 MyVPC01으로 설정한다

 

 

사용 가능한 상태가 되어 있고, DNS 호스트 이름은

필수는 아니지만 해당 DNS 호스트 이름을 사용하게 하는 게 권장 사항이기 때문에 수정한다

 

 

2) DNS 호스트 이름 활성화

 

 

DNS 호스트 이름 활성화를 위해 VPC 설정 편집을 누르고,

DNS 호스트 이름 활성화 칸을 체크한다

 

 

3) 라우팅 테이블 확인

 

 

 

6. 인터넷 게이트웨이 생성 및 VPC 연결

 

1) 인터넷 게이트웨이 생성

 

 

 

2) 인터넷 게이트웨이 VPC 연결

 

 

 

7. 퍼블릭 서브넷 생성

 

 

서브넷 생성에서는 기본값이 아닌 MyVPC01을 선택한다

MyVPC 안에 서브넷을 하나 만든다는 뜻으로 보면 된다

 

 

다음은 서브넷 이름을 MyPublicSubnet으로 설정한다

가용 영역의 경우 네 개의 영역이 나오게 되는데,

이때 ap-northeast-2는 리전 이름이고,

가용 영역의 이름은 a, b, c, d 순으로 나오기 때문에 2a, 2b, 2c, 2d로 나오게 된다

순서기 때문에 현재는 2a로 선택해 준다

 

 

IPv4에 10.0.1.0/24의 IP를 입력한다

 

 

서브넷이 잘 만들어졌는지 확인하고

 

 

서브넷 선택 후 작업 -> 서브넷 설정 편집으로 들어간다 

 

 

해당 부분을 체크해야 MyPublicSubnet에 생성되는 EC2 인스턴트에 공인 IP가 할당된다

공인 IP를 할당받아야 외부에도 접속할 수 있다

 

*퍼블릭 IP(= 공인 IP)

 

 

8. 퍼블릭 라우팅 테이블 생성

(퍼블릭 서브넷 연결 및 인터넷 게이트웨이 기본 경로 등록)

 

1) 퍼블락 라우팅 테이블 생성

 

 

 

2) 퍼블릭 서브넷 연결

 

 

연결되어 있는 서브넷이 없기 때문에

명시적 연결이 없는 서브넷을 확인하면 PublicSubnet이 존재하는데,

이 서브넷을 명시적 서브넷 연결에 연결해 줘야 된다

 

 

연결하기 위해 명시적 서브넷 연결의 서브넷 연결 편집을 누른 다음

MyPublicSubnet을 선택하고 연결 저장

 

 

이게 의미하는 것은 MyPublicSubnet에서 사용한다는 의미이다

 

 

3) 인터넷 게이트웨이 기본 경로 등록

 

 

0.0.0.0/0의 의미는 목적지가 IP 전체가 된다는 뜻이다

대상을 열어 인터넷 게이트웨이를 선택하고, 그 아래는 MyIGW를 선택한다

목적지가 무엇이 되든 무조건 MyIGW(인터넷 게이트웨이)에게 보내겠다는 뜻이 된다

 

 

앞으로 MyPublicSubnet에 생성되는 시스템들은 모두 MyIGW에게 보낸다

목적지가 10.0대면 VPC 안에 있는 시스템에 보내게 되고,

그 외의 나머지 것들은 모두 인터넷 게이트웨이로 보내게 된다

 

 

9. 퍼블릭 보안 그룹 생성

 

1) 보안 그룹 생성

 

 

보안 그룹 -> 보안 그룹 생성을 눌러 준 다음 화면과 같이 설정한다

설명에는 아무거나 적어도 되지만, 현재 HTTP, HTTPS, SSH, ICMP를 허용하려고 하기 때문에

메모한다는 느낌으로 적어 준다

 

 

인바운드 규칙을 설명하자면 출발지(0.0.0.0/0)가 뭐가 되든 유형의 접속을 허용한다는 뜻이다

이것을 사용자 지정 후 IP를 선택하게 되면, 출발지 IP가 100.1.1.0/24만 HTTP의 접속을 허용한다는 뜻이 된다

 

 

마지막으로 태그 추가까지 하고 보안 그룹 생성을 누른다

 

 

2) 보안 그룹 인바운드/아웃바운드 규칙 확인

 

 

새로고침 후 다시 보게 되면 MyPublicSecugroup이 생성되었고,

선택 후 아래의 인바운드 규칙을 눌러 확인하게 되면

아까 생성했던 인바운드의 접속 허용란을 확인할 수 있다

 

10. 퍼블릭 서브넷 EC2 인스턴스 생성

 

2) EC2 인스턴스 구성

 

 

이번에는 기존 t2가 아닌 t3.micro를 선택한다

 

 

아래의 고급 세부 정보를 펼쳐서 사용자 데이터를 설정한다

 

 

사용자 데이터에는 EC2 인스턴스 아마존 리눅스가 생성되면서 실행할 스크립트를 넣는다

 

호스트이름 설정

루트 계정 패스워드 설정

암호 인증 방식 설정

root 사용자 접근 허용

sshd 재시작

'index.html' 파일 제작

아파치 웹 서버 설치 및 시작

 

위의 명령어를 차례대로 설명하자면 위와 같다

 

 

인스턴스 생성을 눌러 주면 인스턴스가 생성된 걸 확인할 수 있다

이 부분도 상태 검사에서 초기화 -> 통과까지 1~2분 정도가 걸린다

 

 

11. 퍼블릭 EC2 인스턴스 접속 및 통신 테스트

 

1) 'MyWeb1' EC2 인스턴스 공인 IP 주소 및 DNS 이름 확인

 

 

 

2) 'MyWeb1' EC2 인스턴스 HTTP 접속 테스트

 

 

대한민국의 어딘가에서 나의 웹 서버가 생겼다고 보면 된다

 

 

핑을 돌려도 정상적으로 돌아가는 것을 확인할 수 있다

 

 

3) 'MyWeb1' EC2 인스턴스 연결

 

 

 

4) 'MyWeb1' SSH 클라이언트 연결

 

 

외부에서의 접속이 되는지 유무를 확인하기 위해 PuTTY를 사용한다

퍼블릭 IP 주소를 입력하고

 

 

Connection -> SSH -> Auth -> Credentials 경로에서

키 페어로 넣었던 키 페어 문서를 선택한다

 

 

그런 다음 Open을 누르고 ec2-user로 접속하게 되면 키 페어 문서로 바로 접속이 가능하다

 

 

5) 'MyWeb1' EC2 직렬 콘솔 연결

 

 

EC2 직렬 콘솔로도 연결이 가능하여 직렬 콘솔로 접속했다

 

 

접속 후 root로 로그인하게 되면 정상적으로 로그인이 가능한 것을 볼 수 있다

 

 

12. NAT 게이트웨이 생성

 

1) NAT 게이트웨이 생성

 

 

탄력적 IP의 경우도 공인 IP로 보면 되는데

탄력적이라고 하면 그 IP를 할당받은 IP를 계속 쓰겠다는 뜻이다

 

 

2) NAT 게이트웨이 생성 확인

 

 

 

13. 프라이빗 서브넷 생성

 

 

 

14. 프라이빗 서브넷 라우팅 테이블 생성

 

1) 프라이빗 라우팅 테이블 생성

 

 

 

2) 프라이빗 서브넷 연결

 

 

3) NAT 게이트웨이 기본 경로 등록

 

 

 

15. 프라이빗 보안 그룹 생성

 

1) 보안 그룹 생성

 

 

 

2) 보안 그룹 인바운드/아웃바운드 규칙 확인

 

 

 

16. 프라이빗 서브넷 EC2 인스턴스 생성

 

1) EC2 인스턴스 구성

 

 

여기에서도 퍼블릭 서브넷과 같이 고급 세부 정보에서 사용자 데이터를 입력한다

 

 

2) 프라이빗 EC2 인스턴스 생성 확인 및 접속/통신 테스트

 

 

핑이 돌아야 정상이지만 문제가 있어 현재는 정상적인 작동이 되지 않는다

하지만 현재의 단계에서는 핑이 돌아가야 되는 게 맞다 

 

 

프라이빗의 경우 연결이 불가하여 EC2 직렬 콘솔 연결밖에 방법이 없다

 

 

직렬 콘솔로 연결한 다음 root로 로그인하여

프라이빗 IP를 이용하여 핑을 돌렸을 때 정상적으로 통신이 가능하다

 

 

curl을 통해서도 통신이 가능한 것을 확인할 수 있다

 

 

MyWeb1과 11 둘 다 작업 -> 인스턴스 설정 -> 인스턴스 메타데이터 옵션 수정에 들어가서

IMDSv2 부분을 Optional로 변경시켜 준다

 

 

MyWeb1로 EC2 인스턴스 연결을 통해 접속하고,

화면의 명령어를 입력해 주면 해당 인스턴스에 대한 속성 정보를 확인할 수 있다

 

좌 퍼블릭 우 프라이빗

 

프라이빗 ip나 등등을 웹 브라우저로 확인할 수도 있지만,

이런 식으로 확인해야 하는 경우도 있어 방법만 알고 있으면 된다

 

 

마지막으로 실습을 마치면 항상 삭제시키는 게 좋다

t2의 경우 그대로 둬도 상관없지만, 현재 t3를 사용했기 때문에

사용하는 시간 당 요금이 지불될 수 있어 먼저 NAT 게이트웨이부터 삭제를 진행했다

삭제를 하게 되면 상태가 Deleting에서 Deleted가 되기까지 2분 정도 소요된다

 

 

탄력적 IP 주소도 반드시 삭제시켜야 되는데,

작업의 탄력적 IP 주소 릴리스를 진행하면 된다

NAT 게이트웨이를 삭제시켰어도 진행되는 시간이 있어 이것 또한 기다린 후

릴리스의 버튼이 활성화가 된다면 그때 진행하면 된다

 

 

EC2로 넘어가서 두 개의 인스턴스 모두 삭제를 진행했다

 

 

VPC의 경우에는 VPC 자체를 삭제하게 되면

서브넷, 라우팅 테이블, 인터넷 게이트웨이, 보안 그룹까지 모두 같이 삭제되어 편리하다

마지막으로 리소스 맵을 살펴보게 되면 위의 과정을 통해 많은 것을 만들었지만,

결국 하고자 하는 건 리소스 맵의 형식으로 진행되었던 것이다

 

 

VPC를 선택 후 삭제를 누르게 되면 삭제하려는 서브넷, 라우팅 테이블 등등이 나타난다

삭제를 진행하려면 삭제를 입력하고 이것도 2분 정도 소요되고 완전히 삭제된다

 

 

 

강의 소감

오늘은 멀티 클라우드 인프라의 첫 시간이었다

여덟 시간이라는 긴 시간 동안 클라우드에 첫발을 내딛었다

먼저 AWS부터 배우는 만큼 AWS가 뭔지 클라우드 컴퓨팅에는 어떤 게 있는지부터

AWS 리눅스를 통해 실습도 진행하고 다이어그램 생성도 했다

처음 가입부터 시스템 사용법까지 간단히 익힌 후

큰 리전 안의 VPC와 그 안의 서브넷, 인터넷 게이트웨이를 만드는 실습을 진행했다

 

출처 -  코리아it아카데미 김정우 강사님 제공

 

*중간에 나오는 교재의 단편적인 면이 아닌

아마존으로 실행하여 캡처한 것은 모두 본인이 직접 실행해 보고

캡처하여 블로그에 작성하는 것입니다

'멀티 클라우드 인프라(AWS & 테라폼)' 카테고리의 다른 글

AWS 2  (2) 2024.10.22