RabbitMQ 설치 가이드(Bosh-Lite)

1. 문서 개요

1.1. 목적

본 문서(RabbitMQ 서비스팩 설치 가이드)는 전자정부표준프레임워크 기반의 Open PaaS에서 제공되는 서비스팩인 RabbitMQ 서비스팩을 Bosh를 이용하여 설치 하는 방법과 Open PaaS의 SaaS 형태로 제공하는 Application 에서 RabbitMQ 서비스를 사용하는 방법을 기술하였다.

1.2. 범위

설치 범위는 RabbitMQ 서비스팩을 검증하기 위한 기본 설치를 기준으로 작성하였다.

1.3 시스템 구성도

본 문서의 설치된 시스템 구성도로써, RabbitMQ(2대), RabbitMQ 서비스 브로커, haproxy로 최소사항을 구성하였다.

1.4 참고자료

2. RabbitMQ 서비스팩 설치

2.1 설치전 준비사항

본 설치 가이드는 Linux 환경에서 설치하는 것을 기준으로 하였다. 서비스팩 설치를 위해서는 먼저 BOSH-lite 가 설치 되어 있어야 하고 BOSH 에 로그인 및 타켓 설정이 되어 있어야 한다. BOSH-lite 가 설치 되어 있지 않을 경우 먼저 BOSH-lite 설치 가이드 문서를 참고 하여 BOSH-lite를 설치 해야 한다.
OpenPaaS 에서 제공하는 릴리즈 파일들을 다운받는다. (OpenPaaS-Deployment, OpenPaaS-Sample-Apps, OpenPaaS-Services)
  • 다운로드 위치

2.2 RabbitMQ 서비스 릴리즈 업로드

  • OpenPaaS-Services 링크에 접속하여 RabbitMQ 서비스 릴리즈 openpaas-rabbitmq-release-1.0.tgz 파일을 다운로드한다.
  • 업로드할 openpaas-rabbitmq-release-1.0.tgz 파일을 확인한다.
$ ls –all
  • 업로드 되어 있는 릴리즈 목록을 확인한다.
$ bosh releases
RabbitMQ 서비스 릴리즈가 업로드 되어 있지 않은 것을 확인
  • RabbitMQ 서비스 릴리즈 파일을 업로드한다.
$ bosh upload release {서비스 릴리즈 파일 PATH} $ bosh upload release openpaas-rabbitmq-release-1.0.tgz
  • 업로드 된 RabbitMQ 릴리즈를 확인한다.
$ bosh releases
RabbitMQ 서비스 릴리즈가 업로드 되어 있는 것을 확인

2.3 RabbitMQ 서비스 Deployment 파일 수정 및 배포

BOSH Deployment manifest 는 components 요소 및 배포의 속성을 정의한 YAML 파일이다. Deployment manifest 에는 software를 설치 하기 위해서 어떤 Stemcell (OS, BOSH agent) 을 사용할것이며 Release (Software packages, Config templates, Scripts) 이름과 버전, VMs 용량, Jobs params 등을 정의가 되어 있다.
  • OpenPaaS-Deployment에 접속하여 폴더안에 있는 BOSH-Lite 용 RabbitMQ Deployment 화일인 openpaas-rabbitmq-lite.yml를 다운로드 한다.
  • 다운로드 받은 Deployment Yml 파일을 확인한다. (openpaas-rabbitmq-lite.yml)
$ ls –all
  • Director UUID를 확인한다.
    BOSH CLI가 배포에 대한 모든 작업을 허용하기위한 현재 대상 BOSH Director의 UUID와 일치해야한다. ‘bosh status’ CLI 을 통해서 현재 BOSH Director 에 target 되어 있는 UUID를 확인 할 수 있다.
$ bosh status
  • Deploy시 사용할 Stemcell을 확인한다. (Stemcell 3147 버전 사용)
$ bosh stemcells
Stemcell 목록이 존재 하지 않을 경우 BOSH 설치 가이드 문서를 참고 하여 Stemcell 3147 버전을 업로드를 해야 한다.
  • openpaas-rabbitmq-lite.yml Deployment 파일을 서버 환경에 맞게 수정한다.
