EMQX集群的创建和使用

发布时间 2023-12-26 14:17:55作者: ydqun

EMQX的安装

Ubuntu

本页将指导您如何在 Ubuntu 系统中下载安装并启动 EMQX。

通过 Apt 源安装

EMQX 支持通过 Apt 源安装,免除了用户需要手动处理依赖关系和更新软件包等的困扰,具有更加方便、安全和易用等优点。如希望通过 Apt 源安装 EMQX,可参考如下步骤。

1.通过以下命令配置 EMQX Apt 源:
curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash
2.运行以下命令安装 EMQX:
sudo apt-get install emqx
3.运行以下命令启动 EMQX:
sudo systemctl start emqx

EMQX的启动与卸载

您可通过如下三种方式启动 EMQX。

直接启动:

$ emqx start
EMQX 5.3.2 is started successfully!

systemctl 启动:

sudo systemctl start emqx

service 启动:

sudo service emqx start

卸载:

服务完成后,可通过如下命令卸载 EMQX:

sudo apt remove --purge emqx

EMQX配置的简单介绍

emqx的配置文件的存在目录一般在/etc/emqx/,其名称为emqx.conf

HOCON 配置格式

从 5.0 版本开始,EMQX 采用 HOCON 作为配置文件格式。
HOCON(Human-Optimized Config Object Notation)是一种可扩展的配置语言,它支持类似 JSON 的语法,易于阅读和编写。同时 HOCON 具有继承、合并、引用等功能,使得配置文件更加灵活可控。

基本语法:

HOCON 值可以被记为类似 JSON 的对象,例如:

节点配置 -- node

node {
  name = "emqx@127.0.0.1"
  cookie = "mysecret"
  data_dir = "/var/lib/emqx"
}

这部分配置是配置节点信息,解读如下:

  1. name = "emqx@127.0.0.1"
    配置节点名称,格式为 @。其中host可以是 IP 地址,也可以是 FQDN。

  2. cookie = "mysecret"
    配置分布式集群使用的 cookie 值。集群间保持一致。

  3. data_dir = "/var/lib/emqx"
    配置节点数据存放目录,该目录可能会自动创建一些子目录。

接着,由于我们关注的是EMQX的集群,所以我们还需要注意以下几个配置。

集群配置 -- cluster

cluster {
   name = emqxcl
   discovery_strategy = manual
}
  1. name = emqxcl
    配置EMQX 集群名称。每个集群都有一个唯一的名称。服务发现时会用于做路径的一部分。

  2. discovery_strategy = manual
    集群节点发现方式。可选值为:
    manual: 使用 emqx ctl cluster 命令管理集群。
    static: 配置静态节点。配置几个固定的节点,新节点通过连接固定节点中的某一个来加入集群。
    dns: 使用 DNS A 记录的方式发现节点。
    etcd: 使用 etcd 发现节点。
    k8s: 使用 Kubernetes API 发现节点。
    在这里,我们配置为manual。

emqx服务端配置 -- listeners.tcp.default

listeners.tcp.default {
   bind = "0.0.0.0:1883"
   max_connections = 1024000

   proxy_protocol = true
 }
  1. bind = "0.0.0.0:1883"
    服务端监听套接字的 IP 地址和端口

  2. max_connections = 1024000
    监听器允许的最大并发连接数。

  3. proxy_protocol = true
    允许代理,如果你使用Nginx代理EMQX,那么记住此配置项一定要配置

创建与管理集群

EMQX 支持手动创建集群,也支持通过多种方式自动集群,我们将以手动的方式创建并管理EMQX集群

基本概念

想要创建集群,您还需要熟悉以下概念:

节点名称

EMQX 节点通过它们的名称来识别。所有节点都设置了唯一的节点名称,格式为 name@host,其中 host 必须是 IP 地址或完全限定域名(FQDN)。例如:

对于部署在服务器 server1.io 上的 EMQX 节点,节点名称应为 server1.io;
如果此服务器有一个静态 IP(172.18.157.179),节点名称应为 emqx@172.18.157.179。

TIP

EMQX 节点名称是不可变的,因为它们被固定在数据库架构和数据文件中。因此,建议为 EMQX 节点名称使用静态 FQDN。

手动集群

前置准备

本节为您提供了在创建集群之前如何配置节点和网络环境的指导。

配置节点名称

在创建集群之前,您需要了解如何命名要加入集群的节点。假设您想为分别部署在IP为172.18.157.179和IP为:172.18.157.179的两个节点创建一个集群,可以按照以下步骤进行配置.
在每一个节点的emqx.conf配置文件中配置节点名称,emqx的配置文件所在目录为/etc/emqx/。在这里我们以172.18.157.179节点为例。
1.用vim编辑器打开emqx配置文件
$vim /etc/emqx/emqx.conf

然后进行集群的相关配置。
主要有三个配置

  1. 配置节点名称
  2. 配置cookie,同一个集群的所有节点必须配置一样的cookie。
  3. 配置发现策略,一定要配置成manual,即手动集群
## NOTE:
## This config file overrides data/configs/cluster.hocon,
## and is merged with environment variables which start with 'EMQX_' prefix.
##
## Config changes made from EMQX dashboard UI, management HTTP API, or CLI
## are stored in data/configs/cluster.hocon.
## To avoid confusion, please do not store the same configs in both files.
##
## See https://www.emqx.io/docs/en/v5.0/configuration/configuration.html for more details.
## Configuration full example can be found in etc/examples

node {
  name = "emqx@172.18.157.179"    ## 1. 配置节点名称。
  cookie = "emqxsecretcookie"   ## 2. 配置cookie,同一个集群的所有节点必须配置一样的cookie。
  data_dir = "/var/lib/emqx"
}

cluster {
  name = emqxcl
  discovery_strategy = manual   ## 3. 配置发现策略,一定要配置成manual,即手动集群
}

dashboard {
    listeners.http {
        bind = 18083
    }
    default_username = "admin"
    default_password = "public"
}

注意,这里两个节点都需要进行这三个配置。
2.启动两台节点后,在其中一台节点执行集群加入命令:

./bin/emqx ctl cluster join emqx@172.18.157.179

Join the cluster successfully.
Cluster status: [{running_nodes,['emqx@172.18.157.179','emqx@172.18.157.179']}]
TIP
  1. 必须在待加入的节点执行该命令,以请求而不是邀请加入到集群。

  2. emqx@172.18.157.179 加入 emqx@172.18.157.179 组成集群后,它将清除本地数据并将 emqx@172.18.157.179 中的数据同步过来。

  3. 已加入集群的节点加入另一个集群时,该节点将离开当前集群。如需退出集群请参考退出集群。

3.在任意节点上查询集群的状态:

./bin/emqx ctl cluster status

Cluster status: [{running_nodes,['emqx@172.18.157.179','emqx@172.18.157.179']}]