AWS 클라우드
이론
시스템 기반이란?
- 어플리케이션을 사용자가 24시간/365일 이용할 수 있는 환경을 제공하는 기술 요소
데이터센터의 정의
- 시스템 기반 환경을 제공하기 위하여 각 구성요소를 제공하는 시설
- 거대한 규모의 시스템을 안정적으로 관리하기 위하여 모아놓고 관리
- 분류
- IDC : Internet Data Center
- CDC : Cloud Data Center
클라우드 컴퓨팅
- 개인용 컴퓨터가 아닌 원격 컴퓨터의 자원을 활용하는 기술
- 언제나, 어디서나
- 사용한 만큼의 비용 지불
기업의 인프라 구성 방식
- 온 프레미스
- 규모가 있는 기업에서 사용할 수 있는 방식
- 자체적인 데이터센터 or 서버실을 구축
- 퍼블릭 클라우드
- 인터넷을 통해 불특정 다수에게 클라우드 서비스 제공
- 초기 투자가 필요하지 않음
- 프라이빗 클라우드
- 특정 대상을 지정하여 서비스를 제공하는 클라우드 서비스
- 주로 단일 기업 또는 계열사 등 일부 기업을 대상으로 서비스를 제공하기 위하여 구축
- ex) 오픈스택
클라우드 서비스 선택시 주의 사항
- 가용성 : 완벽한 무중단이 필요한 시스템의 경우 가용성 조건 만족 불가
- 데이터의 저장 위치 : 물리적 보관 장소가 명확하여야 할 경우 이용 불가
- 특수 요건 충족 불가 : 범용적이지 않은 디바이스 및 특수한 플랫폼은 클라우드를 통해 이용 불가
- 비용에 대한 고려 필요 : 무조건 클라우드 서비스를 이용하는 것이 저렴한 것은 아님
Saas, Iaas, Paas
서버에 대한 성능 향상
- scale up/down : 서버에 대한 스펙을 올리는 것 (cpu교체,메모리 증설, ssd 사용 등)
- scale out/in : 같은 성능 요소의 수량을 증가 시키는 것
리전
- 전세계에 물리적으로 분리되어 구축된 aws서비스 지역의 분류
- 가장 가까운 위치의 리전을 사용하여 빠른 속도로 서비스 이용
- 필요에 따라 다른 리전을 선택 가능
- 우리나라에도 리전이 오픈됨
- 리전 별로 지원되는 기능이 다를 수 있다
- ex) ap-northeast-2
Availability Zone (AZ)
- 데이터센터를 의미
- 하나의 리전에 다수의 가용 영역이 존재함
- 각 가용 영역이 위치한 데이터센터는 리전 내에서 물리적으로 떨어져 있음
- 현재 우리나라의 서울 리전은 4개의 가용영역으로 구성됨
- ex) ap-northeast-2a, ap-northeast-2b ...
📒 리전 및 AZ 참고
EC2
- AWS내에서 안정적이며 조정 가능한 컴퓨팅 파워를 제공
- 인스턴스 : EC2에서 사용하는 가상화 서버
- EC2참고1, EC2참고2
스토리지
- 데이터를 저정하는 저장소의 역할을 수행하는 요소
- DAS : 직접 서버에 연결하는 저장소
- NAS : 스토리지를 네트워크로 연결, 파일 기반 스토리지
- SAN : 별도의 스트로지용 네트워크를 구성, 블록 기반 스토리지
S3
- SAN 형태이다
- 확장성이 뛰어나며 무한대로 저장 가능
- 내구성이 100%에 가까움
- 유일한 버킷을 생성하여 데이터 저장
EC2 실습
해당 과정에서는 30만원 상당의 AWS서비스를 이용할 수 있는 AWS계정을 지원해준다
- 해당 계정에 접속해 EC2, S3등의 여러 AWS서비스를 실제로 생성하고 접속 및 이용하는 실습을 진행 할 것이다.
윈도우 서버 인스턴스 생성 및 원격 접속
RDP를 이용해 GUI환경에 접속한다
- 인스턴스 시작
- windows 운영체제로 AMI 선택
- t2.micro 인스턴스 유형 선택
- 로그인하기 위한 pem키 생성
- 네트워크 설정
- rdp유형으로 보안그룹 생성
- 인스턴스 연결 클릭
- 원격 데스크톱 파일 다운로드
- 암호 가져오기해서 이전에 다운로드 한 pem키 업로드
- 원격 데스크톱 파일 열고 암호 입력 후 접속
리눅스 서버 인스턴스 생성 및 원격 접속
SSH를 이용해 CLI환경에 접속한다
<Putty 툴을 이용한 접속>
- 인스턴스 시작
- linux 운영체제로 AMI선택
- t2.micro 인스턴스 유형 선택
- 로그인하기 위한 pem키 생성 (RSA선택 = 기존 키선택)
- 네트워크 설정
-> ssh를 까먹어서 안열고 http를 연결한 상태라고 가정
- 웹에서 putty와 puttygen파일 다운로드
- puttygen실행후 conversions에서 키 import
- save private key누르고 ppk파일 생성
- putty 실행후 connection- ssh - auth - credentials의 첫번째 항목에 ppk파일 업로드
- session에서 linux인스턴스의 퍼블릭 ipv4주소를 입력
-> 아까 보안그룹에서 ssh가 아닌 http를 열었기 때문에 접속 x
- linux인스턴스의 보안항목 에서 인바운드규칙 추가에
SSH , 0.0.0.0/0 등록
- Putty에 다시 ppk, public ip입력 후 open
- login as에 ec2-user입력 후 접속
- sudo -i : root계정으로 전환
- yum -y install httpd : apache웹 서버 설치
- systemctl enable httpd.service --now : 데몬 실행
- 브라우저에 public ip 입력하면 Test Page 뜨는거 확인
<Powershell을 이용한 접속>
1. powershell 또는 터미널 접속
📒 터미널이 없다면 MS스토어에서 다운로드
2. ssh ec2-user@public ip -i .\Downloads\linux1_key.pem
-> 사용자 이름, ip, pem key가 있는 경로 입력
-> 비밀번호 설정했으면 key경로 입력안하고 비밀번호로 접속
-> 비밀번호가 없다면 비밀번호 대신 key경로 입력해서 접속
S3 실습
<S3버킷 생성 및 파일 업로드>
1. S3 버킷 만들기 시작
2. 이름 설정(hwan-test-bk1) - 유일해야함
3. acl 활성화 : 외부에서 접근가능하게 함
4. 퍼블릭 엑세스 허용 : 외부에서 접근가능하게 함
5. 기타 설정 후 버킷 만들기 클릭
6. 버킷 선택 후 폴더 만들기 눌러서 test1폴더 생성
-> s3://hwan-test-bk1/test1/이라는 경로의 폴더 생성
7. c드라이브에 아무 이미지파일 저장 후 아까 만든 폴더 클릭 후 파일 업로드
8. 파일 업로드 후 해당 경로에 이미지파일이 업로드 된것을 볼 수 있다
9. 이미지파일을 누르고 URL을 누르면 객체 Public설정을 안해놨기 때문에 이미가 안뜬다
10. 파일 누르고 작업에서 ACL을 사용하여 퍼블릭으로 설정 클릭
11. 퍼블릭으로 설정 후 다시 파일의 URL누르면 이미지가 보이는 것을 확인
12. c드라이브에 텍스트파일 저장 후 버킷페이지로 돌아간다
13. test1 폴더 클릭 후 ACL을 사용하여 퍼블릭으로 설정
-> 해당 폴더 안에 있는 모든 파일이 퍼블릭으로 설정된다
-> 파일 업로드할때 권한목록에서 개별 ACL 부여 클릭하면 폴더 안에 있어도 자동으로 퍼블릭 적용 안되고 직접 퍼블릭 작업 해줘야 한다
<IAM을 사용한 S3>
1. IAM시작
2. 사용자 그룹에서 s3에 대해서 모든 권한을 가진 그룹 추가
3. 사용자에서 사용자 추가
4. 사용자를 그룹에 추가한다
5. 생성한 사용자를 클릭 후 액세스 키 항목에서 액세스 키 생성
6. CLI환경 클릭 후 생성
7. CSV파일 다운로드
8. AWSCLIV2 실행 후 터미널에 aws --version 확인
9. aws configure 입력 후 csv파일에 있는 액세스 키 id와 passwd입력 후 리전과 json입력
10. aws s3 ls 로 아까 만든 버킷이 존재하는지 확인
11. aws s3 sync c:/backup/ s3://hwan-test-bk1/로 c드라이브에 있는 백업파일과 s3버킷을 동기화 시킨다
12 실제로 s3버킷에 가보면 c드라이브의 backup폴더에 있는 파일이 동기화 된것을 확인
📒 backup폴더에 변경사항이 생기지 않으면 sync명령을 다시 입력해도 아무일도 발생 x
13. 자동으로 동기화 하는 법
- backup폴더에 backupload.bat이라는 확장자를 가진 파일 생성
- 해당 파일에 'aws s3 sync c:/backup/ s3://hwan-test-bk1/' sync명령어 편집
- 관리 도구에 들어가 작업 스케줄러 실행
- 동작에서 작업만들기 클릭 후 '가장 높은 수준의 권한으로 실행' 클릭
- 트리거항목에서 원하는 예약 시간 설정
- 동작항목에서 아까 만든 bat확장자 파일 업로드 후 저장
- data_backup이라는 작업이 생성된 것을 확인
📒 당장 확인해보고 싶으면 '실행' 클릭 후 s3버킷 확인해보면 새롭게 동기화 된것을 알 수 있다.