$ vi openpaas-rabbitmq-lite.yml
1
# openpaas-rabbitmq-lite 설정 파일 내용
2
---
3
director_uuid: xxxxx #bosh status 에서 확인한 Director UUID을 입력(필수)
4
name: openpaas-rabbitmq-service # 서비스 배포이름(필수)
5
6
releases:
7
- name: openpaas-rabbitmq #서비스 릴리즈 이름(필수)
8
version: 1.0 #서비스 릴리즈 버전(필수): latest 시 업로드된 서비스 릴리즈 최신버전
9
10
jobs:
11
- name: rmq # job 이름 (rabbitmq 서버)
12
release: openpaas-rabbitmq # 릴리즈 이름
13
template: rabbitmq-server
14
instances: 2 # job 인스턴스 수(필수)
15
resource_pool: services-small
16
persistent_disk: 2048 # 영구적인 디스크 사이즈 2G
17
networks:
18
- name: services1 # 네크워크 블록에서 설정한 이름
19
static_ips:
20
- 10.244.9.6
21
- 10.244.9.18
22
23
- name: rmq-broker # 서비스 브로커 이름
24
release: openpaas-rabbitmq
25
template: rabbitmq-broker
26
instances: 1
27
resource_pool: services-small
28
persistent_disk: 512
29
networks:
30
- name: services1
31
static_ips:
32
- 10.244.9.14
33
34
- name: haproxy # job 이름 : haproxy
35
release: openpaas-rabbitmq
36
template: rabbitmq-haproxy
37
instances: 1
38
resource_pool: services-small
39
persistent_disk: 256
40
networks:
41
- name: services1
42
static_ips:
43
- 10.244.9.50
44
45
- name: broker-registrar
46
release: openpaas-rabbitmq
47
template: broker-registrar
48
instances: 1
49
lifecycle: errand
50
networks:
51
- name: services1
52
properties:
53
broker:
54
protocol: http
55
host: 10.244.9.14
56
port: 4567
57
name: p-rabbitmq
58
username: "admin"
59
password: "admin"
60
resource_pool: services-small
61
62
- name: broker-deregistrar
63
release: openpaas-rabbitmq
64
template: broker-deregistrar
65
instances: 1
66
lifecycle: errand
67
networks:
68
- name: services1
69
properties:
70
broker:
71
protocol: http
72
host: 10.244.9.14
73
port: 4567
74
name: p-rabbitmq
75
username: "admin"
76
password: "admin"
77
resource_pool: services-small
78
79
properties:
80
# for broker and route registrars
81
cf:
82
admin_password: "admin" # CF 어드민 아이디 비밀번호
83
admin_username: "admin" # CF 어드민 아이디
84
api_url: "http://api.115.68.46.30.xip.io"# CF API url
85
domain: "115.68.46.30.xip.io" # CF 도메인
86
nats: # CF 설치시 설치한 nats 정보
87
host: "10.244.0.6"
88
port: "4222"
89
username: "nats"
90
password: "nats"
91
route-registrar:
92
target_ip: "10.244.9.50" # 라우터 타켓 IP (haproxy IP)
93
rabbitmq-server:
94
plugins: # rabbitmq 플러그인 정보
95
- rabbitmq_management
96
- rabbitmq_mqtt
97
- rabbitmq_stomp
98
administrators:
99
broker:
100
username: broker #브로커에서 rabbitmq 서버에 접근하는 유저 아이디
101
password: CkY26kTuAyZT8r2
102
static_ips: # rabbitmq 서버 IP 목록
103
- 10.244.9.6
104
- 10.244.9.18
105
ssl: # SSL 정보
106
cert: |
107
-----BEGIN CERTIFICATE-----
108
MIIC+zCCAeOgAwIBAgIBAjANBgkqhkiG9w0BAQUFADAnMRUwEwYDVQQDEwxNeVRl
109
c3RSb290Q0ExDjAMBgNVBAcTBTY0MTAzMB4XDTE0MDkwNDA3MjIwOFoXDTI0MDkw
110
MTA3MjIwOFowKjEXMBUGA1UEAxMObWVyY3VyaW8ubG9jYWwxDzANBgNVBAoTBnNl
111
cnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANxxSzf958VIm8lp
112
qQ4BHSmz1z8yU/KEKSbuEfIqpGwpVx6TZ+ZYiXa0cMV2pE7UKR4OyJiuvtvv9kzu
113
6g+HTXmJo2cqVonGCAMp6d9TkCAMaMF76IrbLyGmvXQDcjOmWarvsGHW/w6gJpw9
114
svDP9EXyXTBUfaJq3T8+9UQBfMsL4dHwAt79YgvSQLsYiIi2rzQixK/4PHFeHf3G
115
I/UDgjG0YG9iCWp2g1Sc3Z6hYB/0pOCBxE7LCrSGS6/M/7c2569yK7NqSSNN7Lqz
116
ZoQSF1NYE6KRd2MK2A0QaKrn9v8K5/Lp0fk70bvwtLxTWtp3wq3bYQg8UdqY/6R8
117
UATS/aMCAwEAAaMvMC0wCQYDVR0TBAIwADALBgNVHQ8EBAMCBSAwEwYDVR0lBAww
118
CgYIKwYBBQUHAwEwDQYJKoZIhvcNAQEFBQADggEBAHC89mK1HJgDqwxjsGpa3V7t
119
Nuqe/XxEIUUN3Lm4gBLKq4wed4c6z4csv16f3uL9cypyHPSrQmMPV7CDgWLX4F7g
120
YN9PGaVfIp/rGNsDWJEVNU2rfIEDIUfcL+o844jE8CtmzZ4bGVrCHqKW5pAraai1
121
o5h3JaU4yDLo49rqPeRft2n/gj+5E3gi/1TsnuLuzB7kK1gaTTOrV3GASiGokCEN
122
4v1ZjaqMSGMcwA/esaLv2N6UYJgd5lyJ7PEL4ddE8QCTo2EPhYyltLxRqOjrxa+5
123
KONA94PDj14gOSSsoXkoj7gWQsuHT2RXmurYXk4/PkS+k1j0+ZCzKi/ZxF5jt50=
124
-----END CERTIFICATE-----
125
key: |
126
-----BEGIN RSA PRIVATE KEY-----
127
MIIEowIBAAKCAQEA3HFLN/3nxUibyWmpDgEdKbPXPzJT8oQpJu4R8iqkbClXHpNn
128
5liJdrRwxXakTtQpHg7ImK6+2+/2TO7qD4dNeYmjZypWicYIAynp31OQIAxowXvo
129
itsvIaa9dANyM6ZZqu+wYdb/DqAmnD2y8M/0RfJdMFR9omrdPz71RAF8ywvh0fAC
130
3v1iC9JAuxiIiLavNCLEr/g8cV4d/cYj9QOCMbRgb2IJanaDVJzdnqFgH/Sk4IHE
131
TssKtIZLr8z/tzbnr3Irs2pJI03surNmhBIXU1gTopF3YwrYDRBoquf2/wrn8unR
132
+TvRu/C0vFNa2nfCrdthCDxR2pj/pHxQBNL9owIDAQABAoIBAEaVH/h1m9hXP0pm
133
QnLxeFz58FmTy71DA8orQCPB85OOSQ7JM+NVRe50KAeRzVpQJDozkZcRnJrfYoWP
134
mfIO6IeZwnAt5jeG6Nnaeb/ACc25K3GIMxUCyTyFHvQehlpzURKiXF93b4NHVBWC
135
y+C/NP+QcrYe13tBrEWr6uwzbbm1JABlXXbMoK3QaEv+IgbDg6YtW7mqkjQpjW4K
136
oLUtmBUnVwT4RzrNEcGmY4jLy2F1HVfIwaqm66V8iOAtv+oGvSv+WTca9ddjfBrr
137
ovSJPXMOEt5lf8Yj+j6B00xUDykyzL3emovGYiH0QHRKSYVjnEYkcfvWwa166mE5
138
BCQ6IgECgYEA92jrvhpkoQmNV/d61iQvO7VlbWk4WQhXdooKwubqUQ7UTXCIHDHH
139
5mDueejqd7lX9yYgZtxxi6p4GVVoK6CZB64VqwfC6yh1UjZvgA8lEPhRwLd77Ii/
140
yaNnPpvEzUNxBP9bHg/L41LErwLp2IjPU+EEfkNwr/JjmDPK/StCrAMCgYEA5Bit
141
PLbPUVOnHbTM3GXT8E1wtAGrvGLt2EGQ13GrVG7pS4zEgFykszhKe7qaQrZw+CK8
142
aAsVZLtKoUPEkjZaP9A5/Ka5EdMbg2fFDGuaVb+CAZCCMQSa4wyAo5dkaeNlslbf
143
HlzJdE+38uGW0kF93Ba2YlN5lSro44jbB7ufReECgYEA1vhjXZqxNPuHxJdUNBzc
144
rZS/vIFgZHvLA0SOdSsPDb9E2MSef2EBwDsY+vRWRhDVTfnizX1da22DTP/Ys4+n
145
Z/Tq/uCPjKRqzDRgTXTbUBNzdW/4TV3Exv8kBlJyfafL2/vEwCoZjjusiiSN64d0
146
Hf22Wb9feoGx592Y0sFz/OECgYA8Nhdk84z+luqCePurImY0BP0/R0GiVSsb7xLh
147
DGyBuVV0UBB/IfWIKc/foX6fJbHkjqbVgDeBg79LmqwFPLvOJJVqEEjCX8vfgEEP
148
6kevYwJaj18OuXx5ew9qH8it+w0Zar0zMqMrRO/1+X7quccTlhtHEWoC6nTXu4S2
149
Id0FgQKBgCGNRs4rPJ4MrKn/khm2yVHG0MKKJQRhY4k5CKFq+89WQZiHA2n1z72M
150
Pg/ph3WFwppZs/uEUuDmdTpM/9nIkIR4TUH55xi4zJbfWXLbKvUKCOjkze3U8t1S
151
x4fDjuJAz2rzIMyfYaCQWB1MPrwk/247HADyqEB7tsRJdKpF0rBe
152
-----END RSA PRIVATE KEY-----
153
cacert: |
154
-----BEGIN CERTIFICATE-----
155
MIIC7jCCAdagAwIBAgIJAOVQO4z11jrPMA0GCSqGSIb3DQEBBQUAMCcxFTATBgNV
156
BAMTDE15VGVzdFJvb3RDQTEOMAwGA1UEBxMFNjQxMDMwHhcNMTQwOTA0MDcyMjA4
157
WhcNMjQwOTAxMDcyMjA4WjAnMRUwEwYDVQQDEwxNeVRlc3RSb290Q0ExDjAMBgNV
158
BAcTBTY0MTAzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuXXjHbjm
159
LnX8r04/XCQNroV/n483LmhVzZhpR1Fe3iV7aR/QNnMlIoNlHvccxydnO/AOYkN9
160
97oGj99oPZnUElYGbQCoFLwthcoEXRkaJCqNRSc4JiZbqkqbeZGUExXcYPNUaMjJ
161
2JRmn5V3RofaodPrT2SkXsXwDJlj+Um1yDIOjJ7yGzbrVzT89Nduo7ehQKmb6YIn
162
EIf2cP5yviMrPVi4mqNwUjKhnAiENz1t0c53HnjYssG7TsjZiE9fxcqDtisG7QTU
163
MNkqv6P2WtOYITi6AxB7B5db/ou0BOLZ7KSUa4b/j9o13nrFQyS0xf7jHmTcOO+r
164
4jmHirwcAXzo3wIDAQABox0wGzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjAN
165
BgkqhkiG9w0BAQUFAAOCAQEASuQmBRxtMRx1/Oiozh+MiJLrcN9Q53BrQ2tl8QeG
166
SUQ5r1jBezBhGDN684TJOgZrgQrukspN0dT9i41rRGhu1IXBgkehChfR7PYt5vww
167
MPz2uCYoAQZJgbbSK+X7ZNE4E3Tao+hrUKL3vu9awEptPdkUH4vBBT88GzzqRJxw
168
/BmqGdTGCLsZzlO0Jrc6o9NZLPh4SEn3d22Dz2yzN5x6rxWS1yHWRK/a7eEn0gkd
169
NqEeEGnW/T0WA/FosIxUEXyP1d252yeeV47LfJsV6qHg0ksRPQFJfW71Nzi3NQTr
170
3nizs9vfxcMfGQ88CyUQSvZ4CVdF3lYbw8a96NHJH71ROQ==
171
-----END CERTIFICATE-----
172
rabbitmq-haproxy: # rabbitmq haproxy 에서 허용하는 포트 목록
173
ports:
174
- 5672
175
- 5671
176
- 1883
177
- 8883
178
- 61613
179
- 61614
180
- 15672
181
- 15674
182
server_ips: # rabbitmq 서버 IP 목록
183
- 10.244.9.6
184
- 10.244.9.10
185
stats:
186
password: admin # 서비스 브로커 비밀번호
187
username: admin # 서비스 브로커 아이디
188
rabbitmq-broker:
189
cc_endpoint: http://api.10.244.0.34.xip.io # CF 설치시 설정한 API endpoint
190
uaa_client: # UAA client 정보
191
client_id: cf # UAA client 아이디
192
username: "admin" # 사용자명
193
password: "admin" # 사용자 비밀번호
194
service: # 서비스 브로커 정보
195
username: "admin"
196
password: "admin"
197
url: http://10.244.9.14:4567 # 서비스 브로커 URL
198
logging: # 로깅 정보
199
level: debug
200
print_stack_traces: false
201
rabbitmq:
202
operator_set_policy: # rabbitmq 권한 정책 설정
203
enabled: true
204
policy_name: "operator_set_policy"
205
policy_definition: "{\"ha-mode\":\"exactly\",\"ha-params\":2,\"ha-sync-mode\":\"automatic\"}"
206
policy_priority: 50
207
management_domain: pivotal-rabbitmq.10.244.0.34.xip.io # 관리 도메인
208
ssl: |
209
-----BEGIN CERTIFICATE-----
210
MIIC+zCCAeOgAwIBAgIBAjANBgkqhkiG9w0BAQUFADAnMRUwEwYDVQQDEwxNeVRl
211
c3RSb290Q0ExDjAMBgNVBAcTBTY0MTAzMB4XDTE0MDkwNDA3MjIwOFoXDTI0MDkw
212
MTA3MjIwOFowKjEXMBUGA1UEAxMObWVyY3VyaW8ubG9jYWwxDzANBgNVBAoTBnNl
213
cnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANxxSzf958VIm8lp
214
qQ4BHSmz1z8yU/KEKSbuEfIqpGwpVx6TZ+ZYiXa0cMV2pE7UKR4OyJiuvtvv9kzu
215
6g+HTXmJo2cqVonGCAMp6d9TkCAMaMF76IrbLyGmvXQDcjOmWarvsGHW/w6gJpw9
216
svDP9EXyXTBUfaJq3T8+9UQBfMsL4dHwAt79YgvSQLsYiIi2rzQixK/4PHFeHf3G
217
I/UDgjG0YG9iCWp2g1Sc3Z6hYB/0pOCBxE7LCrSGS6/M/7c2569yK7NqSSNN7Lqz
218
ZoQSF1NYE6KRd2MK2A0QaKrn9v8K5/Lp0fk70bvwtLxTWtp3wq3bYQg8UdqY/6R8
219
UATS/aMCAwEAAaMvMC0wCQYDVR0TBAIwADALBgNVHQ8EBAMCBSAwEwYDVR0lBAww
220
CgYIKwYBBQUHAwEwDQYJKoZIhvcNAQEFBQADggEBAHC89mK1HJgDqwxjsGpa3V7t
221
Nuqe/XxEIUUN3Lm4gBLKq4wed4c6z4csv16f3uL9cypyHPSrQmMPV7CDgWLX4F7g
222
YN9PGaVfIp/rGNsDWJEVNU2rfIEDIUfcL+o844jE8CtmzZ4bGVrCHqKW5pAraai1
223
o5h3JaU4yDLo49rqPeRft2n/gj+5E3gi/1TsnuLuzB7kK1gaTTOrV3GASiGokCEN
224
4v1ZjaqMSGMcwA/esaLv2N6UYJgd5lyJ7PEL4ddE8QCTo2EPhYyltLxRqOjrxa+5
225
KONA94PDj14gOSSsoXkoj7gWQsuHT2RXmurYXk4/PkS+k1j0+ZCzKi/ZxF5jt50=
226
-----END CERTIFICATE-----
227
hosts:
228
- 10.244.9.50 # haproxy IP
229
administrator: # rabbitmq 서버 관리자 정보
230
username: broker
231
password: CkY26kTuAyZT8r2
232
233
234
networks: # 네트워크 블록에 나열된 각 서브 블록이 참조 할 수있는 작업이 네트워크 구성을 지정, bosh lite 에서는 제공하는 네트워크를 수정 없이 사용
235
- name: services1
236
subnets:
237
- cloud_properties:
238
name: random
239
range: 10.244.9.0/30
240
reserved:
241
- 10.244.9.1
242
static:
243
- 10.244.9.2
244
- cloud_properties:
245
name: random
246
range: 10.244.9.4/30
247
reserved:
248
- 10.244.9.5
249
static:
250
- 10.244.9.6
251
- cloud_properties:
252
name: random
253
range: 10.244.9.8/30
254
reserved:
255
- 10.244.9.9
256
static:
257
- 10.244.9.10
258
- cloud_properties:
259
name: random
260
range: 10.244.9.12/30
261
reserved:
262
- 10.244.9.13
263
static:
264
- 10.244.9.14
265
- cloud_properties:
266
name: random
267
range: 10.244.9.16/30
268
reserved:
269
- 10.244.9.17
270
static:
271
- 10.244.9.18
272
- cloud_properties:
273
name: random
274
range: 10.244.9.20/30
275
reserved:
276
- 10.244.9.21
277
static:
278
- 10.244.9.22
279
- cloud_properties:
280
name: random
281
range: 10.244.9.24/30
282
reserved:
283
- 10.244.9.25
284
static:
285
- 10.244.9.26
286
- cloud_properties:
287
name: random
288
range: 10.244.9.28/30
289
reserved:
290
- 10.244.9.29
291
static:
292
- 10.244.9.30
293
- cloud_properties:
294
name: random
295
range: 10.244.9.32/30
296
reserved:
297
- 10.244.9.33
298
static:
299
- 10.244.9.34
300
- cloud_properties:
301
name: random
302
range: 10.244.9.36/30
303
reserved:
304
- 10.244.9.37
305
static:
306
- 10.244.9.38
307
- cloud_properties:
308
name: random
309
range: 10.244.9.40/30
310
reserved:
311
- 10.244.9.41
312
static:
313
- 10.244.9.42
314
- cloud_properties:
315
name: random
316
range: 10.244.9.44/30
317
reserved:
318
- 10.244.9.45
319
static:
320
- 10.244.9.46
321
- cloud_properties:
322
name: random
323
range: 10.244.9.48/30
324
reserved:
325
- 10.244.9.49
326
static:
327
- 10.244.9.50
328
- cloud_properties:
329
name: random
330
range: 10.244.9.52/30
331
reserved:
332
- 10.244.9.53
333
static:
334
- 10.244.9.54
335
- cloud_properties:
336
name: random
337
range: 10.244.9.56/30
338
reserved:
339
- 10.244.9.57
340
static:
341
- 10.244.9.58
342
- cloud_properties:
343
name: random
344
range: 10.244.9.60/30
345
reserved:
346
- 10.244.9.61
347
static:
348
- 10.244.9.62
349
- cloud_properties:
350
name: random
351
range: 10.244.9.64/30
352
reserved:
353
- 10.244.9.65
354
static:
355
- 10.244.9.66
356
- cloud_properties:
357
name: random
358
range: 10.244.9.68/30
359
reserved:
360
- 10.244.9.69
361
static:
362
- 10.244.9.70
363
- cloud_properties:
364
name: random
365
range: 10.244.9.72/30
366
reserved:
367
- 10.244.9.73
368
static:
369
- 10.244.9.74
370
- cloud_properties:
371
name: random
372
range: 10.244.9.76/30
373
reserved:
374
- 10.244.9.77
375
static:
376
- 10.244.9.78
377
- cloud_properties:
378
name: random
379
range: 10.244.9.80/30
380
reserved:
381
- 10.244.9.81
382
static:
383
- 10.244.9.82
384
- cloud_properties:
385
name: random
386
range: 10.244.9.84/30
387
reserved:
388
- 10.244.9.85
389
static:
390
- 10.244.9.86
391
- cloud_properties:
392
name: random
393
range: 10.244.9.88/30
394
reserved:
395
- 10.244.9.89
396
static:
397
- 10.244.9.90
398
- cloud_properties:
399
name: random
400
range: 10.244.9.92/30
401
reserved:
402
- 10.244.9.93
403
static:
404
- 10.244.9.94
405
- cloud_properties:
406
name: random
407
range: 10.244.9.96/30
408
reserved:
409
- 10.244.9.97
410
static:
411
- 10.244.9.98
412
- cloud_properties:
413
name: random
414
range: 10.244.9.100/30
415
reserved:
416
- 10.244.9.101
417
static:
418
- 10.244.9.102
419
- cloud_properties:
420
name: random
421
range: 10.244.9.104/30
422
reserved:
423
- 10.244.9.105
424
static:
425
- 10.244.9.106
426
- cloud_properties:
427
name: random
428
range: 10.244.9.108/30
429
reserved:
430
- 10.244.9.109
431
static:
432
- 10.244.9.110
433
- cloud_properties:
434
name: random
435
range: 10.244.9.112/30
436
reserved:
437
- 10.244.9.113
438
static:
439
- 10.244.9.114
440
- cloud_properties:
441
name: random
442
range: 10.244.9.116/30
443
reserved:
444
- 10.244.9.117
445
static:
446
- 10.244.9.118
447
- cloud_properties:
448
name: random
449
range: 10.244.9.120/30
450
reserved:
451
- 10.244.9.121
452
static:
453
- 10.244.9.122
454
- cloud_properties:
455
name: random
456
range: 10.244.9.124/30
457
reserved:
458
- 10.244.9.125
459
static:
460
- 10.244.9.126
461
- cloud_properties:
462
name: random
463
range: 10.244.9.128/30
464
reserved:
465
- 10.244.9.129
466
static:
467
- 10.244.9.130
468
- cloud_properties:
469
name: random
470
range: 10.244.9.132/30
471
reserved:
472
- 10.244.9.133
473
static:
474
- 10.244.9.134
475
- cloud_properties:
476
name: random
477
range: 10.244.9.136/30
478
reserved:
479
- 10.244.9.137
480
static:
481
- 10.244.9.138
482
- cloud_properties:
483
name: random
484
range: 10.244.9.140/30
485
reserved:
486
- 10.244.9.141
487
static:
488
- 10.244.9.142
489
- cloud_properties:
490
name: random
491
range: 10.244.9.144/30
492
reserved:
493
- 10.244.9.145
494
static:
495
- 10.244.9.146
496
- cloud_properties:
497
name: random
498
range: 10.244.9.148/30
499
reserved:
500
- 10.244.9.149
501
static:
502
- 10.244.9.150
503
- cloud_properties:
504
name: random
505
range: 10.244.9.152/30
506
reserved:
507
- 10.244.9.153
508
static:
509
- 10.244.9.154
510
- cloud_properties:
511
name: random
512
range: 10.244.9.156/30
513
reserved:
514
- 10.244.9.157
515
static:
516
- 10.244.9.158
517
- cloud_properties:
518
name: random
519
range: 10.244.9.160/30
520
reserved:
521
- 10.244.9.161
522
static:
523
- 10.244.9.162
524
- cloud_properties:
525
name: random
526
range: 10.244.9.164/30
527
reserved:
528
- 10.244.9.165
529
static:
530
- 10.244.9.166
531
- cloud_properties:
532
name: random
533
range: 10.244.9.168/30
534
reserved:
535
- 10.244.9.169
536
static:
537
- 10.244.9.170
538
- cloud_properties:
539
name: random
540
range: 10.244.9.172/30
541
reserved:
542
- 10.244.9.173
543
static:
544
- 10.244.9.174
545
- cloud_properties:
546
name: random
547
range: 10.244.9.176/30
548
reserved:
549
- 10.244.9.177
550
static:
551
- 10.244.9.178
552
- cloud_properties:
553
name: random
554
range: 10.244.9.180/30
555
reserved:
556
- 10.244.9.181
557
static:
558
- 10.244.9.182
559
- cloud_properties:
560
name: random
561
range: 10.244.9.184/30
562
reserved:
563
- 10.244.9.185
564
static:
565
- 10.244.9.186
566
- cloud_properties:
567
name: random
568
range: 10.244.9.188/30
569
reserved:
570
- 10.244.9.189
571
static:
572
- 10.244.9.190
573
- cloud_properties:
574
name: random
575
range: 10.244.9.192/30
576
reserved:
577
- 10.244.9.193
578
static:
579
- 10.244.9.194
580
- cloud_properties:
581
name: random
582
range: 10.244.9.196/30
583
reserved:
584
- 10.244.9.197
585
static:
586
- 10.244.9.198
587
- cloud_properties:
588
name: random
589
range: 10.244.9.200/30
590
reserved:
591
- 10.244.9.201
592
static:
593
- 10.244.9.202
594
- cloud_properties:
595
name: random
596
range: 10.244.9.204/30
597
reserved:
598
- 10.244.9.205
599
static:
600
- 10.244.9.206
601
- cloud_properties:
602
name: random
603
range: 10.244.9.208/30
604
reserved:
605
- 10.244.9.209
606
static:
607
- 10.244.9.210
608
- cloud_properties:
609
name: random
610
range: 10.244.9.212/30
611
reserved:
612
- 10.244.9.213
613
static:
614
- 10.244.9.214
615
- cloud_properties:
616
name: random
617
range: 10.244.9.216/30
618
reserved:
619
- 10.244.9.217
620
static:
621
- 10.244.9.218
622
- cloud_properties:
623
name: random
624
range: 10.244.9.220/30
625
reserved:
626
- 10.244.9.221
627
static:
628
- 10.244.9.222
629
- cloud_properties:
630
name: random
631
range: 10.244.9.224/30
632
reserved:
633
- 10.244.9.225
634
static:
635
- 10.244.9.226
636
- cloud_properties:
637
name: random
638
range: 10.244.9.228/30
639
reserved:
640
- 10.244.9.229
641
static:
642
- 10.244.9.230
643
- cloud_properties:
644
name: random
645
range: 10.244.9.232/30
646
reserved:
647
- 10.244.9.233
648
static:
649
- 10.244.9.234
650
- cloud_properties:
651
name: random
652
range: 10.244.9.236/30
653
reserved:
654
- 10.244.9.237
655
static:
656
- 10.244.9.238
657
- cloud_properties:
658
name: random
659
range: 10.244.9.240/30
660
reserved:
661
- 10.244.9.241
662
static:
663
- 10.244.9.242
664
- cloud_properties:
665
name: random
666
range: 10.244.9.244/30
667
reserved:
668
- 10.244.9.245
669
static:
670
- 10.244.9.246
671
- cloud_properties:
672
name: random
673
range: 10.244.9.248/30
674
reserved:
675
- 10.244.9.249
676
static:
677
- 10.244.9.250
678
- cloud_properties:
679
name: random
680
range: 10.244.9.252/30
681
reserved:
682
- 10.244.9.253
683
static:
684
- 10.244.9.254
685
- cloud_properties:
686
name: random
687
range: 10.244.10.0/30
688
reserved:
689
- 10.244.10.1
690
static: []
691
- cloud_properties:
692
name: random
693
range: 10.244.10.4/30
694
reserved:
695
- 10.244.10.5
696
static: []
697
- cloud_properties:
698
name: random
699
range: 10.244.10.8/30
700
reserved:
701
- 10.244.10.9
702
static: []
703
- cloud_properties:
704
name: random
705
range: 10.244.10.12/30
706
reserved:
707
- 10.244.10.13
708
static: []
709
- cloud_properties:
710
name: random
711
range: 10.244.10.16/30
712
reserved:
713
- 10.244.10.17
714
static: []
715
- cloud_properties:
716
name: random
717
range: 10.244.10.20/30
718
reserved:
719
- 10.244.10.21
720
static: []
721
- cloud_properties:
722
name: random
723
range: 10.244.10.24/30
724
reserved:
725
- 10.244.10.25
726
static: []
727
- cloud_properties:
728
name: random
729
range: 10.244.10.28/30
730
reserved:
731
- 10.244.10.29
732
static: []
733
- cloud_properties:
734
name: random
735
range: 10.244.10.32/30
736
reserved:
737
- 10.244.10.33
738
static: []
739
- cloud_properties:
740
name: random
741
range: 10.244.10.36/30
742
reserved:
743
- 10.244.10.37
744
static: []
745
- cloud_properties:
746
name: random
747
range: 10.244.10.40/30
748
reserved:
749
- 10.244.10.41
750
static: []
751
- cloud_properties:
752
name: random
753
range: 10.244.10.44/30
754
reserved:
755
- 10.244.10.45
756
static: []
757
- cloud_properties:
758
name: random
759
range: 10.244.10.48/30
760
reserved:
761
- 10.244.10.49
762
static: []
763
- cloud_properties:
764
name: random
765
range: 10.244.10.52/30
766
reserved:
767
- 10.244.10.53
768
static: []
769
- cloud_properties:
770
name: random
771
range: 10.244.10.56/30
772
reserved:
773
- 10.244.10.57
774
static: []
775
- cloud_properties:
776
name: random
777
range: 10.244.10.60/30
778
reserved:
779
- 10.244.10.61
780
static: []
781
- cloud_properties:
782
name: random
783
range: 10.244.10.64/30
784
reserved:
785
- 10.244.10.65
786
static: []
787
- cloud_properties:
788
name: random
789
range: 10.244.10.68/30
790
reserved:
791
- 10.244.10.69
792
static: []
793
- cloud_properties:
794
name: random
795
range: 10.244.10.72/30
796
reserved:
797
- 10.244.10.73
798
static: []
799
- cloud_properties:
800
name: random
801
range: 10.244.10.76/30
802
reserved:
803
- 10.244.10.77
804
static: []
805
- cloud_properties:
806
name: random
807
range: 10.244.10.80/30
808
reserved:
809
- 10.244.10.81
810
static: []
811
- cloud_properties:
812
name: random
813
range: 10.244.10.84/30
814
reserved:
815
- 10.244.10.85
816
static: []
817
- cloud_properties:
818
name: random
819
range: 10.244.10.88/30
820
reserved:
821
- 10.244.10.89
822
static: []
823
- cloud_properties:
824
name: random
825
range: 10.244.10.92/30
826
reserved:
827
- 10.244.10.93
828
static: []
829
- cloud_properties:
830
name: random
831
range: 10.244.10.96/30
832
reserved:
833
- 10.244.10.97
834
static: []
835
- cloud_properties:
836
name: random
837
range: 10.244.10.100/30
838
reserved:
839
- 10.244.10.101
840
static: []
841
- cloud_properties:
842
name: random
843
range: 10.244.10.104/30
844
reserved:
845
- 10.244.10.105
846
static: []
847
- cloud_properties:
848
name: random
849
range: 10.244.10.108/30
850
reserved:
851
- 10.244.10.109
852
static: []
853
- cloud_properties:
854
name: random
855
range: 10.244.10.112/30
856
reserved:
857
- 10.244.10.113
858
static: []
859
- cloud_properties:
860
name: random
861
range: 10.244.10.116/30
862
reserved:
863
- 10.244.10.117
864
static: []
865
- cloud_properties:
866
name: random
867
range: 10.244.10.120/30
868
reserved:
869
- 10.244.10.121
870
static: []
871
- cloud_properties:
872
name: random
873
range: 10.244.10.124/30
874
reserved:
875
- 10.244.10.125
876
static: []
877
- cloud_properties:
878
name: random
879
range: 10.244.10.128/30
880
reserved:
881
- 10.244.10.129
882
static: []
883
- cloud_properties:
884
name: random
885
range: 10.244.10.132/30
886
reserved:
887
- 10.244.10.133
888
static: []
889
- cloud_properties:
890
name: random
891
range: 10.244.10.136/30
892
reserved:
893
- 10.244.10.137
894
static: []
895
- cloud_properties:
896
name: random
897
range: 10.244.10.140/30
898
reserved:
899
- 10.244.10.141
900
static: []
901
- cloud_properties:
902
name: random
903
range: 10.244.10.144/30
904
reserved:
905
- 10.244.10.145
906
static: []
907
- cloud_properties:
908
name: random
909
range: 10.244.10.148/30
910
reserved:
911
- 10.244.10.149
912
static: []
913
- cloud_properties:
914
name: random
915
range: 10.244.10.152/30
916
reserved:
917
- 10.244.10.153
918
static: []
919
- cloud_properties:
920
name: random
921
range: 10.244.10.156/30
922
reserved:
923
- 10.244.10.157
924
static: []
925
- cloud_properties:
926
name: random
927
range: 10.244.10.160/30
928
reserved:
929
- 10.244.10.161
930
static: []
931
- cloud_properties:
932
name: random
933
range: 10.244.10.164/30
934
reserved:
935
- 10.244.10.165
936
static: []
937
- cloud_properties:
938
name: random
939
range: 10.244.10.168/30
940
reserved:
941
- 10.244.10.169
942
static: []
943
- cloud_properties:
944
name: random
945
range: 10.244.10.172/30
946
reserved:
947
- 10.244.10.173
948
static: []
949
- cloud_properties:
950
name: random
951
range: 10.244.10.176/30
952
reserved:
953
- 10.244.10.177
954
static: []
955
- cloud_properties:
956
name: random
957
range: 10.244.10.180/30
958
reserved:
959
- 10.244.10.181
960
static: []
961
- cloud_properties:
962
name: random
963
range: 10.244.10.184/30
964
reserved:
965
- 10.244.10.185
966
static: []
967
- cloud_properties:
968
name: random
969
range: 10.244.10.188/30
970
reserved:
971
- 10.244.10.189
972
static: []
973
- cloud_properties:
974
name: random
975
range: 10.244.10.192/30
976
reserved:
977
- 10.244.10.193
978
static: []
979
- cloud_properties:
980
name: random
981
range: 10.244.10.196/30
982
reserved:
983
- 10.244.10.197
984
static: []
985
- cloud_properties:
986
name: random
987
range: 10.244.10.200/30
988
reserved:
989
- 10.244.10.201
990
static: []
991
- cloud_properties:
992
name: random
993
range: 10.244.10.204/30
994
reserved:
995
- 10.244.10.205
996
static: []
997
- cloud_properties:
998
name: random
999
range: 10.244.10.208/30
1000
reserved:
1001
- 10.244.10.209
1002
static: []
1003
- cloud_properties:
1004
name: random
1005
range: 10.244.10.212/30
1006
reserved:
1007
- 10.244.10.213
1008
static: []
1009
- cloud_properties:
1010
name: random
1011
range: 10.244.10.216/30
1012
reserved:
1013
- 10.244.10.217
1014
static: []
1015
- cloud_properties:
1016
name: random
1017
range: 10.244.10.220/30
1018
reserved:
1019
- 10.244.10.221
1020
static: []
1021
- cloud_properties:
1022
name: random
1023
range: 10.244.10.224/30
1024
reserved:
1025
- 10.244.10.225
1026
static: []
1027
- cloud_properties:
1028
name: random
1029
range: 10.244.10.228/30
1030
reserved:
1031
- 10.244.10.229
1032
static: []
1033
- cloud_properties:
1034
name: random
1035
range: 10.244.10.232/30
1036
reserved:
1037
- 10.244.10.233
1038
static: []
1039
- cloud_properties:
1040
name: random
1041
range: 10.244.10.236/30
1042
reserved:
1043
- 10.244.10.237
1044
static: []
1045
- cloud_properties:
1046
name: random
1047
range: 10.244.10.240/30
1048
reserved:
1049
- 10.244.10.241
1050
static: []
1051
- cloud_properties:
1052
name: random
1053
range: 10.244.10.244/30
1054
reserved:
1055
- 10.244.10.245
1056
static: []
1057
- cloud_properties:
1058
name: random
1059
range: 10.244.10.248/30
1060
reserved:
1061
- 10.244.10.249
1062
static: []
1063
- cloud_properties:
1064
name: random
1065
range: 10.244.10.252/30
1066
reserved:
1067
- 10.244.10.253
1068
static: []
1069
1070
1071
resource_pools: # 배포시 사용하는 resource pools를 명시하며 여러 개의 resource pools 을 사용할 경우 name 은 unique 해야함(필수)
1072
- cloud_properties: # 컴파일 VM을 만드는 데 필요한 IaaS의 특정 속성을 설명 (instance_type, availability_zone), 직접 cpu, disk, 메모리 설정가능
1073
name: random
1074
name: services-small # 고유한 resource pool 이름
1075
network: services1
1076
#size: 4 # resource pool 안의 가상머신 개수, 주의) jobs 인스턴스 보다 작으면 에러가 남, size 정의하지 않으면 자동으로 가상머신 크기 설정
1077
stemcell:
1078
name: bosh-warden-boshlite-ubuntu-trusty-go_agent #stemcell 이름(필수)
1079
version: 3147 # stemcell 버전(필수)
1080
1081
meta:
1082
stemcell:
1083
name: bosh-warden-boshlite-ubuntu-trusty-go_agent
1084
version: 3147
1085
1086
update:
1087
canaries: 1 # canary 인스턴스 수(필수)
1088
canary_watch_time: 30000-180000 # canary 인스턴스가 수행하기 위한 대기 시간(필수)
1089
update_watch_time: 30000-180000 # non-canary 인스턴스가 수행하기 위한 대기 시간(필수)
1090
max_in_flight: 4 # non-canary 인스턴스가 병렬로 update 하는 최대 개수(필수)
1091
1092
compilation: # 컴파일시 필요한 가상머신의 속성(필수)
1093
cloud_properties: # 컴파일 VM을 만드는 데 필요한 IaaS의 특정 속성 (instance_type, availability_zone), 직접 cpu,disk,ram 사이즈를 넣어도 됨
1094
name: random
1095
network: services1 # Networks block에서 선언한 network 이름(필수)
1096
reuse_compilation_vms: true # 컴파일지 VM 재사용 여부(옵션)
1097
workers: 3 # 컴파일 하는 가상머신의 최대수(필수)
Copied!
  • Deploy 할 deployment manifest 파일을 BOSH 에 지정한다.
