RabbitMQ 설치 가이드
Table of Contents
RabbitMQ 서비스 설치 2.1. Prerequisite 2.2. Stemcell 확인 2.3. Deployment 다운로드 2.4. Deployment 파일 수정 2.5. 서비스 설치 2.6. 서비스 설치 - 다운로드 된 PaaS-TA Release 파일 이용 방식 2.7. 서비스 설치 확인
RabbitMQ 연동 Sample App 설명 3.1. 서비스 브로커 등록 3.2. 서비스 신청 3.3. Sample App에 서비스 바인드 신청 및 App 확인
1. 문서 개요
1.1. 목적
본 문서는 전자정부표준프레임워크 기반의 PaaS-TA에서 제공되는 서비스팩인 RabbitMQ 서비스팩을 Bosh를 이용하여 설치 하는 방법과 PaaS-TA의 SaaS 형태로 제공하는 Application에서 RabbitMQ 서비스를 사용하는 방법을 기술하였다. PaaS-TA 3.5 버전부터는 Bosh2.0 기반으로 deploy를 진행하며 기존 Bosh1.0 기반으로 설치를 원할경우에는 PaaS-TA 3.1 이하 버전의 문서를 참고한다.
1.2. 범위
설치 범위는 RabbitMQ 서비스팩을 검증하기 위한 기본 설치를 기준으로 작성하였다.
1.3. 시스템 구성도
본 문서의 설치된 시스템 구성도이다. RabbitMQ(1대), RabbitMQ 서비스 브로커, haproxy로 최소사항을 구성하였다.

