게임업계 it 관리자를 위한 7가지 유용한 팁 - 박선용 솔루션즈 아키텍트::...

Post on 12-Apr-2017

589 Views

Category:

Technology

8 Downloads

Preview:

Click to see full reader

TRANSCRIPT

게임업계 IT 관리자를 위한 7가지 유용한 팁 Seon Yong Park. Solutions Architect

7가지 Tips

1.  AWS  CLI  2.  EBS  GP2  vs  PIOPS  3.  VPC  flowlogs  4.  Run  커맨드  5.  IAM  cross  account  access  6.  Latency  Measurement  Health  Checks  7.  DetecLng  changes  

Tip  1  –  AWS  CLI  

AWS  Command  Line  Interface  

AWS  서비스를 관리하기 위한 통합 툴  

MSI  (Windows)  

Bundled  (cross  plaRorm)  

pip  (cross  plaRorm)  

$  aws  ec2  describe-­‐instances  

Service  (command)   Opera1on  (subcommand)  

$  aws  iam  list-­‐access-­‐keys  

Service  (command)   Opera1on  (subcommand)  

json text

PLACES    Seattle        WA  PLACES    Las  Vegas    NV  

table

-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐    |          SomeOperationName    |    +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+    ||                  Places              ||    |+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+|    ||  City              |  State      ||    |+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+|    ||  Seattle        |  WA            ||    ||  Las  Vegas    |  NV            ||    |+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+|    

{        "Places":  [                  {                          "City":  "Seattle",            

       "State":  "WA"                            },                          {    

       "City":  "Las  Vegas",        "State":  "NV"    

                     }          ]    }      

aws  configure      

aws  configure      

AWS  access  key  ID  [**ABCD]:    AWS  secret  access  key  [****************EFGH]:    Default  region  name  [us-­‐west-­‐2]:    Default  output  format  [json]:      

aws  configure  <subcommand>      

aws  configure  <subcommand>      

list  -­‐  list  common  configuration  sources  get    -­‐  get  the  value  of  a  single  config  var  set    -­‐  set  the  value  of  a  single  config  var  

aws  configure  get  region      

aws  configure  set  profile.prod.region  us-­‐west-­‐2  

profile  은 설정 값 들의 그룹이다  

aws  configure  -­‐-­‐profile  prod  

CLI  설정 파일들  

~/.aws/credentials   ~/.aws/config  

•  모든 AWS  SDKs 가 지원함  •  인증에 대한 정보만 담고 있음  

•  오직 CLI에서만 사용됨  •  인증 정보를 담을 수도 있음  

~/.aws/credentials     ~/.aws/config  

aws  configure  set  profile.prod.aws_access_key_id  foo  

~/.aws/credentials     ~/.aws/config  

aws  configure  set  profile.prod.aws_access_key_id  foo  

~/.aws/credentials     ~/.aws/config  [prod]    aws_access_key_id  =  foo    

aws  configure  set  profile.prod.aws_secret_access_key  bar  

~/.aws/credentials     ~/.aws/config  [prod]    aws_access_key_id  =  foo    

aws  configure  set  profile.prod.aws_secret_access_key  bar  

~/.aws/credentials     ~/.aws/config  [prod]    aws_access_key_id  =  foo    aws_secret_access_key  =  bar  

aws  configure  set  profile.prod.region  us-­‐west-­‐2  

~/.aws/credentials     ~/.aws/config  [prod]    aws_access_key_id  =  foo    aws_secret_access_key  =  bar  

aws  configure  set  profile.prod.region  us-­‐west-­‐2  

~/.aws/credentials     ~/.aws/config  [prod]    aws_access_key_id  =  foo    aws_secret_access_key  =  bar  

[profile  prod]    region  =  us-­‐west-­‐2  

aws  configure  set  profile.prod.output  text  

~/.aws/credentials     ~/.aws/config  [prod]    aws_access_key_id  =  foo    aws_secret_access_key  =  bar  

[profile  prod]    region  =  us-­‐west-­‐2  

aws  configure  set  profile.prod.output  text  

~/.aws/credentials     ~/.aws/config  [prod]    aws_access_key_id  =  foo    aws_secret_access_key  =  bar  

[profile  prod]    region  =  us-­‐west-­‐2    output  =  text  

waiters    

ec2-instance-running.sh