$ bosh deployment {Deployment manifest 파일 PATH} $ bosh deployment openpaas-rabbitmq-lite.yml
  • RabbitMQ 서비스팩을 배포한다.
$ bosh deploy
  • 배포된 RabbitMQ 서비스팩을 확인한다.
$ bosh vms

2.4 RabbitMQ 서비스 브로커 등록

RabbitMQ 서비스팩 배포가 완료 되었으면 Application에서 서비스 팩을 사용하기 위해서 먼저 RabbitMQ 서비스 브로커를 등록해 주어야 한다. 서비스 브로커 등록시 개방형 클라우드 플랫폼에서 서비스 브로커를 등록 할 수 있는 사용자로 로그인이 되어 있어야 한다.
  • 서비스 브로커 목록을 확인한다.
$ cf service-brokers
  • RabbitMQ 서비스 브로커를 등록한다.
$ cf create-service-broker {서비스팩 이름} {서비스팩 사용자ID} {서비스팩 사용자비밀번호} http://{서비스팩 URL}
  • 서비스팩 이름 : 서비스 팩 관리를 위해 개방형 클라우드 플랫폼에서 보여지는 명칭이다. 서비스 Marketplace에서는 각각의 API 서비스 명이 보여지니 여기서 명칭은 서비스팩 리스트의 명칭이다.
  • 서비스팩 사용자ID / 비밀번호 : 서비스팩에 접근할 수 있는 사용자 ID이다. 서비스팩도 하나의 API 서버이기 때문에 아무나 접근을 허용할 수 없어 접근이 가능한 ID/비밀번호를 입력한다.
  • 서비스팩 URL : 서비스팩이 제공하는 API를 사용할 수 있는 URL을 입력한다.</div>
    $ cf create-service-broker rabbitmq-service-broker admin admin http://10.244.9.14:4567
  • 등록된 RabbitMQ 서비스 브로커를 확인한다.
