RabbitMQ
ํด๋ฌ์คํฐ๋ง์ ์ฌ๋ฌ ์์คํ ์ ์ฐ๊ฒฐํ์ฌ ๋จ์ผ ๋ ผ๋ฆฌ ๋ธ๋ก์ปค๋ฅผ ํ์ฑํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์๋ก ๋ค๋ฅธ ๋ ธ๋์ ์กด์ฌํ๋ rabbitmq๋ Erlang(์ดํ ์ผ๋ญ)์ ํตํด์ ํต์ ์ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ ๋ ธ๋๋ค์ ๋์ผํ ์ผ๋ญ ์ฟ ํค๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค. (๋ฐ๋ผ์ ๋ชจ๋ ๋ ธ๋๋ค์ ๋์ผํ ๋ฒ์ ์ rabbitmq, ์ผ๋ญ์ ์คํ ํด์ผ ํ๋ค.) virtual hosts, exchanges, users, permissions์ ๋ชจ๋ ๋ ธ๋์ ์๋์ผ๋ก ๋ฏธ๋ฌ๋ง ๋์ง๋ง ํ๋ ๋ฏธ๋ฌ๋ง ๋์ง ์๋๋ค. ๋ฐ๋ผ์ ๊ณ ๊ฐ์ฉ์ฑ์ ์ํด ์ถ๊ฐ์ ์ธ ๋ฏธ๋ฌ๋ง ์์ ์ด ํ์ํ๋ค ์ผ๋ถ ๋ถ์ฐ ์์คํ ์์๋ ๋ฆฌ๋ ๋ฐ ํ๋ก์ ๋ ธ๋๊ฐ ์กด์ฌํ์ง๋ง RabbitMQ์์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ ๋ ธ๋๊ฐ ๋๋ฑํ ํผ์ด๋ก ๊ฐ์ฃผ ๋๋ค. ๋ฌผ๋ก ํ ๋ฏธ๋ฌ๋ง๊ณผ ํ๋ฌ๊ทธ์ธ์ ๊ณ ๋ คํ ๋ ๋ ๋ฏธ๋ฌํ ์ฐจ์ด๊ฐ ์กด์ฌํ์ง๋ง ๋๋ถ๋ถ์ ์๋์ ๋ชฉ์ ์ ์ํด ๋ชจ๋ ํด๋ฌ์คํฐ ๋ ธ๋๋ค์ ๋์ผํ๊ฒ ๊ฐ์ฃผ ๋๋ค. ํด๋น wiki๋ ์ผ๋ฐ์ ์ธ ์ค์น ๋ฐฉ๋ฒ๊ณผ ๋์ปค๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ค.
1. ํฌํธ
4369 - epmd, RabbitMQ ๋ ธ๋ ๋ฐ CLI ๋๊ตฌ์์ ์ฌ์ฉ
5672, 5671 - AMQP 0-9-1๊ณผ 1.0 ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๋ ํฌํธ(TLS ์ ์ฉ์ ๋ฐ๋ผ ํฌํธ ๋ณ๊ฒฝ
25672 - ๋ ธ๋ ๋ฐ CLI๋๊ตฌ ํต์ ์ ์ฌ์ฉ๋๋ฉฐ ๋์ ๋ฒ์์์ ํ ๋น(๊ธฐ๋ณธ์ ์ผ๋ก ๋จ์ผ ํฌํธ๋ก ์ ํ๋๋ฉฐ AMPQํฌํธ + 20000์ผ๋ก ๊ธฐ๋ณธ ํ ๋น)
35672~35682 - ๋ ธ๋์์ ํต์ ์ ์ํด CLI ๋๊ตฌ์์ ์ฌ์ฉ๋๋ ํฌํธ
61613, 61614 : TLS๊ฐ ์๊ฑฐ๋ ์๋ STOMP ํด๋ผ์ด์ธํธ (STOMP ํ๋ฌ๊ทธ์ธ์ด ํ์ฑํ ๋ ๊ฒฝ์ฐ์๋ง ํด๋น)
1883, 8883 : (MQTT ํ๋ฌ๊ทธ์ธ์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ TLS๊ฐ์๋ MQTT ํด๋ผ์ด์ธํธ
15674 : STOMP-over-WebSockets ํด๋ผ์ด์ธํธ (์น STOMP ํ๋ฌ๊ทธ์ธ์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ง)
15675 : WebTockets-over-WebSockets ํด๋ผ์ด์ธํธ (Web MQTT ํ๋ฌ๊ทธ์ธ์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ง)
2. ํด๋ฌ์คํฐ ๊ตฌ์ฑํ๊ธฐ (์ผ๋ฐ ์ค์น)
๋ณธ ์์ ๋ ์ด 3๊ฐ์ ๋ ธ๋๋ฅผ ์ด์ฉํ์ฌ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ๋ค.
2.1. ์ค์น
2.2. ์คํ ๋ฐ ๋
ธ๋ ์ค์
localhost:15672/15673/15674์ ์ ์ํ์ฌ guest/guest๋ก ํ์ธ
2.3 ํด๋ฌ์คํฐ ๊ตฌ์ฑ
์ปค๋งจ๋ ๋ผ์ธ ๋ช ๋ น์ด rabbitmqctl๋ฅผ ์ฌ์ฉํด 3๊ฐ์ ๋ ธ๋๋ฅผ ํ๋์ ํด๋ฌ์คํฐ๋ก ๊ตฌ์ฑํ๋ค. ์์์ ๋ฐ๋์ ๊ตฌ์ฑํ ๋ ธ๋ ์คํ์ ์ค์งํ๋ค.(์ค์ง๋ ์คํ์ ์ญ์)
localhost:15672/15673/15674์ ์ ์ํ์ฌ guest/guest๋ก ํ์ธ
2.4 ๋ฏธ๋ฌ๋ง ๊ตฌ์ฑํ๊ธฐ
์์๊น์ง ์์ ์ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ๊ธด ํ์์ง๋ง ๊ณ ๊ฐ์ฉ์ฑ์ด(Highly Available)๋ผ๊ณ ํ๊ธฐ์๋ ๋ถ์กฑํ๋ค. ์ด์ ๋ ํ์ฌ 3๊ฐ์ ํด๋ฌ์คํฐ๋ ์๋ก์ ๋ฐ์ดํฐ๋ค์ ๊ณต์ ํ ๋ฟ์ด์ง ํ ๋ฐ์ดํฐ ์์ฒด๋ 1๋ฒ๋ง ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ง์ฝ 1๋ฒ ๋ ธ๋๊ฐ ์ฃฝ๊ฒ ๋๋ค๋ฉด 2,3๋ฒ ๋ ธ๋๋ ํด๋น ๋ฉ์์ง ํ๋ฅผ ์ฝ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฏธ๋ฌ๋ง ์ ์ฑ ์ค์
set policy act-policy > ์ ์ฑ ์ด๋ฆ์ act-policy๋ก ํ๋ค
"^cluster" > ๋ฏธ๋ฌ๋งํ queue ํํ์
3. ํด๋ฌ์คํฐ ๊ตฌ์ฑํ๊ธฐ (๋์ปค ์ค์น)
3.1. ์ค์น ๋ฐ ์คํ
์ฃผ์ : ๋จ์ ์์ ์ด๊ธฐ ๋๋ฌธ์ ํด๋น ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃ์ํฌ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๊ฒ ๋๋ค. ๋ฐ๋ผ์ -v ์ต์ ์ ์ด์ฉํ์ฌ ๋ง์ดํธ๋ฅผ ํ๋ ๊ฒ์ด ์ข๋ค.
1 ๋ฒ ๋ ธ๋ ์คํ
2๋ฒ ๋ ธ๋ ์คํ
3๋ฒ ๋ ธ๋ ์คํ
3.2 ํด๋ฌ์คํฐ๋ง
3.3 ๋ฏธ๋ฌ๋ง ๊ตฌ์ฑํ๊ธฐ
1๋ฒ ๋์ปค ์ปจํ ์ด๋๋ก ์ ์ ํ ์๋ ๋ช ๋ น์ด ์คํ
4. HA Proxy ๊ตฌ์ฑ
3๊ฐ์ ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ์์ง๋ง ํด๋ผ์ด์ธํธ์์ ํด๋น ํด๋ฌ์คํฐ์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ๋จ์ผ ์ง์ ์ ์ด ํ์ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ฝ 3๊ฐ์ ๋ ธ๋ ์ค ์ด๋ ํ ๋ ธ๋๊ฐ ๋ด๋ ค๊ฐ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ์์ ์ฃฝ์ ๋ ธ๋๋ก ์์ฒญ์ ๋ณด๋ด๋ฉด ์คํจ๊ฐ ์ผ์ด๋๊ธฐ ๋๋ฌธ์ Load Balance๋ฅผ ํตํด health์ฒดํฌ๋ฅผ ํ๊ธฐ ์ํ HA Proxy๋ฅผ ๊ตฌ์ฑํ๋ค.
4.1 HA Proxy ์ค์น ๋ฐ ์ค์
์ค์น
์ค์ /usr/local/etc/haproxy.cfg ํ์ผ์ ์๋์ ๊ฐ์ด ์์ ํ๋ค.
check inter 5000 rise 2 fall 3 -> server ์ํ๋ฅผ 5์ด ๊ฐ๊ฒฉ์ผ๋ก check ํ๋ค. Health check์ 3๋ฒ ์คํจํ๋ฉด ํด๋น ์๋ฒ๋ ์๋น์ค์์ ์ ์ธํ๊ณ , 2๋ฒ ์ ์ check๋๋ฉด ์๋ฒ๋ฅผ ์๋น์ค์ ์ถ๊ฐํ๋ค.
5. ํด๋ผ์ด์ธํธ์์ ์ ๊ทผ
๋ณธ ์์ ๋ Spring boot ๊ธฐ์ค์ผ๋ก ์์ฑ ๋์ด ์๋ค.
5.1 ๊ธฐ๋ณธ ์ค์
amqp ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์๋์ ๊ฐ์ด dependency๋ฅผ ์ถ๊ฐํ๋ค.
์์์ ๋ง๋ค์ด ๋์ ํด๋ฌ์คํฐ์ ์ ๊ทผ ํ๊ธฐ ์ํด haproxy์ ๋ณด๋ฅผ application.yml์ ์ ๋ ฅํ๋ค.
5.2 ๋ฉ์์ง ๋ณด๋ด๊ธฐ
rest controller ์์ค๋ ์๋์ ๊ฐ๋ค.
Sender ์์ค๋ ์๋์ ๊ฐ๋ค.
ํด๋น ์๋ฒ๋ฅผ ๊ธฐ๋ ์ํจ ์ดํ api ๋ฅผ ํธ์ถํ๋ค.
localhost:15672 queue์์ ๋ฉ์์ง๋ฅผ ํ์ธํ๋ค.
5.3 1๋ฒ ๋
ธ๋๋ฅผ ์ข
๋ฃ ์ํจ ์ดํ ๋ฐ์ดํฐ ํ์ธ
1๋ฒ ๋ ธ๋๋ฅผ ์ค์ง ํ ์ดํ์ 2,3๋ฒ ๋ ธ๋์ ๋ฐ์ดํฐ๊ฐ ์ ๋๋ก ์กด์ฌํ๋์ง(๋ฏธ๋ฌ๋ง์ด ์ ๋๋ก ๋์๋์ง) ํ์ธํ๋ค.
localhost:15673์ผ๋ก ์ ์ (15672๋ ์ข ๋ฃ ๋์๊ธฐ ๋๋ฌธ) ํ์ฌ Queue ๋ฉ๋ด์์ ๋ฉ์์ง๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๋ค.
HA Proxy๊ฐ ์ ๋๋ก ๋์ ๋๋์ง๋ฅผ ํ์ธํ๊ธฐ ์ํด ์๋์ ๊ฐ์ด api ๋ฅผ ํธ์ถํ๋ค.
Queue ๋ฉ๋ด์์ test2๋ผ๋ ๋ฉ์์ง๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๋ค.
5.4 ๋ฉ์์ง ๋ฐ๊ธฐ
์๋์ ๊ฐ์ด Receiver๋ฅผ ์์ฑํ๋ค.
spring ์๋ฒ๋ฅผ ์ฌ ๊ธฐ๋ ํ ์ดํ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ฉด Receiver๊ฐ ์๋์ผ๋ก ์ฝ์ด์์ ์ฝ์์ ์ฐ๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
Last updated