通过Azure应用网关连接ACI上的Oracle数据库时遭遇TNS数据包校验和失败问题求助
我现在碰到个棘手的问题:我的Oracle数据库运行在Azure容器实例(ACI)上,按照官方指引配置了Azure应用网关来暴露静态公网IP,本以为这样就能正常连接容器里的数据库了。
目前用AZ CLI工具,我能顺利通过tnsping和sqlplus登录数据库,但从本地客户端连接的时候就出问题了。直接用公网IP(11.222.333.44)执行tnsping,会返回TNS-12569: TNS:packet checksum failure,具体输出如下:
tnsping myDB Attempting to contact(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 11.222.333.44)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = abc))) TNS-12569: TNS:packet checksum failure
用sqlplus尝试登录则会返回ORA-12560: TNS:protocol adapter error。
我已经确认本地客户端能ping通这个公网IP,而且用nmap扫描显示1521端口是开放的,这就让我更摸不着头脑了。
另外还有两个Azure环境里的异常情况,可能和这个问题有关:
- 在ACI的概览页面中,显示的IP地址始终是私有IP,看不到关联的公网IP。我甚至用hello-world镜像搭了一套测试环境(容器+网关+公网IP),结果也是一样,但之前看的教程视频里,同样的操作步骤下ACI概览是能显示公网IP的。
- 应用网关的后端池把ACI标记为不健康,原因是诊断端口被阻塞。我试过用网关的故障排查功能,也查阅了官方帮助文档,但都没能解决这个问题。具体的错误信息如下:
The backend health status could not be retrieved. This happens when an NSG/UDR/Firewall on the application gateway subnet is blocking traffic on ports 65503-65534 in case of v1 SKU, and ports 65200-65535 in case of the v2 SKU or if the FQDN configured in the backend pool could not be resolved to an IP address. To learn more visit - https://aka.ms/UnknownBackendHealth."
备注:内容来源于stack exchange,提问作者linusrg