$ cf service-brokers
  • 접근 가능한 서비스 목록을 확인한다.
$ cf service-access
서비스 브로커 생성시 디폴트로 접근을 허용하지 않는다.
  • 특정 조직에 해당 서비스 접근 허용을 할당하고 접근 서비스 목록을 다시 확인한다. (전체 조직)
$ cf enable-service-access p-rabbitmq $ cf service-access

3. RabbitMQ 연동 Sample App 설명

본 Sample App은 개발형 클라우드 플랫폼에 배포되며 RabbitMQ의 서비스를 Provision과 Bind를 한 상태에서 사용이 가능하다.

3.1 Sample App 구조

Sample App은 개방형 클라우드 플랫폼에 App으로 배포가 된다. 배포 완료 후 정상적으로 App 이 구동되면 curl 명령어로 App url 를 입력하면 RabbitMQ 환경정보(서비스 연결 정보)를 보여주는 url 페이지를 제공한다.
Sample App 구조는 다음과 같다.
이름
설명
lib
Sample 소스 디렉토리
manifest.yml
개방형 클라우드 플랫폼에 app 배포시 필요한 설정을 저장하는 파일
Gemfile
Sample App 구동시 필요한 ruby gem 설정 파일
config.ru
Sample App 구동 파일
  • OpenPaaS-Sample-Apps에 접속하여 Service 폴더안에 있는 RabbitMQ Sample Web App인 rabbit-labrat를 다운로드 한다.
  • 다운로드 한 Sample App을 확인한다.
