oracle负载均衡导致内网穿透失败与解决

oracle启动了高可用或者负载均衡导致内网穿透失败

之前一直用内网端口映射脚本+frp工具, 实现将内端口临时映射到外网端口做对接调试.

oracle, mysql, sqlServer的数据库端口也都试着映射过. 但是oracle成功过, 也有失败的经历.

默认oracle使用服务器1521端口, 一般而言,可以将此端口, 映射到内网其他主机的其他端口, 继而用frp工具映射到公网云主机的某个端口.

参考如下博客: https://blog.csdn.net/hegel_su/article/details/7614250 该博客说根据配置的不同, oracle可能会使用其他端口传数据, 1521端口仅用于侦听连接.

Oracle服务器的默认侦听端口为1521,但实际通讯时使用的端口分为两种情况,具体如下: 专用模式(windows下安装oracle服务器默认运行在这个模式)下,通讯端口与侦听端口不同; 共享模式 MTS (UNIX下安装oracle服务器默认运行在这个模式)下,通讯端口和侦听端口相同。 所以,在对oracle服务器做端口映射和防火墙规则配置时,让oracle运行在共享模式下比较方便。

先连了下plsql dev, 在内网主机上查了下tcp连接:

netstat -na | findstr ESTABLISHED

可以进一步过滤下 1521端口

netstat -na | findstr ESTABLISHED | findstr 1521

发现明明tnsnames.ora配的是A地址, pl sql dev登录后, 连接的确是其他地址B:1521.

大惊!!! 我猜大概是外面是一层类似网关一样的东西,甚至只负责侦听是否有新连接, 然后根据负载均衡或者高可用规则, 再交由后面的oracle实例建立另外的连接.

查了一下, 应该是oracle RAC或者类似的东西.

这样的话, 因为我这边的调试也只涉及查询, 就直接跳过原来的A:1521, 直接配了B:1521的端口映射与内网穿透, 成功.

参考:

https://blog.csdn.net/hegel_su/article/details/7614250

https://www.cnblogs.com/shengs/p/4521084.html


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注