GoldenGate Pump Porcess: TCP/IP error 110 (Connection timed out)
场景是这样的:
源端SOURCE处于内网,目标端TARGET处于DMZ区域,之前已申请开通了源端访问目标端的7809端口,配置PUMP后,PUMP进程一直无法正常工作:
WARNING OGG-01223 Oracle GoldenGate Capture for Oracle, P2IPLAN.prm: TCP/IP error 110 (Connection timed out).
从源端PING目标端,也能PING通,使用telnet测试7809端口,也能顺利连接上:
$ telnet X.X.X.X 7809
Trying X.X.X.X ...
Connected to X.X.X.X (X.X.X.X).
Escape character is '^]'.
Connection closed by foreign host.
但是PUMP进程就是无法连接到目标端!
在确保PUMP的各项配置正确后,使用tcpdump来抓取网络包:
在源端运行:tcpdump -v host <SOURCE> and <TARGET>
经过一段时间的跟踪,发现:
。。。
14:28:25.836419 IP (tos 0x0, ttl 64, id 24609, offset 0, flags [DF], proto: TCP (6), length: 60)
SOURCE.53922 > TARGET.7819: S, cksum 0x6026 (correct), 2731187048:2731187048(0) win 5840
<mss 1460,sackOK,timestamp 293365436 0,nop,wscale 7>
。。。
15:05:07.276469 IP (tos 0x0, ttl 61, id 48226, offset 0, flags [DF], proto: TCP (6), length: 52)
SOURCE.57845 > TARGET.7810: ., cksum 0xb486 (correct), ack 400 win 46
<nop,nop,timestamp 295566806 1709213240>
PUMP进程访问的并不是7809端口!每次启动进程访问的端口是有变化的,7810、7819。。。,那应该配置端口呢?仔细研究了一下官方文档
[Oracle GoldenGate Windows and UNIX Administrator’s Guide],在P20-P21的Maintaining ports for remote connections through firewalls
一节中说明了在有防火墙的网络中,需要开通额外的端口,并使用DYNAMICPORTLIST参数,指定端口范围。类似在目标端MANAGER进程的参数,加上:
...
DYNAMICPORTLIST 7809-7830
...
并在网络策略中开通源端访问目标端的7809-7830端口。经过以上配置后,PUMP进程工作正常了。 |