$ ls -all

3.2 개방형 클라우드 플랫폼에서 서비스 신청

Sample App에서 RabbitMQ 서비스를 사용하기 위해서는 서비스 신청(Provision)을 해야 한다. *참고: 서비스 신청시 개방형 클라우드 플랫폼에서 서비스를 신청 할 수 있는 사용자로 로그인이 되어 있어야 한다.
  • 먼저 개방형 클라우드 플랫폼 Marketplace에서 서비스가 있는지 확인을 한다.
$ cf marketplace
  • Marketplace에서 원하는 서비스가 있으면 서비스 신청(Provision)을 한다.
$ cf create-service {서비스명} {서비스플랜} {내서비스명}
  • 서비스명 : p-rabbitmq로 Marketplace에서 보여지는 서비스 명칭이다.
  • 서비스플랜 : 서비스에 대한 정책으로 plans에 있는 정보 중 하나를 선택한다. RabbitMQ 서비스는 standard plan만 지원한다.
  • 내서비스명 : 내 서비스에서 보여지는 명칭이다. 이 명칭을 기준으로 환경설정정보를 가져온다.</div>
    $ cf create-service p-rabbitmq standard rabbitmq-service-instance
  • 생성된 RabbitMQ 서비스 인스턴스를 확인한다.
$ cf services

