负载平衡器无法与后端连接

时间:2019-11-14 07:15:14

标签: oracle-cloud-infrastructure

我已经在OCI计算上部署了Spring boot应用程序,并且编译良好。使用公共ip创建计算,并更新安全性列表以允许来自Internet的连接。但是,我无法从互联网上找到终点。因此,我想到了配置负载均衡器。

enter image description here

在单独的子网(10.0.1.0/24),路由表和安全性列表中创建了负载均衡器。配置LB的安全性列表以将所有协议数据包发送到计算的CIDR(10.0.0.0/24),并配置计算的安全性列表以接受来自LB的数据包。我期望LB与后端建立连接。但是,事实并非如此。

enter image description here

我可以从互联网上找到LB:-

enter image description here

Lb的路由表,其中所有ip都通过Internet网关路由。在VCN中没有为计算的CIDR定义路由。

enter image description here

LB有其自己的安全列表,该列表允许外出数据包的计算和从Internet的传入,如下所示:

enter image description here enter image description here

接受来自LB的数据包的计算安全列表: enter image description here enter image description here

如果我在这里遗漏了一些东西,请告诉我。

我的互联网网关:- enter image description here

我的后端从LB设置连接配置:

enter image description here

LB无法与后端建立连接,似乎没有可用的日志记录信息:

enter image description here

如果我从计算节点访问,应用程序运行正常:

enter image description here

2 个答案:

答案 0 :(得分:4)

LB具有运行状况检查,以测试与您的服务的连接。如果失败,LB将使您的后端保持旋转状态,并为您提供至关重要的健康状态。

Default health check

您可以通过查看后端集并单击“更新运行状况检查”按钮来获得它。

Backend Set configuration screen

编辑: 最终,我弄清楚了,您应该在后端运行以下命令:

sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

使用您配置了应用程序的端口进行监听。

我用httpd代替了spring,但是我也做了以下

sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
sudo restorecon -F -R -v /var/www/html

我对selinux不太熟悉,但是您可能需要为您的应用程序做类似的事情。

此外,在同一子网中设置第二个主机以登录并测试连接到另一个主机将有助于进行故障排除,因为它将验证您所在应用程序所在主机之外的所有位置是否均可访问您的应用程序。一旦建立,LB应该会很好。

答案 1 :(得分:0)

TL; DR在我的案例中,它有助于将安全列表规则从2个相关子网(承载负载平衡器和后端的位置)上的有状态切换为无状态位于)。

在我们的部署中,我有一个带有公共IP的负载平衡器位于一个子网中,而此负载平衡器的后端位于另一个子网中。两个子网都有一个入口规则和一个出口规则-允许所有内容(即0.0.0.0/0和所有允许的端口)。负载平衡器仍无法访问后端,并且运行状况检查失败。

即使在我看来,按照documentation在有状态和无状态之间切换不会产生任何效果,它仍然解决了我的问题。