(6월 목차)

1주차 AWS
2주차 테라폼
3주차 미니프로젝트
4주차 도커

 

테라폼 (서버생성구축)
앤서블 (서버서비스구축)

vagrant hashicorp - os설치 자동화

 

(AWS 목차)

IAM (일반 개인사용자)
EC2 (인스턴스 생성)

VPC

로드밸런싱 (EC2)
S3 (저장소)

AWS CLI
DB RDS (요금 많이나옴)
DNS Route53

SSL 인증서

SES 메일서버

 

---

캐시서버
애플리케이션 설치
서비스 모니터링
요금확인

쉘 스크립트, vagrant 사용
테라폼

 

 

 

(AWS 개론)
시스템 기반이란?
- 사용자가 앱을 24/365 이용가능환경
- 기능/비기능 요건


데이터센터란?
- 장비임대(서버호스팅), 공간/네트워크임대(코로케이션)


클라우드 컴퓨팅이란?
- 언제나,어디서나 종량제로 원격 컴퓨터자원 활용
- 온프레미스/퍼블릭,프라이빗 클라우드


AWS 서비스 종류
- EC2(Elastic computing cloud, 다양한 사양 가상컴퓨터 임대) (동적ip로 제공)
- AAS (Amazon auto-scaling, 서버를 추가삭제
- Amazon Lightsail (가상사설서버, 간단 웹서비스)
- Amazon workspace (데스크톱 가상화 Daas)
- Amazon Route S3 (DNS서비스) (EC2가 동적ip로 제공해서 필요함)
- Amazon VPC(virtual private cloud) (가상사설ip.. 인스턴스간 통신망 구축, dhcp)
- Amazon direct connect (온프레미스 확장시 클라우드로 확장해서 연동)
- Amazon ELB (로드밸런서) (L4계층 로드밸런싱 수행) (동적ip 로드밸런싱 가능하게함)

- Amazon S3 (저장소서비스) (구글드라이브같은거)
- Amazon S3 glacier (s3보다 속도 느림)
- Amazon EBS (elastic block stoarge) (가상 블록디스크)
- Amazon storage gateway (온프레미스 데이터를 클라우드로 저장)
- Amazon snowball (대량데이터전송 서비스)

- Amazon RDS (Relational db service) (mysql 같은거)
- Amazon dynamoDB (NoSQL서비스, 대량데이터 저장,분석 서비스)
- Amazon ElastiCache (In-memory기반 빠른속도 서비스)

- 기타 분석, 앱서비스등 있음

 


(AWS 기본용어)
- region (클러스터링된 지역) (ap-northeast-2가 서울지역)
- availability zone (AZ, 가용영역) (리전을 이루는 데이터센터) (우리나라는 4개 있음)
- edge location (캐시서버)

 

 

 

 

 

(IAM)
- 사용자(개인)
- 그룹(집합) (정책 등 개정들 통합관리)
- 루트사용자의 액세스키 (사용안하는것 권장) (테라폼 가능) (보안자격증명에 있음)
- 일반사용자 생성 - option으로 비번생성 (user01 / user01!!)
- 그룹 생성 (AdministratorAccess정책은 root권한)
- Account settings (비밀번호 조건 변경가능)
- 일반사용자로 로그인 (사용자 12자리번호 UID같은거 복사 891377203966 재로그인) (arn은 정책을 의미)

(MFA인증 추가)

iam (aws리소스에대한 액세스관리) -> mfa추가(이중인증)


일반사용자 생성 (직접정책연결에서 AmazonEC2FullAccess, AmazonVPCFullAccess등 있는데 AdministratorAccess로 무한권한 준다) (jw_aws_admin으로 만듬) (액세스키 만들기, CLI) (비밀액세스키 csv로 다운받기)

*root는 위험하므로 IAM으로 사용자계정 생성해서 사용함
*Amazon security group으로 firewalld 기능제공

 

 

 

(리눅스에서 키 파일 만들기)
Linux에 CLI 설치 (centOS 사용)
​- CLI 설치 파일 다운로드 후 압축 해제하여 설치
# curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# unzip awscliv2.zip
# ./aws/install

​- 설치 확인
# aws --version

- aws CLI에 액세스 키 입력
# aws configure
AWS Access Key ID [None] : 액세스 키 입력
AWS Secret Access Key [None] : 비밀 액세스 키 입력
Default region name [None] : Default 값 입력 or ap-northeast-2
S3의 region 입력을 해도 무관하며, 설정 이후 변경이 가능합니다.
Default output format [None] : json
설정한 내용은 OS 계정 Home 디렉터리 하위에 숨긴 폴더로 저장됩니다.
vi .aws/config
vi .aws/credentials

 



(VM에 key-pair 등록)
AWS에서 서울리전으로 변경
key 생성 (.pem은 개인키, .ppk는 putty용,나중에 .pem에서 변환가능)
ssh-keygen -t rsa -b 4096 -C "" -f "$HOME/.ssh/<키페어이름>" -N "" -P "" (-P는 패스워드 만들때 씀)
mkdir ~/.ssh
ssh-keygen -t rsa -b 4096 -f "/root/.ssh/study2" -P ""
sudo cp /home/ec2-user/.ssh/<키페어이름> /home/ec2-user/.ssh/<키페어이름>.pem
cp -a .ssh/study2 .ssh/study2.pem

aws ec2 import-key-pair --key-name "<키페어이름>" --public-key-material fileb://~/.ssh/<키페어이름>.pub     (아마존에 키가 등록됨)
aws ec2 import-key-pair --key-name "study2.pem" --public-key-material fileb:///root/study2.pub

 

 

 


(EC2)

- Elastic IPs (고정ip 설정)
- Auto scaling groups (수요에따라 VM개수 자동증감)
- Volumes (저장장치) (Elastic block service EBS내부탑재 저장소) (S3 외부저장장치)
- Key pairs (ssh-keygen 같은거.. 개인키,공개키)
- Security groups (방화벅)
- Zones (가용영역)
- 인스턴스 생성 (public,private ip 2가지 할당됨) (t는 인스턴스패밀리, 특화, t2는 2세대, micro는 인스턴스 사이즈) (범용T2.micro많이씀,프리티어임) (key pair 있어야 ssh가능, 개인키 다운받음)
- stop은 종료, terminate는 종료후 제거

 

(인스턴스 접속방법 3가지)
- AWS에서 다이렉트 접속
- 터미널 ssh 접속 (사이트에 ssh명령어 있음)
- putty 접속 (pem2ppk 필요)

 

(윈도우에서 윈도우 인스턴스 접속)
윈도우 ova실행
인스턴스 시작 (호스트), AMI (Amazon Machine Image) 여러가지 있음)
rdp로 접속함 (.pem파일 있어야)

 

