这里有一些系统混搭,请耐心等待。 从本质上讲,在尝试备份远程Linux服务器时,使用Oracle的Backup Exec代理程序遇到了一些麻烦。 BE代理似乎使用RMAN来备份数据库
备份服务器位于一个VLAN上,目标服务器位于另一个VLAN上,Cisco ASA防火墙提供它们之间的唯一链接。 这是devise上的,因为备份服务器支持大量的客户端,每个客户端必须在自己的VLAN上,以防止它们互相访问。 我已将推荐的端口添加到防火墙,以至less允许代理与媒体服务器通话。
备份开始的足够好(实际上,同一台服务器上的较小的Oracle数据库完成没有问题),但一个200GB的数据库,显然需要几个小时才能完成,不能完成。
我认为这个问题与http://www.symantec.com/business/support/index?page=content&id=TECH59632有关,它说在备份开始时在端口5633上build立一个CORBA会话,每个RMAN操作,但在传输数据时,CORBA会话的套接字不接收数据包。 由于防火墙上的连接超时时间为60分钟,因此CORBA会话将被丢弃,并且当RMAN代理尝试执行下一个操作时,整个进程会发生爆炸。 赛门铁克表示,这个问题在早期版本的Backup Exec中得到修复,但是并没有详细说明任何额外的设置来强制执行。
将防火墙上的连接超时设置为足够高以覆盖备份窗口的时间(例如12小时)似乎是错误的,因为这是一个不动产范围的变化,这也将影响连接寿命(例如)Web请求到另一个客户的Web服务器。
将Linux服务器移到与备份服务器相同的局域网中是不可能的。
我不是一个Linux大师,但我大致知道我的方式。 到目前为止,我已经尝试开始使用libkeepalive( http://libkeepalive.sourceforge.net/ )强制使用KEEPALIVE TCP标志创build远程进程的套接字创build,但是快速的netstat -top表明它没有使用。 要么我使用libkeepalive不正确,或者它不适用于beremote二进制
我想我正在寻找一个适合我所处的环境的选项。我想我正在寻找一个或多个以下内容:
任何/所有(其他)的想法欢迎…
J.
根据要求, class-map , policy-map和service-map条目…
class-map CLS_INSPECTION_TRAFFIC match default-inspection-traffic class-map CLS_ALL_TRAFFIC match any class-map CLS_BACKUPEXEC_CORBA description Oracle/DB2 CORBA port for BackupExec traffic match port tcp eq 5633 ! ! policy-map type inspect dns PMAP_DNS_INSPECT_SETTINGS parameters message-length maximum client auto message-length maximum 1280 policy-map PMAP_GLOBAL_SERVICE class CLS_INSPECTION_TRAFFIC inspect dns PMAP_DNS_INSPECT_SETTINGS inspect ftp inspect h323 h225 inspect h323 ras inspect rsh inspect rtsp inspect esmtp inspect sqlnet inspect skinny inspect sunrpc inspect xdmcp inspect sip inspect netbios inspect tftp inspect ipsec-pass-thru inspect icmp inspect snmp class CLS_BACKUPEXEC_CORBA set connection timeout idle 1:00:00 dcd class CLS_ALL_TRAFFIC set connection decrement-ttl !
ASA超时/定时器背景:
全局超时连接是TCP虚拟电路(会话)空闲计时器,默认为60分钟。 全局超时udp是UDP孔,默认为2分钟。 全局超时xlate用于清除conn超时后翻译的翻译。 conn(TCP)超时优先于xlate超时。 下一段进一步解释了conn和xlate计时器之间的关系。
如果通过TCP teardown成功拆除了conn,则conn和xlate将与之一起移除(如果dynamicxlate,静态NAT和静态PAT xlate不会被删除)。 如果连接超时,则考虑xlate计时器。 如果xlate先超时(你把它设置的很低),它不会在连接超时之前断开连接。
ASA有几种处理不同超时的方法。 康涅狄格州是可以根据class级地图覆盖全球环境的地区 – 如果可能的话,应该优先考虑增加全球环境。
ASA拥有的另一个有趣的function是死连接检测 – DCD。 DCD允许您保持60分钟(缺省值)的[全局] conn超时,并在达到60分钟时 – ASA中间人将空数据ACK作为另一个端点来欺骗每个端点。 空数据用于防止序号递增。 如果双方都响应连接的空闲计时器重置为0,并重新开始。 如果任一方在给定的时间段内经过一定数量的尝试(可configuration)后没有响应,则conn被移除,并且xlate计时器如上所述获得相关性。
我build议configuration一个class级地图,并将其添加到您的政策,使DCD。 您可以使用ACL或端口(其他也可以)。 如果你确定TCP / 5633是问题所在,那么使用这个端口是快速,简单的,并且工作的很好。
我已经使用了下面的global_policy,但是可以根据需要随意调整。
class-map BE-CORBA_class description Backup Exec CORBA Traffic Class match port tcp eq 5633 policy-map global_policy class BE-CORBA_class -->::Choose one below::<-- set connection timeout idle 1:00:00 dcd --> for 8.2(2) and up set connection timeout tcp 1:00:00 dcd --> for prior to 8.2(2) service-policy global_policy global
@评论
根据参考指南 – “ 每个特征types的数据包只能在策略映射中匹配一个类映射”。
关键词是粗体。 通过接口的数据包可以匹配策略映射中的多个类,但是只有这些类使用不同的“特征”。 如果您在上述链接中向上滚动,您将看到列出的各种function。 整个页面是MPF花絮的金矿。
正如你所提到的,你有一个match any定义的match any类映射,然后在policy-map中引用为一个类 – 如果在该策略映射类中执行任何其他TCP和UDP连接限制和超时更改,则随后的类与stream量匹配的映射(如果在策略映射中设置的话)不会对该数据包执行TCP和UDP连接限制和超时更改。
如果你发布了所有的ACL, class-map , policy-map和service-policy ,我们可以确定。
尽pipe我不是一个应用程序带着他们的玩具回家(并且备份失败)的粉丝,但是当一个单独的TCP会话被杀死时,在这种情况下,我会说ASA的TCP会话超时。
对会话长度进行硬限制实际上只是ASA需要跟踪所有连接以维护状态(通常是NAT)的产品 – 如果您的设备的连接限制正在运行,那么这可能是一个问题,但除此之外,只需要6小时左右就可以了。
除非TCP会话末端的两个节点都变暗,否则当自然结束时,ASA将看到一端或另一端结束连接,然后断开连接(或触发较短的半closures连接超时),所以你不可能结束一大堆堵塞堵塞的死亡连接。 端点设备也有兴趣拆除无用的连接 – networking服务器就是一个很好的例子,因为它们的连接超时比ASA通常要短得多。
您可以考虑在远程Linux机器上使用通用TCP代理,该代理可以将连接从Backup Exec转移到本地CORBA端口。 (您可以轻松地安排Backup Exec服务器通过防火墙上的NAT规则连接到此代理。)该TCP代理需要在其创build的侦听套接字上设置SO_KEEPALIVE选项。 我的代理选项是rinetd ,但是快速查看源代码显示他们没有在其监听套接字上设置SO_KEEPALIVE选项(所以您必须修改它以获得所需的行为)。 有可能是另一个通用的TCP代理默认设置SO_KEEPALIVE(或作为选项),但我不知道我的头顶。
另一个select是在SSH客户端设置为使用SO_KEEPALIVE或SSH空数据包保持连接存活的情况下,作为预作业脚本的一部分,启动到远程计算机的SSH隧道。