Linux์์ MQTT Broker, Mosquitto ์ค์น
MQTT๋ฅผ ์ฒ์ ์ฌ์ฉํด๋ณด๋ ค ํ์๋์?
๊ทธ๋ ๋ค๋ฉด, ๋จผ์ ์๋์ ๊ธ์ ์ฝ์ด๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
์ง๋ ํฌ์คํธ์์ MQTT์ ๋ํ ๊ฐ๋ ๊ณผ ๊ฐ๋จํ ํน์ง์ ์๊ฐํด ๋๋ ธ์ต๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ MQTT Broker๋ฅผ ์ค์นํด์, ์ด๋ฅผ ๊ตฌ๋ํด๋ณด๊ณ ์๋น์ค๋ฅผ ํด๋ณด๋ ค ํฉ๋๋ค. MQTT Broker์๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์กด์ฌํ์ง๋ง, ๊ทธ ์ค์์๋ ๊ฐ์ฅ ๋ณดํธ์ ์ด๊ณ ๋ฌด๋ํ mosquitto๋ฅผ ์ค์นํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
Mosquitto ์ค์น
๋ฆฌ๋ ์ค์์ Mosquitto๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ฆฌ๋ ์ค์ ๋ ํฌ์งํฐ๋ฆฌ์ ์๋ Mosquitto ํจํค์ง๊ฐ ์์ต๋๋ค. ์ด ํจํค์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ์ค์นํ ์ ์์ต๋๋ค.
$ sudo apt install mosquitto
ํฐ๋ฏธ๋์ ์คํํ์ฌ ์ ๋ช ๋ น์ด๋ฅผ ํ์ดํํฉ๋๋ค.
$ sudo systemctl status mosquitto.service
์ค์น๊ฐ ๋๋ฌ์ผ๋ฉด ์ ๋ช ๋ น์ด๋ฅผ ์คํํด๋ด ๋๋ค.
์ ์์ ์ผ๋ก ์ค์น๊ฐ ๋์๋ค๋ฉด, ์์ ๊ฐ์ด MQTT v3.1 Broker๊ฐ ์คํ์ด ๋ ๊ฒ์ด๋ฉฐ running ์ํ์ ์์ ๊ฒ์ ๋๋ค.
Mosquitto ๊ธฐ๋ณธ ์ค์
Broker๋ฅผ ์ค์นํ์์ผ๋ ๊ฐ๋จํ ์ค์ ์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. MQTT Broker๋ Topic์ ์ ์ ํด ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ก ๋ฉ์์ง๋ฅผ Publish, Subscribe ํ ์ ์๋ ๊ตฌ์กฐ ์ ๋๋ค. Broker๊ฐ ํ ์ ์๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ค์ ์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
# vim /etc/mosquitto/mosquitto.conf
vim ๋ฑ์ ์๋ํฐ๋ฅผ ์ด์ฉํด์ mosquitto.conf ํ์ผ์ ์ด์ด๋ด ๋๋ค.
๊ธฐ๋ณธ์ ์ธ ์ค์ ์๋ ์ค๋ณต ์คํ ๋ฐฉ์ง, pid๋ฅผ ํ์ธํ๊ธฐ ์ํ pid ํ์ผ๊ณผ persistance ์ต์ ์ด ์กด์ฌํฉ๋๋ค. persistence๋ ๋ฉ์์ง๋ฅผ ์คํ ๋ฆฌ์ง ์ด๋๊ฐ์ ์ ์ฅํ๋ ์ต์ ์ ๋๋ค. ์ ์ฅ ํํ๋ ํ์ผ์ด ์๋ db ํํ๋ก ์ ์ฅ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก๋ /var/lib/mosquitto ์์ mosquitto.db ์ ์ด๋ฆ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค.
๋ฐ๊พธ๋ ค๋ฉด, ์๋์ฒ๋ผ ๋ฐ๊พธ์๋ฉด ๋ฉ๋๋ค.
persistence true
persistence_location FILE_PATH
persistence_file FILE_NAME
์ถ๊ฐ๋ก, ์๋ ์ ์ฅ ๊ธฐ๋ฅ ์ต์ ๋ ์ ๊ณตํฉ๋๋ค. ํ์ง๋ง ์๋ ์ ์ฅ์ ์์ฃผ ์ฒ๋ฆฌํ๊ฒ ๋๋ฉด, ๋์คํฌ ๋ฆฌ์์ค์ ๋ฌด๋ฆฌ๋ฅผ ์ค ์ ์์ผ๋ฏ๋ก, ์ด์ ๋ํ ์ฃผ๊ธฐ๊ฐ ํ์ํฉ๋๋ค. ์๋ ์ ์ฅ ์ฃผ๊ธฐ๋ ์๋์ ๊ฐ์ด ์ค์ ํ ์ ์์ต๋๋ค.
persistence true
persistence_location FILE_PATH
persistence_file FILE_NAME
autosave_interval 3600
๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก, ๋ณ๊ฒฝ์ฌํญ์ด ์์ ๊ฒฝ์ฐ์ ์ ๋ ์ ์ฅํ๋ ๊ธฐ๋ฅ๋ ์ ๊ณตํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ true ์ด์ง๋ง, ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
persistence true
persistence_location FILE_PATH
persistence_file FILE_NAME
autosave_interval 3600
autosave_on_changes true
๊ทธ ์ธ์๋ ์ฌ๋ฌ๊ฐ์ง ์ต์ ์ ์ ๊ณตํ๋, ์๋์ ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
Publish / Subscribe
์ค์น์ ์ค์ ์ ๋ชจ๋ ๋ง์ณค์ผ๋, ์ด์ ๊ฐ๋จํ ๋ฉ์์ง๋ฅผ ํ ์คํธํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. Broker ๋ฅผ ์ค์นํ์ผ๋ฏ๋ก, ์ด์ ์ฐ๋ฆฌ๋ ํด๋ผ์ด์ธํธ๋ง ์กด์ฌํ๋ฉด ๋ฉ๋๋ค.
$ sudo apt install mosquitto-clients
๋ ํฌ์งํฐ๋ฆฌ์์ mosquitto-clients ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
์ค์น๊ฐ ๋๋ฌ์ผ๋ฉด ์ด์ Topic์ ์ ํด์, ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์๋ด ์๋ค. ์ ๋ NEONKID ๋ผ๋ Topic์ ์ฃผ๊ณ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋๋ก ํ๊ฒ ์ต๋๋ค.
$ mosquitto_sub -h 127.0.0.1 -t NEONKID
h ์ต์ ์ ํธ์คํธ ์ฃผ์์ ๋๋ค. ์ฌ๋ฌ๋ถ ์์ ์ ์ปดํจํฐ์ mosquitto๋ฅผ ์ค์นํ์์ผ๋ฏ๋ก 127.0.0.1์ ์ ๋ ฅํด์ค๋๋ค. ์ ๋ "NEONKID" ๋ผ๋ Topic์ ์ฌ์ฉํ๋ค ํ์์ผ๋ฏ๋ก t ์ต์ ์ ์์ ์ด ์ฌ์ฉํ Topic์ ์ฃผ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ด์ ์ด ๋ช ๋ น์ด๋ฅผ ํตํด Message๋ฅผ ๊ตฌ๋ ํ๊ฒ ๋ฉ๋๋ค.
$ mosquitto_pub -h 127.0.0.1 -t NEONKID -m "Hello Mosquitto !"
publish๋ subscribe์ ์ฐ๋ ์ต์ ์ ๋น์ทํฉ๋๋ค. ๋ค๋ง publish๋ ๋ฉ์์ง๋ฅผ ๋ฐํํ๋ ์ ์ฅ์ด๋ฏ๋ก, ์ ๋ฌํด์ผ ํ ๋ฉ์์ง ๋ด์ฉ์ด ํ์ํฉ๋๋ค. ๋ฐ๋ผ์ m ์ต์ ์ ์ด์ฉํด ๋ด๊ฐ ๋ณด๋ผ ๋ฉ์์ง๋ฅผ ์ ๋ ฅํด์ฃผ๋ฉด ๋ฉ๋๋ค.
๋ฉ์์ง๋ฅผ ์๋ก ์ฃผ๊ณ ๋ฐ๋ ๋ชจ์ต์ ํ์ธํ ์ ์์ต๋๋ค.
๋ง์น๋ฉฐ...
์ฌ๊ธฐ๊น์ง, Mosquitto ์ค์น์ ๋ํด ์์๋ดค์ต๋๋ค. ์ค์น ๋ฐฉ๋ฒ์ Apache, nginx ๊ฐ์ ํฐ ์๋ฒ์ ๋นํด ๊ธฐ๋ฅ์ด ์ ์ด ์ด๋ ต์ง๊ฐ ์์ต๋๋ค. ์ค์ ๋ ๊ธฐ๋ฅ์ด ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ์ ํ ์ ์์ต๋๋ค.
๋ค์ ํฌ์คํธ์์๋ ํ๋ก๊ทธ๋๋ฐ ์ฝ๋๋ฅผ ์ด์ฉํ MQTT ๋ฉ์์ง ๊ตํ์ ๋ํด ์ ๋๋ก ํ๊ฒ ์ต๋๋ค.
'Infrastructure > Linux' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Intel CPU Meltdown ์ทจ์ฝ์ ํจ์น 2์ฐจ ํ ์คํธ์ ๋ง๋ฌด๋ฆฌ (0) | 2018.01.05 |
---|---|
Intel CPU ๋ณด์ ์ทจ์ฝ์ ํจ์น๋ก ์ธํ ์ฑ๋ฅ ๊ฐ์์ 1์ฐจ ํ ์คํธ (0) | 2018.01.04 |
Linux๋ก ์์ํด๋ณด๋ ๊ฐ๋จํ ์์ผ ํ๋ก๊ทธ๋๋ฐ (2) | 2017.04.08 |
Cerebro Search - OS X Spotlight ๊ฒ์ (0) | 2017.02.24 |
Ubuntu 16.10 ๋ฒ์ ์์ nimf ์ ๋ ฅ๊ธฐ ์ค์น (0) | 2017.01.03 |