一、升级
emqx 小版本升级可以采用热升级方案,比如 v4.4.x之间升级;跨大版本采用滚动升级比如 V4.2.x 升级到V4.3.x或者V4.4.x。以下示例以centos 7 /rpm方式部署的进行操作。
热升级
支持linux系统部署的emqx热更新。
升级
1. 查看当前版本
emqx version
2. 下载热升级的安装包
在官网https://www.emqx.com/zh/try?product=enterprise 选择对应的版本和操作系统类型,然后选择 "zip" 包类型。
3. 找到EMQX安装目录
emqx root_dir
4. 将下载的 zip 包放到 EMQX 安装目录下的 releases 目录下
cp emqx-ee-4.4.8-otp24.1.5-3-el7-amd64.zip /usr/lib/emqx/releases/
5. 升级到指定版本
emqx upgrade 4.4.8
6. 再次查看版本列表,之前的版本的状态将会变成 old
emqx versions
版本回滚(可选)
如果升级后发现问题想要回退,可以执行版本降级命令。
emqx downgrade 4.4.7
删除版本
在系统稳定运行一段时间后,若决定删除一个旧版本,可以执行版本卸载命令
emqx uninstall 4.4.7
滚动升级
滚动升级类似:集群有4个节点,可以先将业务流量切换到后面2个节点,前2个节点升级成功后,系统配置和备份的内容回复后,将流量切换到新集群中,再升级后面的节点逐个加入新集群。
备份
滚动升级时,需要目前使用的版本和新版本是可以使用备份功能还是人工进行备份。到时候可以联系和emqx的支持的技术人员进行确认备份方式。
备份功能
升级前随时可以备份好,确保备份后不再到dashboard上做任何操作。
通过dashboard上备份功能进行备份。点击通用->备份->创建备份。
将生成的备份下载到本地。
人工备份
往往跨大版本存在结构设计上的变化,无法使用备份功能生产的json文件,这种情况需要人为参与拷贝备份。
1. 规则引擎
通过dashboard 界面的规则引擎功能,将所有的规则,资源,编解码等进行人工备份。
2. 模块
除了默认的Recon,MQTT保留消息,上下线通知 3个默认的模块不用备份,内置访问控制文件如果有修改则进行备份,其他额外使用的模块功能需要进行人工备份。
3. 插件
emqx_dashboard,emqx_management,emqx_modules,emqx_rule_engine这4个插件为系统默认启动插件,不需要备份。如果有使用到其他插件,需要到服务器后端备份相应的插件的配置文件。
界面查看运行的插件
后台命令查看运行的插件
emqx_ctl plugins list|grep true
4. 设置
结合之前老版本调整过系统参数,备份到本地。
升级
安装包准备
根据相应的操作系统,下载链接: https://www.emqx.com/zh/try?product=enterprise ,然后选择对应版本及操作系统
升级
安装分二进制安装和zip包安装。二进制是需要先卸载老版本,再安装新版本,再配置,最后启动;zip包是可以先全部节点进行提前解压,每个节点按照各自节点进行配置,最后停止老节点再进行滚动启动。
二进制安装
1. 选择其中部分节点流量切换到其他节点上,从集群中退出。
2. 停止退出集群的节点并备份移走对应目录下的文件,并按照对应部署方式进行卸载。
3. 安装新版本,结合老版本的配置文件修改对应的配置并组成新集群。
4. 将dashboard上的配置同步到新集群中,并验证功能是否正常。
5. 将流量切换到新集群中,并验证功能。
6. 将剩下节点依次进行停止老版本服务,备份移走对应目录下的文件及目录,卸载老版本,安装新版本,修改配置,启动服务,加入新集群。最后流量切换所有节点。
zip包安装
1. 配置
每个节点都进行解压,把老版本调整的参数,在新版本中进行一对一的进行调整。
2. 操作
· 在LB上将流量调整节点一半的数量,没有流量的节点从集群中进行退出,停止这些节点上的老版本服务。
· 在没有流量的节点上启动新版本服务,新版本组成新集群,将dashboard上的配置迁移到新版本中。
· 新版本验证没问题时,将LB的流量切换到新集群上,验证业务恢复正常,再将老集群剩下的节点老版本服务停止,然后启动新版本节点加入新集群中。
· 调整LB恢复所有节点。
3. 删除老版本运行目录
新版本运行一段时间,再确认是否删除老版本的运行目录。如果新版本有问题,可以直接停止新版本,恢复老版本的集群。
版本回滚
二进制回滚
1. 停止现有的节点服务
2. 备份移走对应新版本目录
3. 卸载新版本
4. 安装老版本,恢复备份的老版本目录。
5. 启动老版本,并恢复所有节点在集群中。
zip包回滚
1. 停止所有节点新版本服务。
2. 启动老版本。
3. 恢复集群。
滚动升级示例
示例zip 滚动升级
备份
选择“通用”下的“备份”功能,点击“创建备份”按钮,在点击“下载”保存到本地
备注:如果版本不兼容导入,需要手动将配置的参数进行备份,以便在新版中手动录入恢复配置。
安装包准备
目前是centos7 操作系统,下载链接: https://www.emqx.com/zh/try?product=enterprise ,然后选择对应版本及操作系统:
点击“免费下载”按钮,之前是通过zip安装的,选择对应的安装包地址进行下载:
解压
每个节点都需要操作,修改配置都按照每个节点上的老版本进行调整,可以在升级前提前做好改配置,不影响现有的服务。
通过unzip emqx-ee-4.4.x-xxx.zip 进行解压安装包
拷贝license
将老版本中的emqx.lic拷贝到新的 etc/ 目录下;或者4.4.6及以上版本等启动后通过dashboard导入。
配置emqx.conf
根据老的版本中的配置修改
node.name
allow_anonymous
其他配置请结合实际之前的配置进行调整。
升级
1. 踢出集群
先在ha上把需要某个需要进行升级的节点进行踢出,负载到其他节点上。
Emqx升级节点退出集群
在老版本目录下(emqx-4.2.5)执行:
./bin/emqx_ctl cluster leave
2. 停老版本
在老版本的目录执行停止服务命令:./bin/emqx stop
3. 启动新版本
确保老版本目录和新版本的目录不冲突时,就可以不备份(新版本升级失败直接启动老版本进行恢复)。
在新的版本目录下启动服务命令:./bin/emqx start
Dashbord配置模块及规则(第一个节点操作)
手动将之前的备份 模块和规则在新版本的dashboard上进行配置好。配置好以后,将haproxy 流量全部切入到新版本节点上。
新版加入集群(第二个节点开始需要操作)
假如第一节点配置的node.name 是 emqx@ip1 ,第二个节点配置的node.name是emqx@ip2
在第二个节点上执行:
./bin/emqx_ctl cluster join emqx@ip1
注意: ip2加入集群后会清除本身全部的数据,同步ip1节点的数据。如果还有ip3节点,那么需要在ip3节点去执行命令加入emqx@ip1或者emqx@ip2, 已经在集群的节点不能在join到其他节点,否则会退出当前集群和join的节点组成一个新的集群
示例 rpm包 滚动升级
备份
选择“通用”下的“备份”功能,点击“创建备份”按钮,在点击“下载”保存到本地。
备注:如果版本不兼容导入,需要手动将配置的参数进行备份,以便在新版中手动录入恢复配置。
安装包准备
在 https://www.emqx.com/zh/try?product=enterprise 下载对应的操作系统的版本
比如 centos 7系统
Openssl检测
检测openssl 版本是否openssl 1.1.1以上。低于该版本,进行升级openssl,可以借鉴链接
License备份
如果是4.4.5及之前版本:将license 文件备份,默认是放在emqx/下,结合实际部署过程中导入的license文件。
4.4.5之后版本:直接可以通过dashboard导入更新license。
停老版本
通过命令停止emqx服务:systemctl stop emqx.service
备份文件
结合实际情况进行备份一下目录(除日志)中文件:
卸载老版本
通过rpm -qa|grep emqx 查询安装的版本
通过rpm -e xxxx卸载老版本
清理老版本
安装对应部署方式检查,移走相关的文件(先不要删除,等升级通过后再清理)
安装新版本
sudo yum install emqx-ee-x.x.x-otp24.1.5-3-el7-amd64.rpm
修改节点信息
在/etc/emqx/ emqx.conf 下修改
Erlang 虚拟机参数
节点名称:
更新license
将license拷贝到 /etc/emqx,启动emqx,或者等启动后4.4.6及以上版本通过dashboard导入license。
恢复配置
1. 备份导入
将第一步备份的文件导入系统,点击“备份”下的“上传并恢复”。
提示“数据恢复成功”后,检查规则引擎下的规则和资源是否恢复。
2. 插件
这里手动启动了mnesia,http认证插件,prometheus 监控插件。升级后的版本采用对应模块进行配置管理维护。
新节点加入集群
新版本第二个节点开始操作
新集群替换老集群
该方案风险最小,业务影响时间最少,配置同样硬件配置的操作系统。每个节点按照老集群方式进行,系统优化,部署配置,创建集群,同步老集群中的模块,插件,规则引擎,设置等功能参数,新集群整体验证通过后。将前置LB的流量直接切换到新集群上。等业务回复正常,回收老集群硬件设备。
二、运维
系统调优
根据对应的操作系统,修改系统层面的参数,请参考链接进行相应的调整。
监控
emqx 支持prometheus agent采集数据进行监控。emqx 监控参数指标可以参考官方链接进行查询。agent 是模块中的EMQ X Prometheus Agent:
填写内容:pushgateway 的地址和采集数据的频率。
日志分析系统
emqx日志接入分析系统,方便后续更加方便快速排查一些异常的系统错误,可以采用ELK分析系统进行收集日志。可以参考《ELK日志分析系统部署文档》进行部署采集分析emqx日志。
辅助排障功能
日志追踪
针对指定 ClientID 或 Topic 或 IP 实时过滤日志,用于调试和排查错误
慢订阅
统计消息传输过慢的订阅者和主题,按照传输时延生成历史记录。可以在消费消息时延比较大时,选择该功能进行查询