Oracle数据库集群的心跳网络如何设计?

参与15

2同行回答

haizdlhaizdl技术经理大连
网络规划设计的关键点1 硬件及参数从Oracle官方的推荐来看,他们首先推荐使用万兆以太网,至少使用千兆以太网,负载如果很高那么私网可以采用infiniband。当然这个完全取决于客户生产环境的具体业务量及负载情况。这个仅仅是个参考,有条件的情况下可以按照推荐进行配置。私网的...显示全部

网络规划设计的关键点
1 硬件及参数
从Oracle官方的推荐来看,他们首先推荐使用万兆以太网,至少使用千兆以太网,负载如果很高那么私网可以采用infiniband。当然这个完全取决于客户生产环境的具体业务量及负载情况。这个仅仅是个参考,有条件的情况下可以按照推荐进行配置。私网的连接需要使用交换机,Oracle集群安装并不支持私网的直连架构。网卡及交换机的双攻击速率参数保持正确一致。

2 网卡绑定
各种平台都有自己的网卡绑定工具,而且提供负载均衡和主备模式的绑定。首先为了提高公网和私网的网络高可用,网卡需要绑定。对于Linux平台我们需要在配置文件 “/etc/modprobe.d/dist.conf” 中将数mode来控制网卡绑定的具体策略:
 mod=0,即:(balance-rr)Round-robin policy(平衡抡循环策略)。
 mod=1,即: (active-backup)Active-backup policy(主-备份策略)。
 mod=2,即:(balance-xor)XOR policy(平衡策略)。
 mod=3,即:broadcast(广播策略)。
 mod=4,即:IEEE 802.3ad Dynamic link aggregation(IEEE802.3ad 动态链接聚合)。
 mod=5,即:(balance-tlb)Adaptive transmit load balancing(适配器传输负载均衡)。
 mod=6,即:(balance-alb)Adaptive load balancing(适配器适应性负载均衡)。
对于私网网卡绑定方式mode=3&6会导致ORA-600,公网网卡绑定方式mode=6会导致BUG9081436。对于具体的绑定模式,对于平台版本低而且网络架构非常复杂的场合,还是建议主备模式,因为主备模式更稳定,不容易产生数据包路径不一致的问题。如果是负载均衡模式的场合,如果网络参数设置不是很科学的情况下,很容易出现从一个物理网卡发送报文,但是回报文却回到另外一个物理网卡上,网络链路再加入防火墙的规则之后,非常容易导致丢包问题发生。
而对于AIX平台来讲,将参数mode修改为NIB或者Standard值。Standard是根据目标IP地址来决定用哪个物理网卡来发送报文,是基于IP地址的负载均衡,也不易产生上述的丢包问题。

3 SCAN
Oracle RAC,从11gr2之后增加了SCAN(Single ClientAccess Name)的特性。
SCAN是一个域名,可以解析至少1个IP,最多解析3个SCAN IP,客户端可以通过这个SCAN 名字来访问数据库,另外SCAN ip必须与public ip和VIP在一个子网。启用SCAN 之后,会在数据库与客户端之间,添加了一层虚拟的服务层,就是SCAN IP和SCAN IP Listener,在客户端仅需要配置SCAN IP的tns信息,通过SCANIP Listener,连接后台集群数据库。这样,不论集群数据库是否有添加或者删除节点的操作,均不会对客户端产生影响,也就不需要修改配置。对于SCAN相关的配置,有以下一些配置注意事项:
(1)主机的默认网关必须与SCAN以及VIP在同一个子网上。
(2)建议通过 DNS,按round-robin方式将 SCAN 名称(11gR2 和更高版本)至少解析为 3 个 IP 地址,无论集群大小如何。
(3)为避免名称解析出现问题,假设我们设置了三个SCAN地址,那么HOSTs文件当中不能出现SAN的记录,因为HOSTs文件当中的记录是静态解析,与DNS动态解析相悖。

4 网络参数
操作系统平台上关于网络的内核参数非常重要,直接决定私网公网数据传输的稳定性和性能。不过针对不同的操作系统,相关的参数设置也各有差异。
1.Linux。对于Linux平台的内核参数,有两个非常重要(net.core.rmem_default、net.core.rmem_max)。具体功能解释如下:
 net.ipv4.conf.eth#.rp_filter:数据包反向过滤技术。
 net.ipv4.ip_local_port_range:表示应用程序可使用的IPv4端口范围。
 net.core.rmem_default:表示套接字接收缓冲区大小的缺省值。
 net.core.rmem_max:表示套接字接收缓冲区大小的最大值。
 net.core.wmem_default:表示套接字发送缓冲区大小的缺省值。
 net.core.wmem_max:表示套接字发送缓冲区大小的最大值。
为了获得更好的网络性能,我们需要根据具体情况把以上两个参数从其默认值适当调整为原来的2-3倍甚至更高,关闭或者设置反向过滤功能为禁用0或者宽松模式2。

2.AIX。对于AIX平台的内核参数,以下设置是从Oracle官方文档摘出的最佳配置:
tcp_recvspace = 65536;
tcp_sendspace = 65536;
udp_sendspace = ((db_block_size *db_multiblock_read_count) + 4096) ;
udp_recvspace = 655360;
rfc1323 = 1;
sb_max = 4194304;
ipqmaxlen = 512;
第1、2个参数表示TCP窗口大小,第3、4个参数表示UDP窗口大小。rfc1323启用由 RFC 1323(TCP 扩展以得到高性能)指定的窗口定标和时间图标。窗口定标允许 TCP 窗口大小(tcp_recvspace 和 tcp_sendspace)大于 64KB(65536)并且通常用于大的 MTU 网络。默认为0(关),如果试图将 tcp_sendspace 和 tcp_recvspace 设为大于 64 KB则需要先修改此值为1。ipqmaxlen 表示指定接收包的数目,这些包可以列在 IP 协议输入队列中。sb_max指定一个 TCP 和 UDP 套接字允许的最大缓冲区大小。

收起
银行 · 2017-10-16
浏览3792
loxialoxia系统工程师某公司
利用HAIP功能,两张(或以上)私网网卡,分别接到不同的交换机。当然,HAIP功能是11.2+版本才支持~显示全部

利用HAIP功能,两张(或以上)私网网卡,分别接到不同的交换机。
当然,HAIP功能是11.2+版本才支持~

收起
系统集成 · 2017-10-13
浏览3114

提问者

beatles_wang
项目经理中国大地财产保险股份有限公司
擅长领域: 存储云计算灾备

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2017-10-13
  • 关注会员:3 人
  • 问题浏览:6458
  • 最近回答:2017-10-16
  • X社区推广