(리눅스 인스턴스 추가 특이점)
#사용자데이터 (인스턴트 추가시 입력가능한데 인스턴스 실행시 자동 실행됨)
#!/bin/bash

yum -y install httpd
systemctl enable httpd --now
echo aws instance test > var/www/html/index.html

 

(리눅스에서 리눅스 인스턴스 연결방법)
study1.key 파일만들고  .pem키 내용 복사
chmod 600 study1.key     (권한 바꿔줌)
ssh ec2-user@43.203.255.38 -i study1.key

 

(리눅스에서 putty로 접속) - 로키

chmod 0400 test.pem
sudo apt-get update
sudo apt-get install putty
sudo apt install putty-tools    (pem2ppk 툴 있음)
puttygen -t rsa -b 2048 -C "/home/user/Downloads/test.pem" -o test.ppk   (passphrase 2차비밀번호 건너뛰기)

puttygen으로 ppk변환 후 putty로 접속 (connection>ssh>auth>credentials에 ppk넣음)

 

(윈도우에서 리눅스 접속)

pem파일 속성>보안>고급>상속사용안함>추가>내계정입력>r,rw부여
connect to instance>SSH client에서 접속명령어 복사해서 접속

 

 

 

 

(VPC) - 가상 사설 클라우드 (네트워크 망 구축)


