首页 > 其他分享 >EMQX集群的创建和使用

EMQX集群的创建和使用

时间:2023-12-26 14:22:44浏览次数:32  
标签:创建 配置 172.18 集群 emqx EMQX 节点

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 = "[email protected]"
  cookie = "mysecret"
  data_dir = "/var/lib/emqx"
}

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

  1. name = "[email protected]"
    配置节点名称,格式为 @。其中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),节点名称应为 [email protected]

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 = "[email protected]"    ## 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 [email protected]

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

  2. [email protected] 加入 [email protected] 组成集群后,它将清除本地数据并将 [email protected] 中的数据同步过来。

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

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

./bin/emqx ctl cluster status

Cluster status: [{running_nodes,['[email protected]','[email protected]']}]

标签:创建,配置,172.18,集群,emqx,EMQX,节点
From: https://www.cnblogs.com/ydqblogs/p/17927557.html

相关文章

  • minio集群的部署【nginx+minio]
    1、配置MinIO集群配置本地解析在/etc/hosts中配置vim/etc/hosts#添加以下内容,每台MinIO节点都需要配置192.168.5.1minio-1192.168.5.2minio-2192.168.5.3minio-3192.168.5.4minio-4 在4台服务器上创建MinIO存储文件夹mkdir-p/data/miniochmod750/data/minio......
  • 关于SAP-DB-服务器组-创建SAPHanaTopology-资源报错-Unable to find agent SAPHanaTop
    SAPHanaTopology资源收集每个节点上的SAPHANA系统复制的状态和配置。为配置以下属性SAPHanaTopology。运行以下命令来创建SAPHANATopology资源:笔者在SAP-DB-服务器组-pacemaker集群中,创建SAPHanaTopology资源时,使用如下命令:[root@db01qq-5201351]#pcsresourcecreate......
  • Java,反射创建对象的两种方式
    跟着孙哥学Spring,b站:https://www.bilibili.com/video/BV185411477k/?spm_id_from=333.337.search-card.all.click在Java中,我们可以使用反射来创建对象。这里有两种主要的方式:1.使用Class.forName().newInstance()方法这种方式是使用默认的无参数构造函数来创建对象。如果......
  • GlusterFS集群安装
    GlusterFS集群安装GlusterFS参考链接:https://zhuanlan.zhihu.com/p/586419358安装环境准备服务器编号OSIPGFS1CentOS7.9-2009192.168.1.15GFS2CentOS7.9-2009192.168.1.16vip-192.168.1.16实现效果GFS1和GFS2为复制关系,两者数据保持一致。挂载GFS......
  • 如何通过port-forward命令在本地访问 k8s 集群服务
    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享概述在我们访问k8s中的pod服务时,一般通过nodeport映射pod端口进行访问,还有一种是通过ingress或者istio通过域名方式来访问,虽然两种方式能满足我们需求,但是如果针对临时访问,配置起来还是有点复杂和......
  • C# 中使用 using 关键字和不使用 using 关键字创建 FileStream
    在C#中使用using关键字和不使用using关键字创建FileStream实例之间有一些区别。使用using关键字:using(FileStreamfileStream=newFileStream(filePath,FileMode.Open,FileAccess.Read)){//使用fileStream进行操作}using关键字用于创建FileStream......
  • python网站创建015:jQuery的标签操作
    当我们找到标签之后,就要学习jQuery对这个标签都能做哪些操作? 1、样式操作:也就是操作标签的css样式添加样式:addClass删除样式:removeClass判断是否有该样式:hasClass有则移除,无则添加:toggleClass<!DOCTYPEhtml><html><head><title>初识:JavaScript</title><meta......
  • django练手系列(三):创建第一个视图、第一个网页、和第一条路由,让项目先运转起来
    1、创建第一个网页在templates文件夹上点击鼠标右键,重构、移动目录,把templates文件夹移动到app目录下面。在templates文件夹上点击鼠标右键,新建 HTML文件 文件名称为index。HTML文件的内容如下:点击查看代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"......
  • pthread_create用法,创建线程输出2*n
    #include<stdio.h>#include<stdlib.h>#include<pthread.h>#include<unistd.h>void*calculate(void*arg){intvalue=*(int*)arg;longvalue_2=2*(long)value;printf("Thethread_idis%lu,createdby%d\n&qu......
  • 类与对象的创建
    类与对象的创建publicclassapplication{publicstaticvoidmain(String[]args){studentxm=newstudent();studentxy=newstudent();xm.name="xiaoming";xm.age=11;System.out.println(xm.name);......