#!/bin/bash  instance_id=$(aws  ec2  run-­‐instances  -­‐-­‐image-­‐id  ami-­‐12345  \                  -­‐-­‐query  Instances[].InstanceId  \                  -­‐-­‐output  text)  instance_state=$(aws  ec2  describe-­‐instances  -­‐-­‐instance-­‐ids  $instance_id  \                  -­‐-­‐query  'Reservations[].Instances[].State.Name')  while  [  "$instance_state"  !=  "running"  ]  do          sleep  1          instance_state=$(aws  ec2  describe-­‐instances  -­‐-­‐instance-­‐ids  $instance_id  \                  -­‐-­‐query  'Reservations[].Instances[].State.Name')  done  

ec2-instance-running.sh

#!/bin/bash  instance_id=$(aws  ec2  run-­‐instances  -­‐-­‐image-­‐id  ami-­‐12345  \                  -­‐-­‐query  Instances[].InstanceId  \                  -­‐-­‐output  text)  instance_state=$(aws  ec2  describe-­‐instances  -­‐-­‐instance-­‐ids  $instance_id  \                  -­‐-­‐query  'Reservations[].Instances[].State.Name')  while  [  "$instance_state"  !=  "running"  ]  do          sleep  1          instance_state=$(aws  ec2  describe-­‐instances  -­‐-­‐instance-­‐ids  $instance_id  \                  -­‐-­‐query  'Reservations[].Instances[].State.Name')  done  

No Timeouts

Failure States

Hand-Written Code

ec2-instance-running.sh

instance_id=$(aws  ec2  run-­‐instances  -­‐-­‐image-­‐id  ami-­‐12345  \                  -­‐-­‐query  Instances[].InstanceId  \                  -­‐-­‐output  text)  aws  ec2  wait  instance-­‐running  -­‐-­‐instance-­‐ids  $instance_id    

ec2-instance-running.sh

instance_id=$(aws  ec2  run-­‐instances  -­‐-­‐image-­‐id  ami-­‐12345  \                  -­‐-­‐query  Instances[].InstanceId  \                  -­‐-­‐output  text)  aws  ec2  wait  instance-­‐running  -­‐-­‐instance-­‐ids  $instance_id    

subcommand  

describe-­‐instances  op1ons  

waiter  name  

$  aws  ec2  wait  help    $  aws  rds  wait  help    $  aws  dynamodb  wait  help    $  aws  redshift  wait  help    

Tip  2  –  EBS  GP2  vs  PIOPS  

EBS  GP2  vs  PIOPS  

GP2   PIOPS  16GB  ~  1TB  

 160  MB/s  

 1000GB 이하의 볼륨에 대해 3000  IOPS까지 버스트 가능한 3IOPS/GB  의 기준 성능.    최대 10000  IOPS  

볼륨크기  

최대처리량    

IOPS성능  

4GB  ~  16TB    

320  MB/s    

최대 20000  IOPS까지 지속적인 성능 발휘  

GP2  버스팅 기능 존재 –  기준 성능과 버스팅 성능.    데이터 베이스 같은 경우 일정한 IOPS가 필요.    따라서 원하는 일정한 IOPS를 얻기 위해서는 PIOPS를 사용하시길….    

Really?  

PIOPS는 성능이 보장된다. 최대 20000  PIOPS까지, 단 더 비싸다.  

GP2  vs  PIOPS  

GP2 버스트 기능의 이해 §  GP2는 기준 성능과 버스팅 성능 존재  §  볼륨이 커질 수록 기준 성능 상승  §  기준 성능은 최대 10000  IOPS  §  1000  GB이상에서는 버스트 기능 없음  §  3334  GB에서는 10000  IOPS도달.  §  단 RDS의 경우는 3000  IOPS  가 최대  

QuesLon  :    EC2에서 8000  IOPS로 2T  디스크 운용을 하기 위해서는?                                                  GP2와 PIOPS 중 어떤 것을?  

Monthly  Calculator  

GP2  :  2667  GB,  8000  IOPS       $1286  /  month  

PIOPS  :    267GB,  8000  PIOPS     $1631  /  month  

PIOPS  :    2667GB,  8000  PIOPS     $2006  /  month  

도쿄 리전 기준  

Tip  3  –  VPC  flowlogs  

CloudWatch  Logs  +  ElasLcsearch  +  Kibana  Dashboards  CloudWatch  Logs  SubscripLon  Consumer  

CloudWatch  Logs  +  ElasLcsearch  +  Kibana  Dashboards  CloudWatch  Logs  SubscripLon  Consumer  

CloudWatch  Logs  +  ElasLcsearch  +  Kibana  Dashboards  Kibana  3  for  VPC  Flowlogs  