- VPC안에 AZ1+라우터+AZ2+인터넷게이트웨이+security group 만들어서 각 AZ에 public/private subnet+NAT gateway 만들거임


- VPC생성 (sample-vpc로 10.0.0.0/16)
- subnets 설정 (AZ a,c에다가 sample-subnet-public01,02로 10.0.0.0/20, 10.0.16.0/20 만들어줌) (sample-subnet-private01,02도 AZ a,c에다가 10.0.64.0/20, 10.0.80.0/20으로 만들어준다) (4096-5개만 사용가능.. 앞뒤+10.0.0.1라우터id+10.0.0.2DNS+10.0.0.3스페어)
- internet gateways 생성 (외부통신 및 내부통신 위함) (sample-igw 생성 후 VPC attach해준다)
- NAT gateway 설정 (외부통신 목적) (sample-ngw01,02를 public01,02에 연결)
- route tables 설정 (public/private 다른 대역간 통신 라우터 생성) (AZ public간+AZ1,2내 총 3개 라우터 추가) (테이블3개 생성할거임) (sample-rt-public 만들어서 subnet associations으로 public 두개 묶고, add route해서 모든대역 internet gateway 만들어준거 연결해서 외부로 연결) (sample-rt-private-01 만들어서 private01 subnet만 associate시킴.. 같은 AZ내 대역들과 통신가능) (sample-rt-private-02 만들어서 private02만 associate시킴)
- security groups 설정 (외부>igw>public>private(관리자ssh) 혹은 외부>private(80,443포트) 까지 접근하도록 정책 설정) (sample-sg-bastion으로 for bastion server 설명으로 VPC 설정.. inbound rules에 ssh 0.0.0.0/0으로 만든다.. 필요할경우 All ICMP-IPv4도 추가해준다) (sample-sg-elb으로 for load balancer 설명으로 vpc 설정.. inbound에 http,https 룰 추가.. 필요할경우 ssh추가) (현재는 라우터설정때문에 사실상 public에만 접속가능)
- peering connections 설정 (다른region/계정 등 vpc간 연결 가능) (요청수락절차있음) (오사카 기본 vpc와 연결할거임) (sample-peer로 osaka정보 입력 후 osaka 가서 accept request 해주면됨) (단, 네트워크 대역이 달라야 함)

 

vpc route tables 변경 (bastion 점프서버로 private에 연결시켜주는 관리자용 서버만들어 주고, private01에는 웹서버, private02는 DB서버 만들거임)
- route tables 설정 (sample-rt-private-01 만들어서 private01 subnet만 연결.. edit routes에서 모든대역 nat gateway로 ngw01로 들어오게 함) (sample-rt-private-02도 마찬가지) (private에 내부를 타고 들어오게 함)

- instances 생성 (sample-ec2-bastion로 amazon linux로 키페어 bation으로 새로생성후 ~/.ssh에 다운로드 받음) (network settings edit 후 vpc 직접지정, subnew public01에 위치시키고 public ip enable, 기존 bastion 보안그룹 선택)
- key pairs 생성 (web이라고 만들고 ~/.ssh으로 옮겨줌) *chmod 0400 ?.pem 으로 키페어 권한 변경해줘야됨
- instances 생성 (sample-ec2-web01로 동일 network 수동vpc, 키페어web선택, private01로 연결하고 보안그룹 sg-elb로 설정, 추가로 키페어 안만든거는 ssh접속 필요없기 때문) (sample-ec2-web02 동일하게 하나더 만듬.. 서브넷은 private02로)
- public/private간 공개키 공유 (방법1..bastion서버 들어가서 ~/.ssh/web.pem에 공개키 복사해주기) (방법2.. .ssh에 vim config 만들기)
vim config
Host bastion
        Hostname 3.35.219.50   #bastion's present public ip
        User ec2-user
        IdentityFile ~/.ssh/bastion.pem

