在 Azure VM 上使用 NGINX 对其他 Azure VM 进行负载均衡
Use NGINX on Azure VM to load balance to other Azure VMs
我 运行 在 Azure (VM1)
的 Ubuntu 17.10 虚拟机上使用 NGINX 开源。我想将它用作负载均衡器,将 TCP 流量转发到同一 Azure 订阅中的更多 Ubuntu VM。目前我在 NGINX 服务器后面只有一个额外的 VM (VM2)
以保持简单。
在本地,我有一个 Java 程序生成 TCP 消息并将其发送到端口 6050 上的 NGINX 服务器的 public IP。该虚拟机有一个入站安全规则,允许端口 6050 上的流量. 然后它应该将该流量发送到端口 6060 上我的第二个 VM 的 public IP。该 VM 具有端口 6060 的入站规则。
这是我的 nginx.conf
文件:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
stream {
upstream backend {
server <VM2 public IP>:6060;
}
server {
listen 6050;
proxy_pass backend;
}
}
error.log
中没有错误,但 TCP 流量从未出现在 VM2 上的端口 6060 上。
这似乎是一个相当简单的用例,但我终究无法弄清楚为什么流量无法通过。有什么建议吗?
您必须使用 Nginx plus,这显然用于负载平衡基于 HTTP 的 LB,在第 7 层功能上工作。
终于想通了。我的 VM 运行 NGINX 在 Azure 负载均衡器后面,我不再使用它了。我的猜测是 VM 连接到负载均衡器,您不能直接向它们发送流量。您必须将流量发送到他们的负载均衡器。
解决方案:我创建了一个新的 VM,没有附加到任何 Azure 负载均衡器。全新安装 NGINX 并将其连接到我的目标 VM。完美运行。
我 运行 在 Azure (VM1)
的 Ubuntu 17.10 虚拟机上使用 NGINX 开源。我想将它用作负载均衡器,将 TCP 流量转发到同一 Azure 订阅中的更多 Ubuntu VM。目前我在 NGINX 服务器后面只有一个额外的 VM (VM2)
以保持简单。
在本地,我有一个 Java 程序生成 TCP 消息并将其发送到端口 6050 上的 NGINX 服务器的 public IP。该虚拟机有一个入站安全规则,允许端口 6050 上的流量. 然后它应该将该流量发送到端口 6060 上我的第二个 VM 的 public IP。该 VM 具有端口 6060 的入站规则。
这是我的 nginx.conf
文件:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
stream {
upstream backend {
server <VM2 public IP>:6060;
}
server {
listen 6050;
proxy_pass backend;
}
}
error.log
中没有错误,但 TCP 流量从未出现在 VM2 上的端口 6060 上。
这似乎是一个相当简单的用例,但我终究无法弄清楚为什么流量无法通过。有什么建议吗?
您必须使用 Nginx plus,这显然用于负载平衡基于 HTTP 的 LB,在第 7 层功能上工作。
终于想通了。我的 VM 运行 NGINX 在 Azure 负载均衡器后面,我不再使用它了。我的猜测是 VM 连接到负载均衡器,您不能直接向它们发送流量。您必须将流量发送到他们的负载均衡器。
解决方案:我创建了一个新的 VM,没有附加到任何 Azure 负载均衡器。全新安装 NGINX 并将其连接到我的目标 VM。完美运行。