Cloud
-
RabbitMQ를 이용한 메세지 발행/구독 모델Cloud 2015. 3. 13. 09:00
워크큐에서는 하나의 메세지가 하나의 워커에게만 전달되지만 발행/구독 모델에서는 하나의 메세지가 모든 구독자에게 전달이 되는 구조. rabbitmq에서는 메세지를 바로 큐로 보내지 않고 exchange에 먼저 보내는데, 이 exchange 타입을 fanout으로 설정 하면 됨. 예제 emit_log.py #!/usr/bin/env python import pika import sys connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel() channel.exchange_declare(exchange='logs', type='fanout') message = ' ..
-
RabbitMQ 작업 큐로 이용하기Cloud 2015. 3. 12. 09:00
메세지를 받아간 워커가 작업중에 죽더라도 해당 메세지는 큐에 남아서 다른 워커에게 전달할 수 있게 하기위해서 RabbitMQ는 acknowledgments를 지원함. ack(nowledgments)는 워커가 메세지를 받아가서 처리했다는걸 RabbitMQ에게 알려서 RabbitMQ가 그 메세지를 지울 수 있게함. ack없이 워커가 죽으면 RabbitMQ는 그 메세지가 정상적으로 처리되지 않았다고 판단해서 다른 워커에게 메세지를 전달. 타임아웃은 없음. RabbitMQ 서버가 죽더라도 큐안의 메세지를 보존하기위해서는 durable 옵션을 True로 설정해서 큐를 생성함. 라운드로빈방식으로 메세지를 보내서 특정 워커에 작업이 쌓이는 것을 방지하기위해 basic_qos 옵션을 줄 수 있음. 메세지 흐름 구조 예..
-
RabbitMQ 파악하기Cloud 2015. 3. 11. 09:00
메세지 브로커(broker). 메세지를 중개/관리해주는 역할을 수행.데이터 전달, 논블럭킹 운영, 푸시 알림. 발행/구독, 비동기 처리, 작업 큐 등의 역할. 지원 프로토콜 : AMQP 0-9-1/0-9/0-8/1.0, STOMP, MQTT, HTTP 설치OS : Mac OS X 10.10.2RabbitMQ 버전 : 3.4.4 파일 다운로드 wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.4/rabbitmq-server-mac-standalone-3.4.4.tar.gztar zxvf rabbitmq-server-mac-standalone-3.4.4.tar.gzcd rabbitmq_server-3.4.4/ 서버 실행sbin/rabbitmq-serve..
-
AMQP(Advanced Message Queuing Protocol)Cloud 2015. 3. 10. 09:00
메세지 미들웨어용 표준 프로토콜. 애플리케이션 레이어 프로토콜.메세지 전달을 3가지 방식중 하나로 보장함.at-most-once : 각 메세지는 한번만 전달되거나 아예 전달되지 않음.at-least-once : 각 메세지는 최소 한번이상 전달되고 여러번 전달될수도 있음.exactly-once : 메세지는 딱 한번만 전달됨. 정의하고 있는 주요기능- 메세지 관리- 큐잉(queuing)- 라우팅(점대점, 발행/구독 포함)- 신뢰성- 보안 AMQP에서는 데이터의 기본단위를 프레임(frame)이라고 함. 메세지 초기화/관리/전송등을 위한 9개의 프레임 바디(frame body)가 있음.- open, begin, attach, transfer, flow, disposition, detach, end, close ..
-
trove 개념 잡기Cloud 2015. 2. 25. 09:00
OpenStack에서 관계형/비관계형 데이터베이스를 DBaaS로 제공하기 위한 프로젝트. Icehouse(2014. 04. 17)에서의 제공기능 - 사용자/스키마 관리 - Flavor/Cinder 볼륨 크기 변경 - 전체 기능 지원 DB : MySQL, Percona - 일부 기능 지원 DB : MongoDB, Redis, Cassandra, Couchbase - 설정 그룹 : 설정 옵션들의 집합을 정의함. - 백업/복구 : 전체/증분 백업 지원 Juno(2014. 10. 16)에서의 제공기능 - mysql 인스턴스의 비동기 replication(master-slave replicas) 지원 - 클러스터링 API 제공 : MongoDB 클러스터 지원 - Neutron 지원. 기존에는 nova-networ..
-
openstack 개념잡기Cloud 2015. 2. 23. 09:00
오픈소스 IaaS(Infrastructure as a Service) 프로젝트 compute, storage, network 등을 가상화해서 소프트웨어적으로 정의하고 사용할 수 있음.6개월주기로 새로운 릴리즈가 나옴.설치가 간단하지가 않음.성능좋은 실제 리눅스 장비가 있어야 제대로 테스트 해볼 수 있을듯. 테스트용으로 DevStack을 이용할 수 있음.http://docs.openstack.org/developer/devstack/맥에 virtualbox 이용해서 ubuntu server 64bit 14.04.1 설치한 상태에서 이용가능함. 여러개의 구성요소들로 이뤄져 있음. Nova - 컴퓨팅가장 기본구성요소.Austin 릴리즈부터 포함됐음.사용자가 원하는 하이퍼바이저를 선택해서 사용할 수 있음.(KV..
-
내가 만든 소스를 포함해서 docker 이미지 빌드하기Cloud 2015. 1. 30. 09:00
Dockerfile에 현재 디렉토리를 컨테이너의 /src 등 특정경로에 복사해 넣게 하면됨. 그외 실행에 필요한 환경은 RUN 명령어를 이용해서 컨테이너에 설정하면 됨. 모든 필요한 환경이 이미지에 포함되니까 나중에는 빌드된 이미지만 배포하면 실행은 문제없이 가능하게 되는구조. 다음 package.json, index.js, Dockerfile을 하나의 디렉토리에 만든다. package.json { "name": "docker-centos-hello", "private": true, "version": "0.0.1", "description": "Node.js Hello world app on CentOS using docker", "author": "Daniel Gasienica ", "dependen..
-
Dockerfile 구조Cloud 2015. 1. 28. 09:00
Dockerfile 이라는 파일에 docker에서 필요한 설정들을 해서 컨테이너를 원하는대로 설정할 수 있다. Dockerfile을 생성한 후 아래처럼 소스경로를 포함해서 빌드명령을 내리면 해당 경로를 기준으로 빌드가 실행된다. docker build /your/source/path 빌드에서 제외할 파일들은 .dockerignore 파일에 명시해서 제외할 수 있다. Dockfile안의 명령어들은 독립적으로 실행되어서 다음에 실행되는 명령에 영향을 미치지 않는다. Dockfile 구조 #을 이용해서 주석처리 "명령어 인자”의 형식 명령어는 대소문자를 구분하지는 않으나 가급적 대문자를 이용하는것이 보기 좋음. 각 명령어는 위에서부터 순서대로 실행됨 첫번째 명령어는 반드시 ‘FROM'이어야 함. ENV 명령어..