3.3 Sample App에 서비스 바인드 신청 및 App 확인

서비스 신청이 완료되었으면 Sample App 에서는 생성된 서비스 인스턴스를 Bind 하여 App에서 RabbitMQ 서비스를 이용한다. *참고: 서비스 Bind 신청시 개방형 클라우드 플랫폼에서 서비스 Bind 신청 할 수 있는 사용자로 로그인이 되어 있어야 한다.
  • Sample App 디렉토리로 이동하여 manifest 파일을 확인한다.
$ cd rabbit-labrat $ vi manifest.yml
1
---
2
applications:
3
- name: lab-rat #배포할 App 이름
4
command: puma #배포시 명령어
Copied!
  • --no-start(App 배포시 구동은 하지 않는다.) 옵션으로 App을 배포한다.
$ cf push --no-start
  • 배포된 Sample App을 확인하고 로그를 수행한다.
$ cf apps
$ cf logs {배포된 App명} $ cf logs lab-rat
  • Sample App에서 생성한 서비스 인스턴스 바인드 신청을 한다.
$ cf bind-service lab-rat rabbitmq-service-instance
  • 바인드가 적용되기 위해서 App을 재기동한다.
$ cf restart lab-rat
  • App이 정상적으로 RabbitMQ 서비스를 사용하는지 확인한다. (curl로 확인)
$ curl lab-rat.10.244.0.34.xip.io
Last modified 1yr ago