본문 바로가기

Compute

(22)
AWS EC2 User data script sample(node.js) AWS EC2의 User data에서 yarn install/run 명령어 수행이 되지 않음.. 초기 EC2 생성 시의 User data 아래와 같이 구성하면 되고 시작 시 Linux 인스턴스에서 명령 실행 - Amazon Elastic Compute Cloud 시작 시 Linux 인스턴스에서 명령 실행 Amazon EC2에서 인스턴스를 시작할 때 사용자 데이터를 인스턴스에 전달하여 일반적인 구성 작업을 자동으로 수행하는 데 사용하도록 할 수 있고, 인스턴스가 시작된 후에 스크립트를 실행할 수도 있습니다. Amazon EC2에 shell 스크립트 및 cloud-init 명령이라는 두 가지 유형의 사용자 데이터를 전달할 수 있습니다. 시작 마법사에 이 데이터를 일반 텍스트, 파일(명령줄 도구를 사용하여 인..
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 이름..
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 Balancer 이다. TCP 레이어를 지원한다. 따라서 http cookie 방식의 sticky는 지원하지 않으며, tcp 세션을 350초 유지한다고 한다. NLB의 장점은 클라이언트의 요청에 대해서 낮은 대기 시간으로 높은 처리가 가능하다는 것이다. 따라서 기존 ELB 사용 시에는 짧은 시간 내 스파크성 트래픽 발생에 대한 대응이 어려웠으나 NLB를 사용함으로 ELB의 단점을 해소할 수 있을 것이다. 또한 이벤트 등으로 사이트의 유입이 늘어날 것을 대비해 ELB의 Prewarm을 준비하곤 했으나, NLB를 사용함으로 ELB의 단점을 해소할 수 있을 것이다. NLB와 묶일 수 있는 대..
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) import boto3 def 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.stop_instances( Ins..
AWS Lambda 활용 EIP 변경 방화벽 문제 등이나 기타 이유로 Elastic IP를 사용하는 서비스를 운영할 때 SPOF 발생 (과거 NAT Gateway가 생기기 전에 NAT Instance 단일 장애 지점 문제와 같은...ELB는 아직 EIP를 지원하지 않음) 1. 필요한 Policy { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1491964068000", "Effect": "Allow", "Action": [ "ec2:AssociateAddress", "ec2:DescribeAddresses" ], "Resource": [ "*" ] } ] } 2. Role 생성(Trust relationsships) { "Version": "2012-10-17", "Statement": ..
AWS EC2 EIP 사용 시 HA 구성 외부 서비스와 API 통신 시에 외부 업체에서 보안을 이유상으로 고정 IP 몇 개 허용해 줄 때가 있다. 기존 IDC에서는 VIP를 통해 HA 구성을 했지만, Cloud에서 외부 API 서비스를 이용하기 위해 NAT 구성은 위험성이 있다. (NAT의 비용 및 네트워크 문제) 그 경우 보통 AWS 클라우드에서는 Elastic IP를 이용해서 사용하는데, 그 경우 해당 EC2는 SOPF(Single Of Point Failure) 상태가 된다. 그래서 나노 사이즈의 작은 EC2 Instance를 사용하여 2대의 EC2 Instance에 Health Check를 배치잡을 이용하여 Master 서버에 문제가 발생할 경우 Slave 서버로 EIP를 교체할 수 있다. 아래 간단한 샘플코드를 첨부한다. var AWS..
Amazon EC2 태그 기준으로 Instance Private IP 확인 CLI aws 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/bash privateIpList=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=wisen-blog-ec2" |jq '.Reservations[].Instances[0] | select(.State.Name == "running")' |jq '.PrivateIpAddr..
AWS ELB 사용 시 Apache 408/503 error log AWS ELB와 Apache 사용 시 Apache의 Access Log에 408/50X 에러 로그가 발생되는 경우가 있다. 이 증상은 ELB의 idle timeout과 Apache의 mod_reqtimeout 모듈과의 충돌로 발생된다. ELB의 idle timeout은 Back-end EC2 Instance와 세션 유지를 위한 timeout 시간이며, mod_reqtimeout은 웹 서버 보안 모듈이다. 1. ELB Idle timeout까지 ELB는 Back-end EC2 Instance와 TCP 세션 유지 2. mod_reqtimeout은 일정 시간(default 20~40초)이 경과해도 probe를 보내지 않는 세션을 공격으로 간주하고 차단(408 에러 발생) 3. ELB Idle timeout은 ..
AWS Lambda를 이용하여 Security Group 자동 제어 이번 블로그는 AWS의 How to Automatically Update Your Security Group .. AWS Lambda 블로깅 테스트 후기?입니다. 참고 How to Automatically Update Your Security Groups for Amazon CloudFront and AWS WAF by Using AWS Lambda | Amazon Web Services Update on June 14, 2018: We removed an out-of-date code sample. Update on August 23, 2018: We revised the “Configure your Lambda function’s trigger” procedure. Amazon CloudFront c..
Amazon EC2 MySQL 5.6 설치 https://gist.github.com/dragonjet/270cf0139df45d1b7690
AWS EBS Daily Snapshot aws node sdk를 이용해서 EBS Daily Snapshot를 생성해본다. aws sdk 사용 방법은 이번 블로깅 범위가 아니니 생략한다. 사전에 sdk 사용 방법은 숙지해야 한다. 참고 Node.js의 JavaScript용 AWS SDK Mac/Linux의 경우 ~/.aws/credentials에, Windows의 경우 C:\Users\USERNAME\.aws\credentials에 자격 증명 파일을 생성 [기본값] aws_access_key_id = your_access_key aws_secret_access_key = your_secret_key 자격 증명을 로드하는 다른 방법은 시작 안내서를 참조하십시오. 버킷 이름은 소문자, 숫자, 하이픈(-)을 포함할 수 있습니다. 각 레이블은 aws...
AWS EBS mount: unknown filesystem type ‘LVM2_member’ error 접근이 불가한 CentOS6.X EC2 Instance의 시스템 로그를 보기 위해 Amazon EC2 Instance에 Rood Disk를 Mount 하려 했으나 다음과 같은 Error가 발생되었습니다. mount: unknown filesystem type ‘LVM2_member’ 검색을 해보니 LVM으로 잡아놓은 파티션 디스크는 바로 Mount가 불가하네요. 아래 링크를 통해서 해결했습니다! EBS의 특성은 아니라고 생각됩니다만, AWS를 사용하면 이기종 간 Disk mount가 빈번할 듯 해서 카피하여 블로깅합니다. PissedOffAdmins » mount: unknown filesystem type ‘LVM2_member’ 2007 05.07 Category: Linux, OS / Tags: n..
AWS ELB Pre-warm 신청 양식 Elastic Load Balancer(ELB)의 경우 2대의 VM으로 구성된 HTTP정도로 생각하시면 됩니다. 기존 LB 장비에서 사용하는 VIP를 사용할 수 없습니다. 대신 Domain 기반의 End-Point를 제공합니다. ELB의 디폴트 성능 임계치는 나와있지 않습니다. 검색한 바로 초당 200~300 Request 처리가 가능하다고 되어 있습니다. 경험상 세션 임계치는 in/out 총 6만 세션이 디폴트 수치로 보입니다. 따라서 그보다 더 큰 부하 발생 시 ELB는 Scale up/out이 필요합니다. 일반적으로 linear 형태의 Traffic 증가는 ELB 자체적으로 Scale up/out이 됩니다. 그러나 step 형태의 Traffic은 AWS Case Open(ELB Pre-warm)을 ..
AWS EC2 Keypair 없이 사용하기 금일은 EC2에 Key Pair 없이 사용이 가능하도록 짧게 포스팅 하도록 한다. 먼저, 계정 생성은 미리 해놓자. $adduser leedoing $passwd leedoing 패스워드 입력 $vim /etc/ssh/sshd_config PasswordAuthentication no -> PasswordAuthentication yes 수정 $/etc/init.d/sshd restart sudo 권한 추가 /etc/sudoers #User privilege specification root ALL=(ALL:ALL) ALL 'user' ALL=(ALL:ALL) ALL 설정한 Instance가 재부팅 시에 다시 key pair를 요청할 수 있다. 그럴 경우 아래 내용에 따라 cloud-init config..
AWS Amazon Linux AMI에 node.js npm aws-sdk 설치 금일은 EC2 Amazon AMI에 node.js / Express / npm / aws-sdk를 구성한다. 인터넷에서 잘못된 정보로 헤매는 경우가 많아, 간단하게 정리해봄. 이것도 언젠가 잘못된 정보가 될 수 있으니 AWS Document를 참고하는게 낫다. 설치 전에 먼저 yum update를 한다. Tutorial: Setting Up Node.js on an Amazon EC2 Instance - AWS SDK for JavaScript The AWS Documentation website is getting a new look! Try it now and let us know what you think. Switch to the new look >> You can return to the ori..
AWS ELB Proxy Protocol 기능 활성화 하기(TCP) 금일은 TCP 통신을 위해서 ELB에 Proxy Protocol 정책을 추가해보도록 한다. 1. 개요 기본적으로 ELB는 http 및 https 통신에 한해서 Sticky Session 지원과 Client IP를 포워딩한다. 기존 http 헤더에서 x-forwarded-for/port/protocol 의 항목이 추가 됐다. 아래는 ELB를 통해 들어온 http 통신 header 값이다. { host: 'test-2139921278.ap-northeast-1.elb.amazonaws.com:8080', accept: '*/*', 'accept-encoding': 'gzip, deflate, sdch', 'accept-language': 'ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4', ..
Amazon EC2 접속 시 Disconnected: No supported authentication methods available 에러 잘 접속되던 EC2에 접속을 하려고 하니 Disconnected: No supported authentication methods available과 같은 에러가 발생되는 경우가 있습니다. 해당 문제는 EC2 /home/ec2-user 디렉터리의 퍼미션을 변경했을 때 발생됩니다. 기본적으로 /home 하위 디렉터리 구조는 다음과 같습니다. (test의 경우 제가 생성) /home/ec2-user 디렉터리 관련된 작업시에 ec2 접속에 문제가 발생될 수 있다는 것을 인지하고 있었지만, 실수로 ec2-user 해당 디렉터리를 삭제해버렸었습니다. 다시 ec2-user 디렉터리 생성 후 퍼미션 400 / 권한 ec2-user로 원복했으나, 재접속 시에 해당 문제가 발생했습니다. 다시 원복해도 발생되네요 -_ -..
AWS Lambda를 이용하여 S3 업로드된 파일 meta-data 변경 오늘은 Lambda에 관련 포스팅 Lambda를 이용하여 S3 업로드 시에 파일의 meta-data(헤더)를 변경해보도록 하겠음. meta-data를 통해 client가 vod(mp4) 파일을 스트리밍할 지, 강제로 다운로드 받을지 결정할 수 있음. App 서버에서 Client가 업로드 시 meta-data 수정 전/후 파일을 S3에 업로드 할 수 있지만, Lambda 학습할 겸 테스트 해봄. 1.Overview Lambda는 AWS의 event trigger function 서비스입니다. S3 / SNS 등에서 Event가 발생되면 Lambda에 호출을 하고 Lambda는 node / python / java 등을 이용하여 작업을 함. Lambda와 S3를 연동해서 썸네일, 파일의 메타 데이터 변경이 ..
AWS Elastic Block Store(EBS) 이해 EBS 관련 포스팅 1. AWS Disk? AWS의 Disk는 S3 / EBS / EFS 정도로 나눌 수 있음. S3는 Http 통신을 하는 대용량 스토리지 서버 EBS는 일반 Disk EFS는 Nas 정도로 생각하실 수 있음. 2. EBS 분류 EBS는 General Purpose SSD (이하 gp2) / Provisioned IPOS SSD(이하 io1) / Magnetic으로 나눌 수 있음. 1.GP2 가장 일반적인 Disk로 1GB~1.5TB Size를 지정할 수 있으며 볼륨 크기에 따라 IOPS를 보장.(1GB 당 3) 버스팅 기능이 있어 I/O가 발생되지 않는 시간동안 IOPS가 충전됩니다. 최대 3,000 IOPS까지 충전. 2. io2 프로비전 된 Disk로 용량에 상관없이 IOPS를 보..
Amazon EC2 입문 EC2 Console로 EC2 하나를 생성하며 대부분의 내용을 보겠음. 매달 매주 AWS Console에 접속할 때마다 신규 기능이 나와, 넷상에 있는 정보에 누락된 내용이 많다. 언젠간 이것도 누락되겠지. (2015-09 기준) 1. Choose AMI ​AMI 종류 My AMI : 자신이 만든 AMI입니다. AWS Marketplace : 보안 솔루션부터 DB등 약 2000여가지의 SaaS 형태의 솔루션을 이용할 수 있습니다. 솔루션에 따라 추가 비용이 발생될 수 있습니다. AWS의 경우 어플라이언스 장비를 사용하기 힘들기 때문에 Marketplace를 이용합니다. Markeplace에서 구매한 EBS 볼륨은 다른 인스턴스에 attach 할 수 없습니다. Communitiy AMIs : 다른 사용자가..