基于Nginx主备模式的双机热备
本节将学习如何使用Nginx实现主备模式的双机热备,当主机出现异常挂掉时备机会接管服务
# 操作步骤
注意
- 两个IoTCenter平台的License(授权文件)必须相同。
- 两个IoTCenter平台必须使用同时一个数据库。
- 两个IoTCenter平台都必须在应用商店中安装双机热备扩展插件
# 部署两个IoTCenter平台
操作步骤
参考平台安装部署两套IoTCenter
应用商店装安装双机热备扩展插件,安装完成后重启平台

- 配置双机热备扩展插件
参数说明:
驱动文件:GWBackUpCore.STD.dll
功能名称:主备模式(可自定义)
功能类型:功能类型
参数:备机IP:备机端口/主机端口号/MS/主机IP
示例:192.168.110.8:8015/8016/MS/192.168.110.79(备机端口/主机端口可参考示例内容)
是否启用:是
参考上述内容后重启平台。

效果如下 主机:

备机:

# 安装Nginx
以下是针对不同操作系统的Nginx安装教程,涵盖Linux(Ubuntu/CentOS)、macOS和Windows环境,包含详细步骤和验证方法:
# 一、Ubuntu 安装Nginx
操作步骤
- 更新包管理器:
sudo apt update - 安装Nginx:
sudo apt install nginx -y - 启动并设置开机自启:
sudo systemctl start nginx sudo systemctl enable nginx - 验证安装:
- 检查服务状态:
sudo systemctl status nginx - 访问默认页面:浏览器打开
http://localhost或http://服务器IP。
- 检查服务状态:
# 注意事项:
- 防火墙需开放80/443端口:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw reload
# 二、CentOS 安装Nginx
操作步骤
- 更新包管理器:
sudo yum update -y - 安装Nginx:
sudo yum install nginx -y - 启动并设置开机自启:
sudo systemctl start nginx sudo systemctl enable nginx - 验证安装:
- 检查服务状态:
sudo systemctl status nginx - 访问默认页面:浏览器打开
http://localhost。
- 检查服务状态:
# 注意事项:
- 开放防火墙端口:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
# 三、macOS 安装Nginx(Homebrew)
操作步骤
- 安装Homebrew(如未安装):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - 安装Nginx:
brew install nginx - 启动服务:
brew services start nginx - 验证安装:
- 访问默认页面:浏览器打开
http://localhost。 - 检查配置文件路径:
/usr/local/etc/nginx/nginx.conf。
- 访问默认页面:浏览器打开
# 注意事项:
停止服务:
brew services stop nginx
# 四、Windows安装Nginx
操作步骤
- 下载Nginx:
- 访问官网 https://nginx.org/en/download.html,下载最新稳定版(如
nginx-1.25.3.zip)。
- 访问官网 https://nginx.org/en/download.html,下载最新稳定版(如
- 解压文件:
- 解压到简单路径(如
C:\nginx)。
- 解压到简单路径(如
- 启动Nginx:
- 双击
nginx.exe或通过命令提示符运行:start nginx
- 双击
- 验证安装:
- 访问默认页面:浏览器打开
http://localhost。 - 检查进程:任务管理器中查看
nginx.exe是否运行。
- 访问默认页面:浏览器打开
# 注意事项:
配置文件路径:
C:\nginx\conf\nginx.conf。nginx -s stop
# 五、通用验证命令
- 检查Nginx版本:
nginx -v - 测试配置文件语法:
nginx -t - 查看进程:
ps -ef | grep nginx
# 六、常见问题解决
- 端口被占用:
- Linux/macOS:
sudo lsof -i :80或sudo netstat -tuln | grep :80。 - Windows:
netstat -ano | findstr :80。
- Linux/macOS:
- 权限问题:确保以管理员/root权限执行命令。
# 配置Nginx实现主备模式
配置核心流程
- Nginx主备配置(关键修改项)
events {
worker_connections 1024; # 单worker进程最大连接数
}
http {
upstream grpc_backend {
# 主节点配置(必须保证在线)
server 192.168.110.8:4001;
# 备节点配置(自动接管主节点故障)
server 192.168.110.79:4000 backup;
keepalive 32; # 复用32个长连接到上游服务
}
server {
listen 5000 http2; # 启用HTTP/2协议监听
server_name 192.168.110.79; # 绑定服务器IP
location / {
grpc_pass grpc://grpc_backend; # gRPC流量转发至上游集群
grpc_set_header Host $host; # 透传客户端Host头信息
# 超时控制(建议与业务长连接时长匹配)
grpc_read_timeout 300s; # 等待上游响应最大时长
grpc_send_timeout 300s; # 发送请求到上游最大时长
}
}
}
- IoTCenter集群配置调整
步骤1:启用多实例部署模式
修改配置文件./data/AlarmCenter/AlarmCenterProperties.xml
<!-- 将单实例启动模式改为集群模式 -->
<SingleAppStart>false</SingleAppStart>
步骤2:配置Web服务地址
修改文件 ./IoTCenterWeb/publish/appsettings.json
{
"Address": {
"Address": "http://192.168.110.79:5000/" // 对接Nginx监听地址
}
}
- 服务启动顺序
启动主备节点服务(确保双机在线)
# 主节点执行 ./bin/GWHost1.exe # 备节点执行(需与主节点保持配置同步) ./bin/GWHost1.exe
启动Web服务能正常访问则表示配置成功
./IoTCenterWeb/publish/IoTCenterWebApi.exe
说明
当主机服务192.168.110.8:4001出现异常挂掉时会自动启动备机服务。
上次更新: 2025/8/28 18:10:25