Host web01
        Hostname 10.0.77.83 #web01's present private ip
        User ec2-user
        IdentityFile ~/.ssh/web.pem
        ProxyCommand ssh bastion -W %h:%p   #via bastion

Host web02
        Hostname 10.0.80.8
        User ec2-user
        IdentityFile ~/.ssh/web.pem
        ProxyCommand ssh bastion -w %h:%p



로드밸런서 기능
1 부하분산
2 SSL 처리
3 부정탐지

로드밸러서 종류
- ALB (Application Load Balancer) (웹서비스 특화)
- Network Load Balancer (게임분야나 소켓통신에서 주로 사용)
- classic Load Balancer (a.k.a. Gateway LB) (레거시..)

로드밸런싱 설정 (web01,02에서 elb 보안그룹 필요없어서 삭제) (public거쳐서 private 들어오게 설정) (Load Balancers에서 ALB로 sample-elb로 vpc public두개 묶어주고 보안그룹elb선택하고 listeners(인스턴스)에 타겟그룹생성해서 sample-tg로 http1선택해서 web01,02포함해서 포트3000으로 include as pending below눌러서 등록해줌) (scheme은 public/private 대역 선택가능) (tg설정에서 http2는 https임)
(tg생성후 꺼지면 로드밸런서 create 다시진입해서 sample-elb로 vpc public두개 묶어주고 만들어진 sample-tg 선택해서 생성)
web01,02에서 홈디렉토리에 index.html 만들어줌
index.html
<html>
        <body>
                hello web01
        </body>
</html>

sudo yum -y install pip    (필요없을수 있음)
python3 -m pip install websocket-client     (필요없을수 있음)
python3 -m pip install simple_http_server     (필요없을수 있음)
python3 -m http.server 3000     (로드밸런싱 테스트)
*httpd 설치하는것보다 나음

 

 

 

 

 

 

 

 

(S3)  - Simple Storage Service
- 스토리지 종류
DAS (블록 스토리지) (수평적으로 저장)
NAS (파일 스토리지) (계층별로 저장)
SAN (오브젝트 스토리지) (객체 분산저장)
- 백업 및 복원, 보관, 웹서비스, 재해복구, 빅데이터 등에 사용
- 접근량에 따라 4가지 용도로 요금제 분류 (표준, 표준-IA, One-Zone_IA, Glacier) (접근량 내림차순)
- 버킷 생성 (데이터 담는 바구니.. SAN기반.. 내부에 폴더생성 가능)


(외부에서 직접 접근하는 방식) - public ip 가짐.. 외부개방 필요
- create bucket (test-jw-bucket01로, ACL은 접근권한 disable하면 나만접근가능)
- test로 폴더 생성
- arm (외부접근허용 정책) (버킷 permissions 수정 3개 해줘야됨) (Edit Block public access에서 체크해제) (Bucket policy edit 후 ARN 복사후 정책생성기에서 S3 Bucket Policy,principal은 ip인데 *, actions선택, arn입력) (Object Ownership에서 ACLs enabled해줌) (폴더를 Make public using ACL해서 개방해줌)
- 다쓰면 버킷 지워줌.. 요금이슈


(웹서버에 붙여 쓰는 방식) - 접근정책 필요.. IAM에서 역할 설정
- create bucket (test-jw-bucket02로, 기본 폐쇄정책으로 생성)
- IAM에서 roles 생성 (AWS service, use case는 ec2, 허용정책은 S3FullAccess 선택, 롤네임 sample-role-web, 설명은 upload image)
- EC2 인스턴스에 롤 부여 (web01에 actions>security>modify IAM role에서 롤 업데이트)
- web01에서 s3 접근
echo "This is a test file" > test.txt
aws s3 cp test.txt s3://test-jw-bucket02    (버킷에 복사)