CloudWatch  Logs  +  ElasLcsearch  +  Kibana  Dashboards  Kibana  3  for  VPC  Flowlogs   Kibana  3  for  Lambda  

CloudWatch  Logs  +  ElasLcsearch  +  Kibana  Dashboards  Kibana  3  for  CloudTrail  

Tip  4  –  Run  command  

QuesLon  :    동일 Windows/Linux  EC2 인스턴스에 대해 일괄적으로 원격 명령을 수행하려면?    

Run  Command  in  EC2  

Run  Commands  

•  그룹화 된 인스턴스 전체에 대해 설정 변경이 필요한 경우  

•  많은 인스턴스에 대해 안전하고 일관된 작업이 필요한 경우  

•  어떤 일이 수행되었는지와 누가 수행했는지에 대한 관리  

•  명확한 audit 관리  

•  RDP 억세스를 이용하지 않고 손쉽게 처리 (윈도우)  

커맨드  

커맨드 –    메인 화면  

커맨드 실행 –    커맨드 문서 선택  

커맨드 실행 –    대상 인스턴스의 선택  

커맨드 실행 –    실행결과의 확인  

커맨드 실행 –    실행결과의 확인  

Tip  5  –  IAM  cross  account  access  

QuesLon  :    여러개의 AWS  account 들 간에 로그인 없이 자유롭게 스위칭하면서 사용하려면?  

Cross  Account  Access  

A  계정에서  B계정이 접근할 수 있는 역할 생성  

A  계정  

B  계정  

역할에 정책을 할당  

정책 수정  

계정 B  IAM 유저로 로그인   변경된 역할로 A계정 사용  역할 변경  

Tip  6  –  Latency  Measurement                              Health  Checks  

QuesLon  :    특정 리전 사이에서 서버의 latency를 주기적으로 측정하려면?  

T2.nano  인스턴스로 상호 ping  체크?  

Heath  Checker  

AWS  Heath  checker  

•  모든 Region  IDC  에 Health  Check  수행 ApplicaLon  존재  

•  Route  53  health  Check  활성화하면 모니터링하려는 서버에 대한 체크  (HTTP  Request,  TCP  ConnecLon,  Ping  …)  

•  사용가능한 Health  Checker  의 18%이상이 엔드포인트가 정상이라고 하면,  Route  53  DNS에 Healthy로 등록  

Latency  Measurement  Health  Checks  

•  Heath  Checker가 수행하면서 받았던 결과 값들을 고객이 직접 확인할 수 있도록 제공  

•  네트워크 관점에서 Region간의 Latency에 대해 파악할 수 있는 지표 가능  

•  Cloudwatch와 연동해서 적정수준(Acceptance  Range)보다 나빠질 경우 알람 발생 가능  

•  3개의 주요 메트릭  

Latency  Measurement  Health  Checks  

•  TCP  connecOon  Ome  (HTTP  and  TCP  health  checks  only)    :  TCP  3  Way  핸드 쉐이크 (패킷 3개가 왔다갔다함)가 진행되고 통신할 준비가 되는데 걸리는시간  

•  Time  to  complete  SSL  handshake  (HTTPS  health  checks  only)  :  HTTPS  적용시  SSL을  통해  Secure  한  채널을 설정하는데    걸리는  시간  

•  Time  to  first  byte  (HTTP  and  HTTPS  health  checks  only)  : 유저 브라우저가 HTTP(S)  요청을 해서 받는 데 걸리는 시간  

•  ap-­‐northeast-­‐1(동경)에 있는 나의 인스턴스에 대해  같은 리전(health  check  applicaLon)에서 측정  

TCP  커넥션을 맺는 시간                                                                                                              HTTP(S) 요청에 대해 응답이 오는 시간  

•  ap-­‐northeast-­‐1(동경)에 있는 나의 인스턴스에  다른 리전(us-­‐east-­‐1)에서 측정  

TCP  커넥션을 맺는 시간                                                                                                              HTTP(S) 요청에 대해 응답이 오는 시간  

Tip  7  –  DetecOng  changes  

QuesLon  :    서버 등의 변화를 빨리 감지하기 위해서는?  

AWS  API  AcLvity  Logs    

CloudTrail  

CloudTrail  ConfiguraLon    S3  +  CloudWatch  Logs  

CloudTrail  ConfiguraLon  :  S3  +  CloudWatch  Logs  

CloudTrail  ConfiguraLon  :  S3  +  CloudWatch  Logs  

