yoncho`s blog

[Mosquitto] 1. Broker 본문

기술, 나의 공부를 공유합니다./MQTT

[Mosquitto] 1. Broker

욘초 2023. 6. 22. 23:53

 

목차

1. Env. 환경

2. MQTT Broker - mosquitto 선정

3. MQTT Broker - mosquitto 환경 설정 및 docker-compose로 실행 및 결과

 

1. Env.
eclipse-mosquitto : version 2.0.15
Docker : version 23.0.5, build bc4487a

 

2. MQTT Broker로 Mosquitto 를 선정한 이유

MQTT ver 3.1/ 3.11을 구현한 오픈소스 메시지 브로커이며
특징으로는 C 기반이며, 클러스터링이 안된다.
user authentication을 .file에 넣고 사용하며
테스트 했을 때, 일정 시간 패킷이 안오면 하트비트 메시지를 보내기 시작하고,
메시지가 안오면 끊어버린다고 한다.

현재 테스트 용도로 사용하기 편해 보이며, 추후 RabbitMQ로 변경할 예정이다.

*RabbitMQ 는 MQTT ver 3.1만 지원, QoS(Quality of Service)를 0과 1만 지원한다 (2는 지원 안됨)
ssl 지원과 session stickiness 지원하며 무료 이다.
(*RabbitMQ 설명 : https://velog.io/@sdb016/RabbitMQ-%EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90 )

mosquitto와 rabbitmq말고도 hivemq와 ibm mq가 있지만 유료이다.
참고 : ibm mq가 제일 좋다고 한다.

 

 

3. Mosquitto 환경 설정 및 docker-compose로 실행

1. 작업 디렉터리 생성 및 하위 디렉터리 생성

$user> mkdir mosquitto              //mosquitto 디렉터리 생성

$user> cp mosquitto/                //mosquitto 디렉터리로 진입
$user/mosquitto> mkdir config/      //mosquitto 하위 디렉터리 생성 (config, data, log)
$user/mosquitto> mkdir data/
$user/mosquitto> mkdir log/


//structure
mosquitto
|-- config/
|-- data/
|-- log/

2. 작업 디렉터리 (mosquitto)에 docker-compose.yml 파일 작업
docker compose 관련 :https://docs.docker.com/compose/compose-file/03-compose-file/

$user/mosquitto> code docker-compose.yml

//docker-compose.yml 
version: '3.8'
services:
  mosquitto:
    image: "eclipse-mosquitto"
    container_name: "mqtt-broker"
    ports:
      - "1883:1883"
      - "9001:9001"
    volumes:
      - ./config/mosquitto.conf:/mosquitto/config/mosquitto.conf
      - ./data:/mosquitto/data
      - ./log:/mosquitto/log
    restart: always


//structure
mosquitto
|-- config/
|-- data/
|-- log/
|-- docker-compose.yml

 

3. 작업 디렉터리 하위 config 디렉터리 (mosquitto/config)에 mosquitto.conf 파일 작업mosquitto.conf 관련 : https://mosquitto.org/man/mosquitto-conf-5.html

$user/mosquitto/config> code mosquitto.conf

//mosquitto.conf - 환결 설정 파일 (port 설정, 접근 권한 등 broker 기능에 대한 상세 설정)
allow_anonymous true
connection_messages true
log_type all
listener 1883

//structure
mosquitto
|-- config/mosquitto.conf
|-- data/
|-- log/
|-- docker-compose.yml

 

4. 작업 디렉터리 (mosquitto)에서 docker-compose 명령어로 mosquitto 실행

$user/mosquitto> docker-compose up

 

5. mosquitto mqtt-broker 실행

'기술, 나의 공부를 공유합니다. > MQTT' 카테고리의 다른 글

[RabbitMQ] 2. Queue  (0) 2023.06.24
[RabbitMQ] 1. Exchange  (0) 2023.06.24
[RabbitMQ] 0. RabbitMQ ?  (0) 2023.06.22
[Mosquitto] 3. Subscriber  (0) 2023.06.22
[Mosquitto] 2. Publisher  (0) 2023.06.22
Comments