(AWS CLI 설정) - 리눅스.. 테라폼에서 쓰임
yum install curl -y
yum install unzip -y
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o awscli.zip
unzip awscli.zip
sudo ./aws/install
aws configure     (IAM>Users>사용자(user01)>Access key,secret key, region복붙, 형식은 json)
ls .aws/     (config와 credentials 생김)
cat .aws/config     (입력한 내용 나옴)
rm -r .aws/     (안쓰는경우 지운다)

aws s3 ls
aws s3 ls s3://test-jw-bucket02
aws s3 cp .viminfo s3://test-jw-bucket02/hello     (이름바꿀경우 뒤에 이름 붙이면 된다)


(AWS CLI를 통한 s3 정적 웹호스팅)
create bucket (test-jw-bucket03, ACLs enabled, block public access 체크해제) (퍼미션 버킷정책, s3,*,all actions로 추가)
{
"Version": "2012-10-17",
"Id": "Policy1717566924358",
"Statement": [
{
"Sid": "Stmt1717566920850",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::test-jw-bucket03/*"    #/*는 따로 추가함 (access denied문제 해결)
}
]
}

원격에서
vim index.html
<html>
        <head>
        </head>
        <body>
                <h1>static web hosting</h1>
                <p>testing...</p>
        </body>
</html>

aws s3 ls
aws s3 cp index.html s3://test-jw-bucket03
aws웹에서 버킷에서 properties에서 Static website hosting edit해서 enable 후 index.html입력)









(RDS) - AZ1 private에 만들어줄거임

설치
1 DB엔진 선택가능 (mysql, oracle, postgreSQL 등)
2 parameter group (언어, DB튜닝 관련)
3 옵션그룹 (RDS 고유설정.. 모니터링등)
4 서브넷 그룹 (분산저장 가능)

순서
파아미터그룹 > 옵션그룹 > 서브넷그룹 > DB
- Parameter group 생성 (sample-db-pg, 설명은 sample parameter group, mySQL, 8.0, parameter group)
- option group 생성 (sample-db-og, 설명은 sample option group, mySQL, 8.0)
- subnet group 생성 (sample-db-subnet, 설명은 sample sb subnet, VPC,AZ선택, private subnet 등록)
- database 생성 (standard, mySQL, templates free tier, DB instance ID= sample-db, admin,adminadmin, 연결성에 VPC설정, Additional configuration에서 파라미터,옵션그룹 선택)

접근 - web01으로부터
sudo yum update -y
sudo yum install mariadb105 -y
mysqladmin
mysqladmin ping -u admin -p -h sample-db.cn0cskoie8g3.ap-northeast-2.rds.amazonaws.com   (DB endpoint URL 복사) (ping)
mysql -u admin -p -h sample-db.cn0cskoie8g3.ap-northeast-2.rds.amazonaws.com   (접속)

 

 

 

 

 

 

 

(DNS)
Route53 (AWS Root DNS 기능) (SSL인증서 발급도 담당)

(도메인등록)
- registered domains (register domains, aws-intro-sample-jw으로 search해서 안겹치는지 확인후 선택, 정보입력) - 오래걸림(수시간)
- 인스턴스 켜준다
(public 도메인 설정) - VPC 내부에 Route53서버가 만들어짐
- hosted zones 설정 (bastion./www.domain 설정할거임) (dns라디오박스 선택해서 세부정보보기 후 create record, switch to wizard, simple routing 정책선택, define simple record로 정방향zone파일생성, record name bastion넣는다, A레코드로 IP addr or another value, depending on the record type 선택해서 bastion인스턴스 ip입력)
- hosted zones 설정 (www. LB 만들거임) (dns라디오박스 선택해서 세부정보보기 후, create record, switch to wizard, simple routing 정책선택, define simple record로 www, A, Alias to Application and Classic Load Balancer선택후 나머지 입력해서 생성)

nslookup bastion.aws-intro-sample-jw.com 으로 확인
nslookup http://www.aws-intro-sample-jw.com 으로 확인
vim .ssh/config     (bastion hostname에 ip대신 bastion.aws-intro-sample-jw.com 입력 가능)
ssh ec2-user@bastion.aws-intro-sample-jw.com -i bastion.pem
ssh bastion
ssh web01
ssh web02

(private서버 DNS 만들기) - VPC 내부에 Route53서버가 만들어짐
- your VPCs (sample-vpc의 DNS Hostnames비활성화 확인 후 >Actions>Edit VPC Settings>Enable DNS hostnames체크)
- Route53 Hosted zones (create hosted zone, domain name은 home, privated hosted zone선택후 생성)
- hosted zones (home선택 후 view details, create record, simple routing, define, name=bastion,A, IP addr or another value, depending on the record type선택,bastion private ip 입력) (rds경우 name=db, CNAME type, IP addr or another value, depending on the record type, 그냥 ip가 아닌 RDS endpoint 입력)

(DNS 정상작동 확인) - Registered domains nameservers 내용과 hosted zones records 내용과 같아야 함

(DNS 접속테스트)
ssh bastion
nsloopup web01.home     (ip가 확인됨)
vi config (web01,02 hostname을 web01.home등으로 변경가능)
ssh web01   (접속테스트)

(web 페이지 만들기)
ssh web01
vi index.html
<html>
        <body>
                hello web01
        </body> 
</html>

python3 -m http.server 3000

 

*인스턴스 새로켜면 DNS정보 바꿔줘야함 (hosted-zones에서 bastion 공인ip 업데이트)

 

 

 

 

vi config

Host bastion
        Hostname bastion.aws-intro-sample-jw.com   #bastion's present public ip
        User ec2-user
        IdentityFile ~/.ssh/bastion.pem

Host web01
        Hostname 10.0.77.83 #web01's present private ip
        User ec2-user
        IdentityFile ~/.ssh/web.pem
        ProxyCommand ssh bastion -W %h:%p   #via bastion

Host web02
        Hostname 10.0.80.8 #web02's present private ip
        User ec2-user
        IdentityFile ~/.ssh/web.pem
        ProxyCommand ssh bastion -W %h:%p   #via bastion


 

(SSL 인증서 받기) - certificate manager
csr(요청서)+ssl key(rsa등) = crt(인증서)
- request certificate (public요청해서, http://www.aws-intro-sample-jw.com 입력후 생성) (Create record in Route 53으로 cname 추가시킴)
- ec2 loadbalancers (sample-elb add listener, https, sample tg선택, all security policies기본값인거확인, fromACM에서 인증서 선택후 추가)

python3 -m http.server 3000 (web01,02에서)
https://www.aws-intro-sample-jw.com (브라우저에서 확인)

 

 

 

 


(SES) (Simple Email Server, 메일서버) - 메일도메인마다 메일서버있음
(송신: IAM>web01>AmazonSES>인터넷 순으로 메일 전달됨)
(수신: 메일서버>인터넷>AmazonSES>web01 or S3 >IAM)
*샌드박스로 둘러싸여 있음 (송신자가 검증된 사용사여야 함) (송신지 검증도 함) (송수신 메일건수 24시간내 200건 제한, 1초 1건으로 제한)
*메일시스템 구성요소 (송신자, 수신자, 제목, 본문, 첨부파일)
*SMTP (AWS, 메일서버간 통신 프로토콜)
*메일서버, iam간 통신 프로토콜 (POP3(로컬저장 가능), IMAP(브라우저 열람용,로컬저장x) )
*IAM은 VPC웹을 통하거나, 메일서버와 직접 메일교환 가능

- region을 N.Virginia로 변경  (seoul region은 송신만 가능(2022년부터).. 따라서 N.virginia사용)
- SES create identity (domain선택, aws-intro-sample-jw.com, DKIM전자서명,무료임,EasyDKIM,2048선택후 생성) - 조금 걸림

- identities (email address선택, 실제 내 이메일입력후 생성) - sandbox기능때문
- 송신테스트 (identity에서 domain체크해서 send test email, from-address에 noreply, scenario는 custom, Custom recipient에는 내실제이메일주소, subject,body에 test후 send)

 

(메일 수신하려면 s3 있어야함)
s3 (create bucket, 이름은 aws-intro-sample-mailbox-jw 후 생성) (block public access 체크해제, 정책 아래처럼 추가)
aws receive email to s3 policy 검색 후 https://docs.aws.amazon.com/ses/latest/dg/receiving-email-permissions.html 여기서 복붙
{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AllowSESPuts",
      "Effect":"Allow",
      "Principal":{
        "Service":"ses.amazonaws.com"
      },
      "Action":"s3:PutObject",
      "Resource":"arn:aws:s3:::myBucket/*",   (여기도 변경, s3리소스 넣어주고 마지막에 /*추가)
      "Condition":{
        "StringEquals":{
          "AWS:SourceAccount":"111122223333",     (iam 계정으로 변경)
          "AWS:SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name"   (이거 삭제) (윗줄 콤마도 삭제)
        }
      }
    }
  ]
}

 

 

- SES Email receiving (create rule set, 이름은 aws-intro-sample-mailbox-jw..일치할필요는없음) - 이메일 수신 설정
- 만들어진 rule set에서 create rule (이름은 sample-rule-query후 next, add new recipient condition후 내실제이메일 입력, deliver to s3 bucket선택후 next, 생성) (set as active 실행)

 

 

 

 

 

 

 

(캐시서버) - 레디스 서비스 사용 (상위버전은 엘라스틱 캐시)
캐시란? 처리시간 단축
주의사항: 시간이 걸리는 데이터의 경우 원본/캐시 데이터가 어긋날 수 있음; 캐시서버 사용시 저장영역 필요;
노드: 캐시데이터가 실제 저장되는 위치
샤드: 노드들의 집합 (1-6 노드 - 프라이머리 노드 1개+ 복제노드(백업) 나머지)
클러스터: 샤드들의 집합

프라이빗 서브넷
프라이머리 노드 구성, 복제노드 구성

- Redis caches (create redis cache, design your own cache, cluster cache, cluster mode enabled, 클러스터 이름은 sample-elasticache, cluster settings version 6.2, node type은 cache.t3.micro, #shards=2, replicas pert shard=2, subnet이름은 sample-elasticache-subnet, vpc선택, private a,c체크후 next) (Selected security groups에서 default선택후 next, create) - 오래걸린다
- web01,web02에서 Configuration endpoint주소로 ping을 보내본다 (nc Configuration endpoint port)

 

 

 

 

 

 

 

 

(오토 스캐일링) - EC2 templates, auto scaling groups
- Instances (web01, actions, Image and templates, create image, 이름은 sample-ami, 설명에 sample image, no reboot enable체크, create image) - AMIs에 이미지가 생성됨을 확인가능
- Launch Templates (Create launch template, 이름은 sample-lt, 설명은 sample launch template, OS image는 sample-ami로 선택, instance type은 t2.micro, key pair는 web, subnet은 private01선택, security group은 default후 create launch template) (actions, launce instance from template이 오토스캐일링 볼수있는곳이다)
- auto scaling groups (Create Auto Scaling group, 이름은 sample-asg, launch template 선택후 next, vpc선택, private01선택후 next, Attach to an existing load balancer 선택, target group선택후 next, Desired capacity를 2, scaling limits를 1-4 설정, Target tracking scaling policy선택, 이름은 sample-asp, average CPU utilization, target value 50%이상 사용시, Instance warmup 200초대기, 설정 후 next,next,next, create) (Instance와 target group에 2개가 추가된다)









(사용량 모니터링) - cloud watch
- 집중관리 (대시보드) (한 곳에 모아서 관리)
- 경보 (시스템장애발생시 폰/메일로 알림)
- 지속적인 정보수집
- 주요 모니터링 항목 (생사, CPU사용률, 메모리사용률, 디스크용량, 네트워크트래픽)

- 인스턴스의 경우 (네트워크트래픽 모니터링은 어려움)
- 로드밸런서 (VM이 아니므로 네트워크트래픽만 잘 모니터링)
- RDS (생사,CPU,메모리만 잘 모니터링)
- S3 (디스크용량과 네트워크트래픽만 잘 모니터링)

cloud watch 기능 
- 수집 
- 모니터링 (표현방식,그래프)
- 액션 (경보)

cloud watch 구축순서
1 대시보드 생성
2 대시보드에 위젯추가
3 경보 생성

- CloudWatch Dashboards (Create dashboard, 이름은 sample-db, 위젯마법사는 우측상단 +클릭하면 됨, other content types, text선택, markdown에 ec2입력하고 add) 
(+누르고, line선택, rename graph눌러서 cpu usage적용, ec2선택, cpu검색후 per-instance metrics에서 cpu utilizaition항목 +누르고, bastion,web01,web02 선택해서 create widget) (그래프 우측위에 점3개 클릭해서 edit눌러서 options탭에서 y축 0-100 등으로 설정가능후 대시보드에서 save 눌러야함)
- in alarm 경보설정 (Create alarm, select metric, cpu검색후 per-instance metrics +클릭후 web01선택, Define the threshold value 70 입력, Additional configuration 1 of 1 하면 1번중 1번 알람보내기, Missing data treatment 누락데이터설정있음, next, in alarm, create new topic, 이메일입력, create topic후 next, 이름은 sample-alarm-cpuutil-web01, 설명은 web01's cpu usage above 70%, next, create alarm) (all alarms에서 확인 가능, 이메일주소 확인필요)









(요금 관련) - billing and cost management
요금발생 요소들 (실행 전 견적 가능)
- cpu, 메모리 사용량 (t2.micro등) (인스턴스, 로드밸런서, RDS등)
- 스토리지 사용 (EBS디스크, s3)
- 네트워크 사용 (인터넷 게이트웨이, nat 게이트웨이, 인스턴트생성시 탄력적ip옵션(고정이나 public ip), 로드밸런서)
- 기타 (DNS, 탄력적ip(사용안할경우 요금부과) )

프로젝트 수행단계
계획(예산) -> 실행 -> 평가(계획과 비교, 수익성 평가) -> 개선(조정,추가)

(견적확인)
billing and cost management에서 getting started (Budgets and planning, estimate workload cost에 Pricing Calculator눌러서 create estimate, region선택후 vpc검색해서 vpc configure클릭, vpn connection해제하고 nat gateway선택, 2개, 10gb/month후 show calculations하면 견적확인 가능, save and add services해서 저장)
(ec2도 인스턴스3개, type은 t2.micro넣고 on-demand 지불옵션 선택해서 add)
- my estimate에서 총 견적 확인가능 (export, share 가능)


(예산 보고서 작성)
유형 (비용예산, 사용량예산, 예약예산, 절약계획예산)

- budgets (예산계획서 작성) (Create budget report, customize, cost budget선택후 next, 이름은 sample-budget, Enter your budgeted amount ($)은 300달러 입력후 next, Add an alert threshold 선택후 Threshold 100, forecasted, 실제이메일 입력, add해서 90%, actual로도 추가 가능, 입력후 create)

(요금 확인)
- cost explorer (일일요금 확인)
- bills (요금청구서 확인가능)

 

 


(요금이슈로 생성한 오브젝트 제거)
- budgets 제거
- cloudwatch all alarms, dashboards 제거
- elasticache redis cache, subnet groups, parameter groups 제거
- SES identities 제거
- s3 buckets 제거
- route53, registered domains, Hosted zones 제거
- RDS databases, subnet groups, parameter groups, option groups 제거
- EC2 load balancers, target groups, auto scaling groups, amis, launch templates 제거
- certificate manager(ACM), list certificates 제거
- EC2 instances, security groups, Elastic IPs release 제거
- VPC, NAT gateways, Peering connections, Internet gateways, Subnets, Your VPCs 제거

'클라우드 컴퓨팅 > 컨테이너, IaC' 카테고리의 다른 글

hashicorp vagrant  (0) 2024.06.10

+ Recent posts