CloudTrail  :  CloudWatch  Logs  

CloudTrail  :  API  acOvity  history  

CloudTrail  :  API  acOvity  history  -­‐  Filter  

CloudTrail  ConfiguraLon  :  S3  +  CloudWatch  Logs  +  Alarm    

CloudTrail  ConfiguraLon  :  S3  +  CloudWatch  Logs  +  Alarm    

CloudTrail  ConfiguraLon  :  S3  +  CloudWatch  Logs  +  Alarm    

CloudTrail  ConfiguraLon  :  S3  +  CloudWatch  Logs  +  Alarm    

CloudTrail  ConfiguraLon  :  S3  +  CloudWatch  Logs  +  Alarm    

추가 팁!    

AWS  Config  rules  

§  기록된 내역이 변경되는 것을 탐지하는 rules 설정.

§  AWS가 제공하는 pre-built rules 사용.

§  AWS Lambda를 활용한 커스텀 rule 지원

§  지속적인 진단수행을 자동화

§  컴플라이언스 시각화나 위험한 변경을 식별하기 위해 대쉬보드 제공.

Config  Rules(preview)  

AWS Config

APIs

Rule R1: EC2 태깅 여부

Rule R3: CloudTrail 설정 여부 Rule R2: 운영환경 볼륨 암호화 여부

Normalize 변경 내역 기록 변경된 리소스 전달 저장

스트림

스냅샷(ex. 2014-11-05)

이력

AWS  Config  &  Config  Rules  

§  AWS managed rules AWS가 정의 minimal (or no) configuration 필요 AWS에 의해 관리되는 Rules

§  Customer managed rules AWS Lambda를 사용하여 정의

Rules들이 해당 account에서 실행됨 관리책임은 고객 몫

기록된 구성정보의 검증을 체크하는 한개의 rule.  

Config  Rule  

§  변경작업에 의해 기동: Rules은 연관된 리소스가 변경될 때 기동. Config Rules를 기동시키는 변경 작업들:

§  Tag key/value

§  Resource types

§  Specific resource ID

e.g. ‘Production’으로 태깅된 EBS volume은 반드시 EC2 instance에 붙어 있어야 함.

§  주기적으로 기동: Rule이 지정된 빈도와 주기에 의해 실행됨.

e.g. 매 3시간 마다, 해당 Account가 3 대 이상의 “PCI v3” EC2 instance를 실행하고 있는지 확인.

Config  Rules  -­‐  Triggers  

1.  모든 EC2 instance들은 반드시 한개의 VPC상에 존재하여야 한다.

2.  모든 attached EBS volume들은 KMS ID를 가지고 반드시 암호화되어야 한다.

3.  CloudTrail은 반드시 활성화되어 있어야 하고, 선택적으로 S3 bucket, SNS topic, CloudWatch Logs와 함께 구성되는 것을 권장한다.

4.  Attach 된 상태의 모든 security group은 반드시 port 22를 포함한 지정된 포트에 대한 무제한 접근을 방지해야 한다.

5.  VPC안에 사용을 위해 할당된 모든 EIP들은 반드시 인스턴스에 할당되어 있어야 한다.

6.  모든 모니터링 되는 리소스들은 적절하게 tag keys:values로 태깅되어 있어야 한다.

AWS  managed  rules  

§  고객사 프랙티스를 자동화 하기 위해 코드로 구현.

§  AWS Lambda에 관련 샘플로 간단히 시작 가능.

§  보안 베스트 프랙티스와 컴플라이언스를 위한 가이드 라인 구현.

§  AWS파트너가 생성한 Rule도 활용가능.

§  단일 대쉬보드 상에 정리된 형태의 컴플라이언스 뷰를 제공.

Custom  rules  

Resource  Type Resource

Amazon  EC2 EC2  Instance  EC2  ElasLc  IP  (VPC  only)  EC2  Security  Group  EC2  Network  Interface

Amazon  EBS EBS  Volume

Amazon  VPC VPCs  Network  ACLs  Route  Table  Subnet  VPN  ConnecLon  Internet  Gateway  Customer  Gateway  VPN  Gateway

AWS  CloudTrail Trail

Iden&ty  and  Access  Management IAM  Users IAM  Groups IAM  Roles IAM  Customer  Managed  Policies

Amazon  EC2 Dedicated  Hosts

지원되는 리소스 타입

Thank you!

Seon Yong Park, AWS Solutions Architect

seonpark@amazon.com

top related