[도서] http://pyrasis.com/private/2014/09/30/publish-the-art-of-amazon-web-services-book
아마존 웹 서비스를 다루는 기술 출간 및 원고 공개
pyrasis.com
1장. why AWS?
2장. AWS 기본 개념
* 리전
- AWS의 모든 서비스가 위치하고 있는 물리적인 장소
* 가용영역
- 가용 영역AZ, Availability Zone이 우리가 흔히 말하는 데이터센터IDC
- 로드 밸런서인 ELBElastic Load Balancing는 같은 리전 안에 여러 가용 영역에 걸쳐 있는 EC2에 트래픽을 분배해줄 수 있습니다. 이렇게 하면 가용 영역 하나가 작동불능이 되더라도 무중단 서비스를 제공할 수 있습니다.
* 에지 로케이션Edge Location
- AWS의 CDN 서비스인 CloudFront를 위한 캐시 서버
- 이 CDN 캐시 서버는 인터넷 트래픽을 효과적으로 처리할 수 있는 지역에 POP(Point-of-Presence)을 구축합니다. CDN 서비스와 사용자가 직접 만나는 곳이라고 하여 에지Edge라고 부르는 것입니다.
- CloudFront뿐만 아니라 DNS 서비스인 Route 53도 함께 제공
* POP(Point-of-Presence)
- 단어 뜻은 상호 접속 위치로, 인터넷에 접속할 때 접속하는 Point(라우터 혹은 스위치 등)이라고 생각하면 된다.
3장. 계정 생성
- 1년 동안 주요 AWS 리소스를 무료로 사용할 수 있는 프리 티어Free Tier를 제공
- AWS 콘솔 → 위쪽 이름 표시 부분 클릭 → Billing & Cost Management 페이지에서 Alert & Notifications 부분을 보면 프리 티어 기간 중인지 확인할 수 있습니다.
4장. 가상 서버를 제공하는 EC2
* EC2 인스턴스는 우리가 일반적으로 보는 PC나 서버와 똑같은 형태이며 Linux나 Windows가 설치되어 있습니다. 가상 서버이기 때문에 모니터에는 직접 연결할 수 없고 터미널 또는 원격 데스크톱 연결로 접속해야 합니다.
* 기본 개념
- 시작(Start): 운영체제가 부팅되고 사용할 수 있는 상태입니다. 시작하는 순간부터 사용 요금이 과금되며 1분을 사용하더라도 1시간 요금으로 책정됩니다.
- 정지(Stop): 운영체제를 종료하여 시스템이 정지한 상태이며 사용 요금이 과금되지 않습니다.
- Root 장치: 운영체제가 설치되는 스토리지입니다. Root 장치로 EBS와 인스턴스 스토리지를 사용할 수 있습니다.
- Kernel ID: EC2 인스턴스가 사용하는 Linux 커널입니다. Linux 반가상화는 외부에서 Linux 커널을 지정해주어야 합니다. 그리고 AWS에서 제공하는 다양한 Linux 커널을 선택할 수 있습니다.
* 운영체제에 따른 가상화 형태
- Windows: OS의 커널을 수정할 수 없기 때문에 하드웨어 가상화(HVM), 전가상화(Full Virtualization)로 실행됩니다.
- Linux: OS의 커널을 수정할 수 있기 때문에 반가상화(PV, Paravirtualization)로 실행됩니다(때에 따라서는 전가상화 커널을 선택할 수도 있습니다).
* EC2의 SLA(Service Level Agreement)는 월 99.95%입니다. 따라서 한달에 약 0.36시간까지 장애가 발생할 수도 있습니다. EC2를 사용하여 서비스를 구축할 때는 항상 장애가 발생할 수 있다는 가정하에 설계를 해야 합니다.
1) EC2 인스턴스 유형
* m3.medium처럼 앞에 인스턴스 패밀리인 m에 세대Generation를 뜻하는 숫자가 붙고 .(점) 뒤는 전체적인 사양 규모를 뜻하는 단어가 붙습니다.
* 인스턴스 패밀리
- 범용 인스턴스: A 시리즈, T 시리즈, M 시리즈
- R(RAM): RAM의 성능을 많이 필요로 하는 애플리케이션을 위한 타입 e.g.) 메모리 캐시
-C(CPU): CPU의 성능을 많이 필요로 하는 애플리케이션을 위한 타입 e.g.) 연산 작업, 데이터베이스 운영
- M(Medium): 중간 성능을 필요로 하는 애플리케이션을 위한 타입 e.g.) 웹 애플리케이션
- I(I/O): 로컬 I/O 연산 작업이 많은 경우 e.g.) 데이터베이스 운영
- G(GPU): GPU의 성능을 많이 필요로 하는 애플리케이션을 위한 타입 e.g.) 비디오 렌더링, 머신러닝
* vCPU: EC2는 가상 서버이므로 EC2 서버는 가상화 소프트웨어(또는 하드웨어 가상화)를 통해서 실행됩니다. 따라서 가상화 소프트웨어를 통해 제공되는 CPU를 vCPU라고 합니다.
* 참고: http://aws.amazon.com/ko/ec2/instance-types/
Amazon EC2 인스턴스 유형 – Amazon Web Services
aws.amazon.com
2) EC2 인스턴스 구매 옵션
* 온 디맨드 인스턴스(On Demand Instance)
- 필요할 때 바로 생성해서 사용할 수 있는 방식입니다. 과금은 1시간 단위로 이루어지며 1분을 사용했더라도 1시간으로 책정됩니다. 3가지 방식 중 요금이 가장 비쌉니다.
. 공유 인스턴스(Shared tenancy): 하나의 물리적인 서버에 여러 개의 EC2 인스턴스가 실행됩니다. 다른 인스턴스가 서버 자원을 많이 소모한다면 현재 인스턴스의 성능에 영향이 있을 수 있습니다.
. 전용 인스턴스(Dedicated tenancy): 하나의 물리적인 서버에 하나의 EC2 인스턴스가 실행됩니다. 성능에 영향을 미치지 않지만 공유 인스턴스 방식보다 비용이 비쌉니다.
* 스팟 인스턴스(Spot Instance)
- 경매 방식의 인스턴스입니다. 인스턴스의 스펙을 설정하고 원하는 가격을 입력하여 입찰하면 수요와 공급에 따라 가격이 결정되고 높게 입찰한 사람한테 인스턴스가 할당됩니다. 해당 스펙의 인스턴스를 다른 사람이 더 높은 가격으로 입찰했다면 내가 가지고 있는 인스턴스는 종료됩니다.
- 적합한 업무: 불시에 중단되어도 상관 없는 업무
* 예약 인스턴스(Reserved Instance)
- 일정한 예약금을 선불로 내면 인스턴스를 1년 또는 3년 동안 예약할 수 있으며 시간당 요금이 대폭 할인됩니다. 온 디맨드 인스턴스와 마찬가지로 공유 인스턴스, 전용 인스턴스로 나뉩니다.
. Light 사용률 예약 인스턴스: 모든 예약 인스턴스 중에서 선결제 금액이 가장 저렴합니다. 이 인스턴스 유형은 사용 시간이 많지 않을 때 유용합니다. 즉 하루 종일 사용하지 않고, 1년 중 몇 달 사용하지 않는 개발 및 테스트와 단기 프로젝트에 적합합니다.
. Medium 사용률 예약 인스턴스: Light보다 선결제 금액은 비싸지만 시간당 요금이 저렴합니다. 이 인스턴스 유형은 거의 항상 실행하지만 사용량에 약간의 변화가 있을 때 유용합니다.
. Heavy 사용률 예약 인스턴스: Medium보다 선결제 금액은 비싸지만 모든 예약 인스턴스 중에서 시간당 요금이 가장 저렴합니다. 이 인스턴스 유형은 24시간 상시 가동되어야 하는 출시된 제품에 유용합니다.
* 참고: http://aws.amazon.com/ko/ec2/pricing/
Amazon EC2 요금 – Amazon Web Services
초당 결제에서는 사용한 만큼만 비용을 지불합니다. 1시간에서 사용하지 않은 분 및 초를 차감하고 청구하므로, 시간당 사용량을 극대화하기보다는 애플리케이션을 개선하는 데 집중할 수 있습
aws.amazon.com
3) EC2 인스턴스 생성하기
* 미리 준비된 운영체제 이미지AMI만 사용할 수 있습니다(AMI는 ‘8장 AMI’ 참조).
* 하드웨어 가상화HVM Amazon Linux AMI가 맨 위에 표시될 것입니다. 아래로 스크롤하면 반가상화PV Amazon Linux AMI가 있습니다. HVM, PV에 따라서 선택할 수 있는 유형이 제한
* Amazon Linux
- Amazon Linux는 RHEL(Red Hat Enterprise Linux)을 기반으로 하는 배포판이며 EC2에 최적화되어 있습니다. 따라서 RHEL, CentOS와 호환되며 사용법도 비슷합니다. CentOS는 RHEL을 무료로 사용할 수 있도록 만든 배포판입니다.
* CPU를 많이 쓰는 컴파일 작업을 할 때는 t1 인스턴스 보다 t2 인스턴스 유형이 유리
* 스토리지
- Type: Root 장치(Device)인지 추가 장치인지 설정하는 옵션입니다. 기본적으로 Root 장치는 EBS만 사용할 수 있고, 추가 장치는 EBS와 인스턴스 스토리지(Instance Store)를 사용 가능. Root 장치는 필수
(EBS와는 달리 인스턴스 스토리지는 EC2 인스턴스를 정지하면 데이터가 사라집니다. 대신 EBS(Magnetic)보다 속도가 빠릅니다.)
- General Purpose (SSD) 볼륨: 1GiB당 3 IOPS를 제공합니다. 예를 들어 500GiB라면 1500 IOPS를 기본적으로 제공하고, 3600초 동안 3000 IOPS까지 성능이 높아지는 Burst 기능도 제공합니다.
* IOPS: 아이옵스(Input/Output Operations Per Second, IOPS)는 HDD, SSD, SAN 같은 컴퓨터 저장 장치를 벤치마크하는 데 사용되는 성능 측정 단위
* 키페어(key pair): EC2 인스턴스 접속 시 사용
4) EC2 인스턴스에 접속하기
* 보통 Linux 서버에 접속할 때는 SSH(Secure Shell)를 사용하게 됩니다.
* 운영체제 별 접속 방법
- 윈도우: putty 등 SSH 클라이언트에 pem(key pair) 파일 변환 후 Auth에 등록
참고: http://pyrasis.com/book/TheArtOfAmazonWebServices/Chapter04/04
- 리눅스: http://pyrasis.com/book/TheArtOfAmazonWebServices/Chapter04/04/02
* IP: public IP
5) 가상 스토리지를 제공하는 EBS
* EBSElastic Block Store는 EC2 인스턴스에 장착하여 사용할 수 있는 가상 저장 장치입니다. EBS는 EC2 인스턴스에서 제공하는 기본 용량보다 더 사용해야 할 때, 운영체제를 중단시키지 않고 용량을 자유롭게 늘리고 싶을 때, 영구적인 데이터 보관이 필요할 때, RAID 등의 고급 기능이 필요할 때 사용합니다.
* EC2 인스턴스를 생성할 때 기본적으로 OS가 설치된 EBS 볼륨을 함께 생성
5.1) EBS 볼륨 생성하기
5.2) EC2 인스턴스에 EBS 볼륨 장착하기
5.3) 가상 스토리지를 제공하는 EBS
* EC2 인스턴스에서 EBS 볼륨 포맷하기
- SSH로 EC2 인스턴스(Example Server)에 접속한 뒤 아래와 같이 sudo mkfs -t ext4 /dev/sdf를 입력하여 EBS 볼륨을 포맷합니다.
5.4) EC2 인스턴스에서 EBS 볼륨 마운트하기
* 먼저 ls /dev/sdf -al 명령을 입력하여 /dev/sdf 장치가 있는지 확인합니다.
* 이제 sudo mount /dev/sdf /mnt를 입력하여 저장 장치를 마운트합니다. /dev/sdf 대신 /dev/xvdf로 지정해도 됩니다.
* /dev/sdf를 /mnt 디렉터리에 마운트한다는 명령인데 /mnt 디렉터리가 아닌 다른 디렉터리를 지정해도 상관 없습니다.
5.5) EC2 인스턴스에서 EBS 볼륨 제거하기
* sudo umount /mnt 명령을 입력하여 장치를 언마운트 합니다.
* EBS 볼륨 목록에서 대상 EBS 볼륨을 선택하고 마우스 오른쪽 버튼을 클릭하면 팝업 메뉴가 나옵니다(위쪽 Actions 버튼을 클릭해도 같은 메뉴가 나옵니다). Detach Volume을 클릭합니다.
* EBS 볼륨과 RAID
EBS 볼륨은 OS에서 봤을 때 하드디스크 또는 SSD와 똑같습니다. 따라서 EBS도 RAID 구성을 할 수 있습니다.
* RAID(Redundant Array of Inexpensive Disks)
- 소용량 저장장치 여러 대를 배열로 묶어서 대용량 저장장치를 만드는 기술로, 가격이 저렴하고 장애 발생시 복구 기능이 있어 서버 컴퓨터에서 널리 사용되는 기술이다.
6) EBS 스냅샷 활용하기
* EBS 스냅샷은 EBS 볼륨을 백업하고 이전 내용으로 복원하고 싶을 때, 나만의 AMI를 생성하고 싶을 때, EBS 볼륨을 다른 리전으로 이전하고 싶을 때 사용
6.1) EBS 스냅샷 생성하기
* EBS 스냅샷 생성 방법: EBS 볼륨 목록에서 생성하는 방법과 EBS 스냅샷 목록에서 생성하는 방법
* EBS 볼륨 목록에서 8GiB EBS 볼륨을 선택하고 마우스 오른쪽 버튼을 클릭하면 팝업 메뉴가 나옵니다(위쪽 Actions 버튼을 클릭해도 같은 메뉴가 나옵니다). Create Snapshot을 클릭합니다.
* 스냅샷 확인: EBS 스냅샷 목록(ELASTIC BLOCK STORE → Snapshots)으로 이동
6.2) EBS 스냅샷으로 EBS 볼륨 생성하기
* BS 스냅샷으로 EBS 볼륨을 생성할 수 있습니다. EBS 볼륨 자체로는 다른 가용 영역Availability Zone으로 이전할 수 없으므로 꼭 EBS 스냅샷을 활용해야 합니다.
* EBS 스냅샷을 선택하고 마우스 오른쪽 버튼을 클릭하면 팝업 메뉴가 나옵니다(위쪽 Actions 버튼을 클릭해도 같은 메뉴가 나옵니다). Create Volume을 클릭합니다.
* 확인: EBS 볼륨 목록(ELASTIC BLOCK STORE → Volumes)으로 이동
6.3) EBS 스냅샷으로 AMI 생성하기
* EBS 스냅샷으로 EBS 볼륨뿐만 아니라 EC2 인스턴스를 생성할 수 있는 AMIAmazon Machine Image도 생성할 수 있습니다.
* 스냅샷과의 차이: 스냅샷은 EBS 볼륨 하나를 백업하는 것이고 AMI는 EC2 인스턴스에 연결되어있는 OS가 설치되어있는 루트 장치를 포함한 모든 EBS를 백업하는 것
* EBS 스냅샷으로 AMI를 생성할 때 주의해야 할 점은 Linux의 경우 Kernel ID를 알아야 한다는 것입니다. AMI를 만들 때 이 Kernel ID를 설정하게 됩니다. 나중에 AMI로 EC2 인스턴스를 생성했을 때 Kernel ID가 맞지 않으면 부팅이 되지 않습니다(커널 패닉 발생). 단, HVM(t2 유형 등)은 Kernel ID를 설정하지 않아도 됩니다.
* EBS 커널ID 확인: EC2 인스턴스의 세부 내용에서 Kernel ID를 확인할 수 있습니다.
* EBS 스냅샷 목록에서 앞에서 생성한 8GiB EBS 스냅샷을 선택하고, 마우스 오른쪽 버튼을 클릭하면 팝업 메뉴가 나옵니다(위쪽 Actions 버튼을 클릭해도 같은 메뉴가 나옵니다). Create Image를 클릭합니다.
* 확인: AMI 목록(IMAGES → AMIs)으로 이동했습니다. 이제 AMI가 생성되었습니다. Launch 버튼을 클릭하면 이 AMI로 EC2 인스턴스를 생성할 수 있습니다
6.4) EBS 스냅샷을 다른 리전으로 복사하기
* EBS 스냅샷 목록(ELASTIC BLOCK STORE → Snapshots)에서 복사하고자 하는 EBS 스냅샷을 선택하고, 마우스 오른쪽 버튼을 클릭하면 팝업 메뉴가 나옵니다(위쪽 Actions 버튼을 클릭해도 같은 메뉴가 나옵니다). Copy를 클릭합니다 => 리전 변경
* EBS 스냅샷 목록(ELASTIC BLOCK STORE → Snapshots)으로 이동했습니다(화면 맨 위의 리전이 N. California로 선택되어 있는지 확인합니다)
* 이 EBS 스냅샷으로 US West (N. California) 리전에서 EBS 볼륨이나 AMI를 생성하여 사용
7) 인스턴스 스토리지를 Root 장치로 사용하는 EC2 인스턴스
* EC2 인스턴스 목록(INSTANCES → Instances)에서 Launch Instance 버튼을 클릭합니다. AMI를 선택하는 페이지에서 Community AMIs를 클릭하고 Instance store에 체크합니다. AMI 목록에 인스턴스 스토리지를 Root 장치로 사용하는 AMI 목록이 표시됩니다. 여기서 최신 버전을 선택하여 EC2 인스턴스를 생성하면 됩니다(hvm보다는 paravirtual이 성능이 더 좋습니다).
* 기본적으로 장착된 스토리지가 하나도 없으므로 Add New Volume 버튼을 클릭하여 인스턴스 스토리지를 추가합니다.
* 인스턴스 스토리지를 Root 장치로 사용하는 EC2 인스턴스는 정지(Stop) 기능이 없습니다. 재부팅이나 삭제(Terminate)만 할 수 있습니다.
8) EC2 기타 설정 및 기능
* Placement Group: 물리적으로 인접한 곳에 EC2 인스턴스를 생성하여 네트워크 퍼포먼스를 극대화합니다.
* Bundle Instance (instance store AMI): 인스턴스 스토리지를 Root 장치로 사용하는 Windows EC2 인스턴스의 내용을 S3 버킷에 저장하는 기능입니다.
* Bundle Tasks: Bundle Instance 기능이 처리되는 과정을 Bundle Task라고 합니다. Bundle Task가 완료되면 S3 버킷에 저장된 이미지 파일로 AMI를 생성할 수 있습니다.
* Network Interfaces: ENI(Elastic Network Interface)를 생성하고 EC2 인스턴스에 장착합니다.
5장. Security Group으로 방화벽 설정하기
* Security Group은 EC2 인스턴스에 적용할 수 있는 방화벽 설정
* Group Name이 default인 것은 기본적으로 제공되는 Security Group이며 Inbound는 동일한 Security Group인 default에만 허용되어 있고, Outbound는 모든 접속이 허용
* 최초 EC2 인스턴스를 하나 생성하면 SG도 함께 생성되고, Inbound 탭을 보면 SSH, TCP, 22, 0.0.0.0/0으로 설정된 규칙을 볼 수 있습니다. 이것은 모든 IP에서 EC2 인스턴스로 SSH 접속을 허용하겠다는 규칙
6장. 고정 IP를 제공하는 Elastic IP
* 한번 할당 받으면 절대 바뀌지 않는 IP 주소입니다. 사용하지 않을 경우 반납할 수 있습니다.
* 주의할 점은 Elastic IP를 할당 받고, EC2 인스턴스에 연결하여 사용해야만 요금이 부과되지 않습니다. 아무 EC2 인스턴스에도 사용하지 않고, Elastic IP를 할당만 받아서 가지고 있을 경우 매달 요금이 부과됩니다.
1) Elastic IP 할당받기
* EC2 페이지에서 왼쪽 NETWORK & SECURITY → Elastic IPs를 클릭합니다. Allocate New Address 버튼을 클릭합니다.
2) Elastic IP 연결하기
* Elastic IP 목록(NETWORK & SECURITY → Elastic IPs)에서 새로 할당 받은 Elastic IP를 선택하고 마우스 오른쪽 버튼을 클릭하면 팝업 메뉴가 나옵니다. Associate Address를 클릭합니다
* Elastic IP를 연결하면 Public IP도 Elastic IP 주소와 같은 IP 주소로 설정됩니다
[암호] 대칭키 암호 vs 공개키 암호
개인키 = 비밀키 = 비공개키 공개키 기법 = 비대칭키 기법 암호화와 복호화에 사용하는 암호키가 같은지 다른지에 따라 암호화 기법이 대칭키 기법과 비대칭키 기법으로 나뉘어 진다. 1. 대칭키
gaeko-security-hack.tistory.com
대세는 쿠버네티스 [초급~ 중급] - 중급편 (1) | 2021.11.19 |
---|---|
대세는 쿠버네티스 [초급~ 중급] - 기초편 (0) | 2021.08.29 |