Oracle RAC是什么?
RAC是real application clusters的缩写,译为“实时应用集群”, 是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网络计算环节的核心技术。
Oracle RAC中会有如下几个IP地址
真实IP和VIP:Oracle RAC中每个节点都有一个虚拟IP,简称VIP, 与真实IP在同一个网段。vip 附属在public网口接口。VIP和真实IP最主要的不同之处在于:VIP是浮动的,而真实IP是固定的。在所有节点都正常运行时,每个节点的VIP会被分配到网卡上;在linux下ifconfig查看,public网卡上是2个IP地址;如果一个节点宕机,这个节点的VIP会被转移到还在运行的节点上。也就是幸存的节点的网卡上,多出来一个VIP。
Private-IP: RAC中的 Private私有IP用于心跳同步,这个对于用户层面,可以直接忽略。简单理解,这个Ip用来保证两台服务器同步数据用的,属于RAC内部之间通信。priv 与真实IP 不应同属一个接口。
Scan-IP:Oracle11gR2之后,引入了一个scan的概念。SCAN IP是作为一个新增IP出现的, scan ip其实是oracle在客户端与数据库之间,新加的一个连接层,当有客户端访问时,连接到 SCAN IPLISTENER, 而SCAN IP LISTENER接收到连接请求时,会根据 算法将该客户端的连接请求,转发给对应的instance上的VIP LISTENER,从而完成了整个客户端与服务器的连接过程。
简单说一下Oracle RAC的访问流程:
客户端先访问Scan-IP,然后Oracle会根据算法返回一个VIP至客户端,客户端最终访问VIP进行业务访问。
下面用一个实际的环境来简要说明一下:
网络拓扑如下:
OracleDB1的环境如下:
192.168.10.181db01为真实IP1
192.168.10.182 db02为真实IP2
192.168.10.183db01-vip为VIP1
192.168.10.184db02-vip为VIP2
192.168.20.181db01-priv为Private-IP
192.168.20.182 db02-priv为Private-IP
192.168.10.180rac-scan为Scan-IP
OracleDB1接口的情况如下
以下可看到RAC1的监听IP,该监听IP是提供服务,一般是设备的VIP和真实IP,同理RAC2的监听IP是192.168.10.182、192.168.10.184,所以我们需要关注的是这每台设备的这2个IP。
(PS:这个时候我们会有个疑问,为什么会提供2个IP提供监听,直接用真实IP不就好了吗???
没有VIP时,Oracle客户端是靠“TCP/IP协议栈超时”来判断服务器故障。而TCP/IP协议栈是作为OS Kernel的一部分来实现,不同的OS有不同的阀值,用户获悉数据库异常的时间完全取决于OS Kernel的实现。因此,oracle RAC引入了VIP,从而避开对TCP协议栈超时的依赖。不过也有一些客户VIP和真实IP都会用到,所以这个与客户沟通好他们的数据流是如何通信。)
当RAC2挂了后,VIP2飘到了RAC1,虽然VIP2飘过去了,但是VIP2是不会提供服务,只由VIP1提供服务,而scanIP也会只提供VIP1给客户端。
针对Oracle RAC环境,DAS如何进行审计数据库的访问记录?
镜像流量部署:
通过复制交换机的数据库流量,镜像到审计设备,进行审计。该部署方式对用户数据库环境无任何影响。建议条件允许的情况下,优先采取此方式进行部署配置。
agent部署:
在无法提供镜像端口的情况下可采用探针(agent)部署在数据库中。该部署方式适用云环境,虚拟环境,数据库比较分散等场景。探针与DAS建立连接,通过抓取网络中的流量获取信息发送到DAS设备,进行审计。
若是DAS2.0.3及以下版本,agent的配置文件是填写整个通信的物理接口,可在配置文件中配置物理接口,进行抓取物理接口的流量。
若是DAS2.0.5及以上版本,agent只能填写单个IP,所以我们需要了解好客户的数据通信流,它是采用哪个IP进行通信的(VIP、真实IP)。若是与VIP或者是真实IP其中一个IP通信,可在配置文件填写对应IP进行抓取流量;若是同时使用2个IP的话,DAS2.0.5默认带的agent版本是不支持的,若客户是这个情况的话,麻烦需要找对应区域深信服工程师提供。