본문 바로가기

Compute

(17)
AWS EC2 User data script sample(node.js) AWS EC2의 User data에서 yarn install/run 명령어 수행이 되지 않음.. 초기 EC2 생성 시의 User data 아래와 같이 구성하면 되고, (https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/user-data.html) #!/bin/bash yum update -y amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2 yum install -y httpd mariadb-server systemctl start httpd systemctl enable httpd usermod -a -G apache ec2-user chown -R ec2-user:apache /var/w..
AWS EBS AMI 백업 1. EBS 백업 방법1-1. Data Lifecycle Manager EBS 태그를 기반 12 또는 24 시간 기준으로 EBS의 Snapshot을 수행한다. 또한 Snapshot의 갯수를 조절할 수 있다. (예시 최근 7개) 1-2. CloudWatch Event - EC2 CreateSnapshot API call CloudWatch Event를 통해서도 Snapshot이 가능하다. 문제는 아직 Delete API는 구성되지 않음. 2. EC2 Image 백업 방법아직 AWS에서 EC2 AMI에 대한 자동 백업 서비스는 없음.그러나 CloudWatch Event -> Lambda(aws sdk)를 통해서 아래와 같이 구현은 가능. ec2List.json: Image를 생성할 EC2와 AMI 이름, e..
AWS ELB Backend Connection Errors 오픈 준비중인 서비스에서 ELB에서 Backend Connection Errors 및 Surge Queue Length 발생. Request가 없으나 Backend Connection Errors가 일정하게 발생되며, Surge Queue Length가 쌓이기 시작. Surge Queue Length는 ELB의 Backend EC2에서 처리하지 못한 Request가 버퍼에 쌓이는 것, Backend Connection Errors는 Backend EC2와 세션 과정에서 문제가 발생되는 것을 의미. 주로 Backend 가용성 문제로 인해 발생되는 메트릭으로 준비중인 서비스에서 발생되는게 이상함..업무는 아니지만.. 확인해봄 Application, EC2 OS, log 상에서도 특이점은 확인되지 않음. 또한..
AWS NLB(Network Load Balancer) AWS NLB는 AWS Load Balancer에 Elastic IP(고정)을 부여할 수 있는 현재?까진 유일한 Load BalancerL4 수준(TCP)으로 지원합니다. 따라서 http cookie 방식의 sticky는 지원하지 않으며, tcp 세션을 350초 유지 LB와 묶일 수 있는 대상1. VPC 내의 EC2 Instance2. AWS 다른 대역의 리소스 혹은 VPN, DX로 터널링 된 Private IP 대역(10.0.0.0/8, 100.64.0.0/10, 172.16.0.0/12, 192.168.0.0/16만 가능) 1. Instance Taget Group 2. IP Taget Group 둘의 차이점은 1번과 같은 Instance ID를 이용한 형태로 Taget Group 지정 시 DSR(D..
AWS ElasticBeanstalk Root 경로 /var/app/current//var/www/html/ .extensinos sample files: "/etc/httpd/conf.d/vhost.conf": mode: "000644" owner: root group: root encoding: plain content: | NameVirtualHost *:80 DocumentRoot "/var/app/current/" Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted ServerName www.jschoi.net DocumentRoot "/var/app/current/jschoi" Options Indexes FollowSymLinks MultiViews A..
AWS Lambda 활용 태깅 없는 EC2 Instance 정지 Sample Code(Python boto3)1234567891011121314import boto3def lambda_handler(event, context): no_tag_instances = [] ec2 = boto3.client('ec2') instances = [i for i in boto3.resource('ec2', region_name='ap-northeast-2').instances.all()] # Print instance_id of instances that do not have a Tag of Key='Foo' for i in instances: if i.tags is None: no_tag_instances.append(i.instance_id); response = ec2.st..
AWS Lambda 활용 EIP 변경 방화벽 문제 등이나 기타 이유로 Elastic IP를 사용하는 서비스를 운영할 때 SPOF 발생(과거 NAT Gateway가 생기기 전에 NAT Instance 단일 장애 지점 문제와 같은...ELB는 아직 EIP를 지원하지 않음) 1. 필요한 Policy12345678910111213141516{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1491964068000", "Effect": "Allow", "Action": [ "ec2:AssociateAddress", "ec2:DescribeAddresses" ], "Resource": [ "*" ] } ]}Colored by Color Scriptercs 2. Role 생성(Trust relations..
Amazon EC2 태그 기준으로 Instance Private IP 확인 CLI 12345678910aws ec2 describe-instances --filters "Name=tag:Name,Values=wisen-blog-ec2" |jq '.Reservations[].Instances[0] | select(.State.Name == "running")' |jq '.PrivateIpAddress'(jq: https://stedolan.github.io/jq/) #!/bin/bashprivateIpList=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=wisen-blog-ec2" |jq '.Reservations[].Instances[0] | select(.State.Name == "running")' |jq '.Priv..