구분
스펙
paasta-rmq-broker
1vCPU / 1GB RAM / 8GB Disk
haproxy
1vCPU / 1GB RAM / 8GB Disk
rmq
1vCPU / 1GB RAM / 8GB Disk
1.4. 참고자료
http://bosh.io/docs http://docs.cloudfoundry.org/
2. RabbitMQ 서비스 설치
2.1. Prerequisite
본 설치 가이드는 Linux 환경에서 설치하는 것을 기준으로 하였다. 서비스 설치를 위해서는 BOSH 2.0과 PaaS-TA 5.0 이상, PaaS-TA 포털이 설치되어 있어야 한다.
2.2. Stemcell 확인
Stemcell 목록을 확인하여 서비스 설치에 필요한 Stemcell이 업로드 되어 있는 것을 확인한다. (PaaS-TA 5.5.1 과 동일 stemcell 사용)
$ bosh -e micro-bosh stemcells
2.3. Deployment 다운로드
서비스 설치에 필요한 Deployment를 Git Repository에서 받아 서비스 설치 작업 경로로 위치시킨다.
Service Deployment Git Repository URL : https://github.com/PaaS-TA/service-deployment/tree/v5.0.6
2.4. Deployment 파일 수정
BOSH Deployment manifest는 Components 요소 및 배포의 속성을 정의한 YAML 파일이다. Deployment 파일에서 사용하는 network, vm_type, disk_type 등은 Cloud config를 활용하고, 활용 방법은 BOSH 2.0 가이드를 참고한다.
Cloud config 설정 내용을 확인한다.
$ bosh -e micro-bosh cloud-config
common_vars.yml을 서버 환경에 맞게 수정한다.
RabbitMQ에서 사용하는 변수는 system_domain, paasta_admin_username, paasta_admin_password 이다.
$ vi ~/workspace/paasta-5.5.1/deployment/common/common_vars.yml
Deployment YAML에서 사용하는 변수 파일을 서버 환경에 맞게 수정한다.
$ vi ~/workspace/paasta-5.0/deployment/service-deployment/rabbitmq/vars.yml
2.5. 서비스 설치
서버 환경에 맞추어 Deploy 스크립트 파일의 VARIABLES 설정을 수정하고, Option file을 추가할지 선택한다.
(선택) -o operations/use-compiled-releases.yml (ubuntu-xenial/621.94로 컴파일 된 릴리즈 사용)
$ vi ~/workspace/paasta-5.5.1/deployment/service-deployment/rabbitmq/deploy.sh
서비스를 설치한다.
2.6. 서비스 설치 - 다운로드 된 PaaS-TA Release 파일 이용 방식
서비스 설치에 필요한 릴리즈 파일을 다운로드 받아 Local machine의 서비스 설치 작업 경로로 위치시킨다.
설치 릴리즈 파일 다운로드 : paasta-rabbitmq-2.0.tgz
서버 환경에 맞추어 Deploy 스크립트 파일의 VARIABLES 설정을 수정하고 Option file 및 변수를 추가한다.
(추가) -o operations/use-offline-releases.yml (미리 다운받은 offline 릴리즈 사용)
(추가) -v releases_dir=""
$ vi ~/workspace/paasta-5.5.1/deployment/service-deployment/rabbitmq/deploy.sh
서비스를 설치한다.
2.7. 서비스 설치 확인
설치 완료된 서비스를 확인한다.
$ bosh -e micro-bosh -d rabbitmq vms
3. RabbitMQ 연동 Sample App 설명
본 Sample App은 PaaS-TA에 배포되며 RabbitMQ의 서비스를 Provision과 Bind를 한 상태에서 사용이 가능하다.
3.1. 서비스 브로커 등록
RabbitMQ 서비스팩 배포가 완료 되었으면 Application에서 서비스 팩을 사용하기 위해서 먼저 RabbitMQ 서비스 브로커를 등록해 주어야 한다. 서비스 브로커 등록시에는 PaaS-TA에서 서비스 브로커를 등록할 수 있는 사용자로 로그인 하여야 한다
서비스 브로커 목록을 확인한다.
rabbitmq 서비스 브로커를 등록한다.
$ cf create-service-broker {서비스팩 이름} {서비스팩 사용자ID} {서비스팩 사용자비밀번호} http://{서비스팩 URL(IP)}
서비스팩 이름 : 서비스 팩 관리를 위해 PaaS-TA에서 보여지는 명칭이다. 서비스 Marketplace에서는 각각의 API 서비스 명이 보여지니 여기서 명칭은 서비스팩 리스트의 명칭이다. 서비스팩 사용자ID / 비밀번호 : 서비스팩에 접근할 수 있는 사용자 ID입니다. 서비스팩도 하나의 API 서버이기 때문에 아무나 접근을 허용할 수 없어 접근이 가능한 ID/비밀번호를 입력한다. 서비스팩 URL : 서비스팩이 제공하는 API를 사용할 수 있는 URL을 입력한다.
등록된 RabbitMQ 서비스 브로커를 확인한다.
$ cf service-brokers
접근 가능한 서비스 목록을 확인한다.
$ cf service-access
서비스 브로커 등록시 최초에는 접근을 허용하지 않는다. 따라서 access는 none으로 설정된다.
특정 조직에 해당 서비스 접근 허용을 할당하고 접근 서비스 목록을 다시 확인한다. (전체 조직)
$ cf enable-service-access p-rabbitmq
3.2. 서비스 신청
Sample App에서 RabbitMQ 서비스를 사용하기 위해서는 서비스 신청(Provision)을 해야 한다. *참고: 서비스 신청시 PaaS-TA에서 서비스를 신청 할 수 있는 사용자로 로그인이 되어 있어야 한다.
먼저 PaaS-TA Marketplace에서 서비스가 있는지 확인을 한다.
$ cf marketplace
Marketplace에서 원하는 서비스가 있으면 서비스 신청(Provision)을 한다.
$ cf create-service {서비스명} {서비스 플랜} {내 서비스명}
서비스명 : p-rabbitmq로 Marketplace에서 보여지는 서비스 명칭이다.
서비스플랜 : 서비스에 대한 정책으로 plans에 있는 정보 중 하나를 선택한다. RabbitMQ 서비스는 standard plan만 지원한다.
내 서비스명 : 내 서비스에서 보여지는 명칭이다. 이 명칭을 기준으로 환경 설정 정보를 가져온다.
생성된 rabbitmq 서비스 인스턴스를 확인한다.
$ cf services
3.3. Sample App에 서비스 바인드 신청 및 App 확인
서비스 신청이 완료되었으면 cf 에서 제공하는 rabbit-example-app을 다운로드해서 테스트를 진행한다.
참고: 서비스 Bind 신청시 PaaS-TA에서 서비스 Bind 신청 할 수 있는 사용자로 로그인이 되어 있어야 한다.
git을 통해 sample-app을 다운로드 한다.
--no-start 옵션으로 App을 배포한다.
--no-start: App 배포시 구동은 하지 않는다.
$cd rabbit-example-app
$cf push rabbit-example-app --no-start
Sample App에서 생성한 서비스 인스턴스 바인드 신청을 한다.
cf bind-service test-app my_rabbitmq_service
(참고) 바인드 후 App구동시 Mysql 서비스 접속 에러로 App 구동이 안될 경우 보안 그룹을 추가한다.
rule.json 화일을 만들고 아래와 같이 내용을 넣는다.
$ vi rule.json
보안 그룹을 생성한다.
$ cf create-security-group rabbitmq rule.json
모든 App에 Mysql 서비스를 사용할수 있도록 생성한 보안 그룹을 적용한다.
$ cf bind-running-security-group rabbitmq
바인드가 적용되기 위해서 App을 재기동한다.
cf restart test-app
App이 정상적으로 RabbitMQ 서비스를 사용하는지 확인한다.
브라우저에서 확인
http://test-app.<YOUR_DOMAIN>/write
http://test-app.<YOUR_DOMAIN>/read
스토어 엔드포인트 테스트
curl -XPOST -d 'test' http://test-app.<YOUR-DOMAIN>/store
curl -XGET http://test-app.<YOUR-DOMAIN>/store
큐 엔드포인트 테스트
curl -XPOST -d 'test' http://test-app.<YOUR-DOMAIN>/queues/<YOUR-QUEUE-NAME>
curl -XGET http://test-app.<YOUR-DOMAIN>/queues/<YOUR-QUEUE-NAME>
Last updated
Was this helpful?


