RabbitMQ + Haproxy + MQTT集群部署

nix.long

文章目录

    • 1.Update Log
    • 2. 安装基础服务
      • 2.1 系统
      • 2.2 安装OTP/Erlang
      • 2.3 安装RabbitMQ
      • 2.4 激活RabbitMQ基础插件服务
      • 2.5 安装Haproxy
    • 3. 配置RabbitMQ
      • 3.1 修改主机名
      • 3.2 添加hosts映射
      • 3.3 修改 erlang节点cookie
    • 4. 配置Haproxy
    • 5. 启动RabbitMQ Nodes 和Haproxy
      • 5.1 RabbitMQ命令
      • 5.2 启动 Haproxy
      • 5.3 后台查看集群

1.Update Log

2. 安装基础服务

2.1 系统

  • Linux/Ubuntu 18.04
  • 服务器:
    • 192.168.101.124 作为 Haproxy Server
    • 192.168.101.140 作为RabbitMQ Node1
    • 192.168.101.141 作为RabbitMQ Node2

2.2 安装OTP/Erlang

sudo apt-get install erlang

2.3 安装RabbitMQ

http://www.rabbitmq.com/install-debian.html

https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.10/rabbitmq-server_3.7.10-1_all.deb

2.4 激活RabbitMQ基础插件服务

  • MQTT Plugin: http://www.rabbitmq.com/mqtt.html

    rabbitmq-plugins enable rabbitmq_mqtt

  • MQTT Web Plugin: http://www.rabbitmq.com/web-mqtt.html

    rabbitmq-plugins enable rabbitmq_web_mqtt

  • Web Management Plugin: http://www.rabbitmq.com/management.html

    rabbitmq-plugins enable rabbitmq_management

    http://localhost:15672/ guest/guest

2.5 安装Haproxy

sudo apt-get install haproxy

3. 配置RabbitMQ

​ 以下修改面向所有 RabbitMQ 节点:

​ > 192.168.101.140 / 192.168.101.141

3.1 修改主机名

[192.168.101.140] vi /etc/hostname

node1

[192.168.101.141] vi /etc/hostname

node2

3.2 添加hosts映射

[192.168.101.140] vi /etc/hosts

node1 192.168.101.140
node2 192.168.101.141
127.0.0.1 node1
::1 node1

[192.168.101.141] vi /etc/hosts

node1 192.168.101.140
node2 192.168.101.141
127.0.0.1 node2
::1 node2

修改后, 执行 hostnamectl status 查看修改是否成功

Static hostname: node1
​ Icon name: computer-vm
​ Chassis: vm
​ Machine ID: a597ec28a3f94fdba28fb0e9f3320661
​ Boot ID: ad30b5f526a44c3292a5a8a6f5bad905
​ Virtualization: vmware
Operating System: Ubuntu 18.04.1 LTS
​ Kernel: Linux 4.15.0-43-generic
​ Architecture: x86-64

3.3 修改 erlang节点cookie

RabbitMQ 底层是通过 Erlang 架构来实现的,所以 rabbitmqctl 会启动 Erlang 节点,并基于 Erlang 节点来使用 Erlang 系统连接 RabbitMQ 节点,在连接过程中需要正确的 Erlang Cookie 和节点名称,Erlang 节点通过交换 Erlang Cookie 以获得认证

vim /var/lib/rabbitmq/.erlang.cookie, 结果类似:

LBOTELUJAMXDMIXNTZMB

把所有节点节点的 .erlang.cookie 文件内容设置成相同即可

4. 配置Haproxy

vim /etc/haproxy/haproxy-mqtt.cfg

global
​ log 127.0.0.1 local0 info
​ log 127.0.0.1 local1 notice
​ daemon
​ maxconn 4096

defaults
​ log global
​ mode tcp
​ option tcplog
​ option dontlognull
​ retries 3
​ option abortonclose
​ maxconn 4096
​ timeout connect 5000ms
​ timeout client 3000ms
​ timeout server 3000ms
​ balance roundrobin

listen private_monitoring
​ bind 0.0.0.0:8100
​ mode http
​ option httplog
​ stats refresh 5s
​ stats uri /stats
​ stats realm Haproxy
​ stats auth admin:admin

listen rabbitmq_admin
​ bind 0.0.0.0:8102
​ server node1 192.168.101.140:15672
​ server node2 192.168.101.141:15672

listen rabbitmq_cluster
​ bind 0.0.0.0:8101
​ mode tcp
​ option tcplog
​ balance roundrobin
​ timeout client 3h
​ timeout server 3h
​ server node1 192.168.101.140:5672 check inter 5000 rise 2 fall 3
​ server node2 192.168.101.141:5672 check inter 5000 rise 2 fall 3

5. 启动RabbitMQ Nodes 和Haproxy

5.1 RabbitMQ命令

  1. rabbitmqctl stop --停止rabbitmq-server
  2. rabbitmq-server -detached --添加detached参数
  3. rabbitmqctl cluster_status – 查看各节点状态

5.2 启动 Haproxy

haproxy -f /etc/haproxy/haproxy-mqtt.cfg

5.3 后台查看集群

http://localhost:8100/stats

你可能感兴趣的:(Iot)