본문 바로가기

소프트웨어 이야기/인프라

(Phusion Passenger) 웹서버 - 패신저를 구성하는 방식 ( Mode ) 패신저에서 지원하는 3가지 패신저 & 웹서버 조합패신저에서 지원하는 패신저 & 웹서버 조합은 위처럼 세가지가 있다. StrandardAlone 모드 패신저안에 Nginx 엔진이 내장되어 있는 구조이다.그래서 따로 이것저것 Nginx나 Apache를 설치하지 않아도 된다.그래서 패신저 문서에서는 개발 환경 때 StrandAlone을 쓰는게 편하니, 이걸 사용하라고 권장한다.그리고 만약 한 서버에서 하나의 애플리케이션만 띄우는 방식으로 서버를 운영한다면, 프로덕션 모드에서도 StandardAlone 모드를 사용해도 괜찮다. Apache / Nginx Integration 모드 Apache나 Nginx 모듈을 사용해서, 패신저를 운영하는 방식을 의미한다. 이 모드는 개발 환경에서는 사용되지 않고, 프로덕션 환..
[인프라]방화벽 열려있는지 확인하기 1. 텔넷이 설치되어있는 경우, 텔넷으로 통신가능 여부를 확인할 수 있다. telnet naver.com 80 2. 그렇지 않은 경우, 아래의 명령문을 치면 통신 가능 여부를 확인할 수 있다. nc -z -v naver.com 80 만약, 방화벽 문제 등으로 서버에 붙을 수 없다면, Connection이라는 결과가 뜨지 않는다
[AWS] 애플리케이션 서버에서는 200을 내려줬는데, LB 단에서는 왜 5XX 응답 코드가 내려올까? 이번주는 트러블 슈팅을 많이 했던 한 주였다.그러면서 배웠던 내용을 정리하고자 한다. 호기심의 발단이번주에 메인 어플리케이션에서 통신하는 서버에서 장애가 발생하여, 에러가 발생했던 적이 있다. 그래서 AWS Cloud Watch로 당시의 응답코드를 확인해봤다. 확인해보니, 애플리케이션 서버 단에서는 항상 200을 리턴해줬었다. 반면 ELB에서는 5xx대의 HTTP 응답코드를 내려준 적이 있다는 이력이 남아 있었다.애플리케이션 단에서는 항상 200을 내려줬는데, ELB 단에서는 5XX대의 응답코드를 받았다고 하기에, 이상했다. 이 차이는 어디서 발생한걸까? 원인알고보니, 로드밸런서 단에서 알아서 5XX대의 응답코드를 내려주는 케이스가 있다는걸 알게되었다.(나와 비슷한 문제를 경험한 사람이 스택오버플로우에 ..
[RUBY]루비로 AWS Athena 사용하기 Gemaws-sdk gem 안에 athena 서비스를 사용할 수 있는 함수도 포함되어 있다. 함수 사용하는 방법 처음에 aws-sdk를 사용할 때는, 아테나에 쿼리를 보내면 바로 결과값을 리턴해주는 기능이 있을거라고 기대했다.마치 jdbc를 사용하듯이 사용할 수 있을줄 알았다. 그런데 약간 개념이 달랐다.참고링크 : ATHENA RUBY SDK 사용법 이렇게 클라이언트를 만들고client = Aws::Athena::Client.new(region: 'us-east-1') 이렇게 쿼리를 날리면, 이 때 날린 쿼리의 아이디가 담긴 객체가 리턴된다resp = client.start_query_execution({ query_string: "SELECT * FROM impressions WHERE year='2..
[AWS]beanstalk ssh 접속 에러 - NotAuthorizedError 상황예전에 EB CLI 명령문으로 빈스톡 서버에 접속하려고 하는데 에러가 난 적이 있었다. 당시의 에러 로그는 아래와 같았다. ebcli.objects.exceptions.NotAuthorizedError: Operation Denied. Signature expired: 20170626T164026Z is now earlier than 20170627T023518Z (20170627T024018Z - 5 min.) 원인로컬 컴퓨터의 시간이 실제 시간과 다르게 설정되어있으면 접속이 안된다. 기능 테스트 때문에 잠시 컴퓨터의 시간을 바꿔놨었는데, 이거 때문에 접속이 막혔던거다.
[AWS]beanstalk에서 로그 확인하기 빈스톡 서버에서 애플리케이션, 웹 서버의 로그를 확인하려면 아래의 폴더 경로에 들어가서 확인하면 된다. 그리고 예전에 만들어졌던 로그 파일을 확인해보고 싶을 때는, s3에 들어가서 확인하면 된다 내가 찾고자 하는 서버의 로그가 있는 폴더 경로를 찾기가 좀 어려우니, 잘 추적해서 들어가야한다. beanstalk를 사용하면, 앱 / 웹 서버 로그 로테이션도 알아서 관리해준다. (굿뜨~) 참고 문서 경로 : using-features.logging.html
[AWS]Athena 사용 팁 AWS Athena란?AWS Athena는 S3에 저장된 파일에 쿼리를 날리면, 데이터를 가져올 수 있게 해주는 AWS 서비스이다.구글의 빅쿼리랑 비슷한 서비스이다. AWS Athena를 왜 써야할까?인프라를 관리하지 않아도 된다대용량 로그파일을 분석하려면 이것저것 인프라 셋팅, 관리 등등이 필요하다.예를 들면, 스파크에 S3 로그 파일을 땡겨와서, 스파크 SQL을 날려서 데이터를 추출한다거나...이 경우, 데이터 분석을 위한 인프라를 셋팅해주고 관리해야한다. 그런데 아테나는 서버리스 서비스여서, 이러한 관리가 필요하지 않다. 비용 측면에서 이점이 있다분석을 위해 셋팅해놓은 인프라를 하루종일 꾸준히 쓰는게 아니라 특정한 시간대에만 사용한다거나,갑자기 분석해야하는 데이터가 급증할 경우,인프라가 펑펑 놀고 ..
(Phusion Passenger) 패신저는 뭐하는애일까 패신저는 프로세스를 관리하는 역할을 한다. 그리고 HTTP Request를 라우팅처리해준다. 패신저에서 프로세스란 개념은 무엇일까?레일즈 애플리케이션 인스턴스를 하나 실행시킨걸, 패신저의 프로세스로 보면 될 것 같다.레일즈 인스턴스를 하나 띄어놓는 것은 패신저가 프로세스를 하나 띄어놓는 것과 같다.그리고 레일즈 인스턴스를 하나 죽이는 것은, 패신저가 프로세스를 하나 죽이는 것과 같다. 패신저의 프로세스 개념에서 알아둬야하는건 뭘까?각 프로세스의 메모리는 다른 프로세스들과 분리된 영역이다. 프로세스 A에서 power_blogger='rails_blogger' 라고 변수를 할당해놔도, 프로세스 B에서는 power_blogger라는 변수를 가져다가 사용할 수 없다. 프로세스들끼리 데이터를 공유하려면 어떻게 해..