集群配置 
在 EMQX 中,集群是多个 EMQX 节点的组合,这些节点协同工作,提供一个具有高扩展性和高容错能力的 MQTT 消息传递系统。通过建立集群,可以把负载分散到多个节点上,确保即便部分节点出现故障,系统依然能够正常运行。
配置节点名称 
在开始创建集群的步骤之前需要先熟悉 EMQX 中的节点名称概念。EMQX 节点通过它们的名称来识别。一个节点名称由两部分组成,节点名称和主机名,用@分隔,例如,emqx@s1.emqx.io。主机部分必须是 IP 地址或者完全限定域名 (FQDN),如 myhost.example.tld,例如:
- 对于部署在服务器 s1.emqx.io上的 EMQX 节点,节点名称应该是emqx@s1.emqx.io;
- 如果这个服务器有一个静态IP (192.168.0.10),则节点名称应该是emqx@192.168.0.10。
在使用 emqx.conf 配置节点时,可以使用以下代码:
bash
node {
  name = "emqx@s1.emqx.io"
  role = core
}其中,
- name指的是所需的节点名称,例如,- emqx@localhost。
- role指的是 EMQX 节点在 EMQX 集群中执行的功能。有两种类型的角色:核心节点和复制节点。关于核心节点和复制节点的详细解释,请参见 EMQX 集群 - 核心节点和复制节点。- 默认值:core
- 可选值:core或replicant
 
- 默认值:
配置集群 
本节介绍如何配置 EMQX 集群。您可以在核心节点或复制节点上添加集群配置项,如果您正在配置一个复制节点,有几个配置项,例如 core_nodes,只在某些前提条件下生效:
- 节点的 node.db_backend设置为rlog,表示节点使用rlog作为数据库后端。
- node.role设置为- replicant,表示此节点作为一个复制节点功能。
- node.discovery_strategy设置为- manual或- static,如果使用自动集群发现机制,则不需要设置此配置项。关于节点发现策略及相应配置项的详细解释,请参见创建集群。
bash
cluster {
  name = emqxcl
  discovery_strategy = manual
  core_nodes = []
  driver = tcp
  ssl_options {
    certfile = ""
    keyfile = ""
    cacertfile = ""
  }
}其中,
| 配置项 | 描述 | 默认值 | 可选值 | 
|---|---|---|---|
| name | 设置集群的名称。 | emqxcl | |
| discovery_strategy | 设置集群的节点发现策略。 | manual | manual,static,dns,etcd,k8s,singleton | 
| core_nodes | 设置这个复制节点将连接的核心节点。 可以在这里添加多个节点,用 ,分隔。 | -- | -- | 
| driver | 设置 EMQX 节点间通信的传输协议。 | tcp | tcp,SSL | 
| ssl_options | 设置监听器的 SSL/TLS 配置选项,它有三个属性。 | -- | -- | 
| ssl_options.cacertfile | 包含监听器用来验证客户端证书真实性的受信任 CA(证书颁发机构)证书的 PEM 文件。 | -- | -- | 
| ssl_options.certfile | 包含监听器的 SSL/TLS 证书链的 PEM 文件。如果证书不是直接由根 CA 颁发的,中间 CA 证书应该在监听器证书之后附加,以形成一个证书链。 | -- | -- | 
| ssl_options.keyfile | 包含与 SSL/TLS 证书对应的私钥的 PEM 文件。 | -- | -- | 
| ssl_options.fail_if_no_peer_cert | 如果设置为 true,服务器在客户端没有发送证书(即发送空证书)的情况下失败。如果设置为false,则只在客户端发送无效证书时失败(一个空证书被认为是有效的)。 | -- | -- | 
TIP
EMQX 提供了更多配置项以更好地满足定制化需求。详情请参见 EMQX 企业版配置手册。