본문으로 바로가기

Linux에서 MQTT Broker, Mosquitto 설치

category Linux 2017.08.28 10:52


MQTT를 처음 사용해보려 하시나요?

그렇다면, 먼저 아래의 글을 읽어보시기 바랍니다.


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

그 외에도 여러가지 옵션을 제공하니, 아래의 페이지를 참고하시기 바랍니다.


mosquitto.conf



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 메시지 교환에 대해 적도록 하겠습니다.


comments powered by Disqus

티스토리 툴바