合 【MOS】Clusterware 和 RAC 中的域名解析的配置校验和检查 (Doc ID 1945838.1)
Clusterware 和 RAC 中的域名解析的配置校验和检查 (Doc ID 1945838.1)
适用于:
Oracle Database Cloud Schema Service - 版本 N/A 和更高版本
Oracle Database Exadata Express Cloud Service - 版本 N/A 和更高版本
Oracle Database Exadata Cloud Machine - 版本 N/A 和更高版本
Oracle Database Cloud Exadata Service - 版本 N/A 和更高版本
Oracle Database Backup Service - 版本 N/A 和更高版本
Generic Linux
Generic UNIX
用途
Cluster Verification Utility(简称 CVU,命令式 runcluvfy.sh 或者 cluvfy)是个非常实用的检查网络和域名解析的工具,但是它也可能无法捕获到所有的问题。如果网络和域名解析在安装之前没有正常的配置,通常直接导致安装的失败。如果网络或者域名解析出现故障,通常会导致 clusterware 或者 RAC 会出现错误。本文的目的在于列出一些和网络以及域名相关的检查项目来检验网络和域名解析对 Grid Infrastructure(clusterware)和 RAC 的配置是否是正确的。
适用范围
本文提供给 Oracle Clusterware/RAC 数据库管理员和 Oracle 的技术支持工程师参考。
详细信息
A. 必要条件
- 无论是公网或者私网,通过 network ping 的方式通过网卡传输 MTU 大小的数据包能够正常工作。并且ping的时间非常短。
- IP 地址 127.0.0.1 需要映射到 localhost 或者 localhost.localdomain 上。
- 不要把任何网卡的地址配置成 127...*。
- 公网网卡的名称在所有节点上都必须是相同的。
- 私网网卡的名称在 11gR2 的版本上,推荐使用相同的,在 11.2 之前的版本必须是相同的。
- 无论是公网还是私网,都不能使用本地的子网(169.254..),公网和私网应该分布在不同的子网中。
- MTU 的设置在所有的节点的网络配置中都应该是相同的。
- Network size 的配置在所有的节点的网络配置中也都应该是相同的。
- 由于私有网络连接的实效性,traceroute 需要能够在网卡的 MTU 设置上没有碎片的传输或者在所有节点的路由表中通过一“跳”完成。
- 私网之间的防火墙必须是关闭的状态。
- 对于 10.1 到 11.1 的版本,域名解析需要对公共名称(public name),私有名称(private name),虚拟名称(virtual name)都生效。
- 对于 11.2 的版本,如果没有 Grid Naming Service (简称 NS),域名解析需要对公共名称(public name),私有名称(private name),虚拟名称(virtual name),SCAN 名称都生效。而且如果 SCAN 是通过 DNS 配置的,那么 scan name 就不能包含在本地的 host 文件中。
- 对于 11.2.0.2 以及以上的版本,多播群 230.0.1.0 需要能够在私网的网络配置中工作;如果打了补丁 9974223 230.0.1.0 和 224.0.0.251 是都支持的。如果打了补丁 10411721 (问题在 11.2.0.3 的版本上做了修复),广播会被支持。详细请参考 Multicast/Broadcast 的验证部分。
- 对于 11.2.0.1 到 11.2.0.3 的版本,安装的过程中,如果您没有配置正确 pubic IP, node VIP, and SCAN VIP ,OUI 安装的过程中会提示 warning。这个 bug9574976 在版本 11.2.0.4 中做了修复,warning 的信息将不再提示。
- 11.2.0.2 之前,Oracle 推荐您使用 OS 级别的网卡绑定功能,根据操作系统平台的不同,您可以能布置不同的绑定方式,如:Etherchannel, IPMP, MultiPrivNIC 等等,您需要咨询 OS 的管理员来做网卡的绑定功能。从 11.2.0.2 之后,私网冗余和 HAIP 被引入来支持本地的多个私网网卡的冗余功能,详细信息,请查看考文档 note 1210883.1。
- 如果您的网络中启用了 jumbo frames,您也可以通过命令来进行检查,关于 jumbo frames 的详细信息,请参考文档 note 341788.1。
B. 正常配置的案例
以下例子中是验证网络配置的过程中我们期望看到的正常的结果。由于 11.2 和 11.1 之前的版本,在网络配置上稍有不同,我们这里提供了两个例子。11gR1 中或以下 11gR2 中之间的区别是 11gR1 中,我们需要公共的名称,VIP 的名称,私有的名称,我们依赖于私有的名称来找出集群的私网的 IP 地址。从 11.2 开始我们将不再依赖于私网,当集群启动时私网的配置将建立在 GPNP profile 上。假设我们有一个 3 个节点的集群,我们看到的信息是如下显示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | -- 11gR1 or below cluster: Nodename |Public IP |VIP name |VIP |Private |private IP1 |private IP2 |NIC/MTU | | |Name1 |NIC/MTU | ---------|----------|---------|-----------|--------|---------------------- rac1 |120.0.0.1 |rac1v |120.0.0.11 |rac1p |10.0.0.1 | |eth0/1500 | | | |eth1/1500 | ---------|----------|---------|-----------|--------|---------------------- rac2 |120.0.0.2 |rac2v |120.0.0.12 |rac2p |10.0.0.2 | |eth0/1500 | | | |eth1/1500 | ---------|----------|---------|-----------|--------|---------------------- rac3 |120.0.0.3 |rac3v |120.0.0.13 |rac3p |10.0.0.3 | |eth0/1500 | | | |eth1/1500 | ---------|----------|---------|-----------|--------|---------------------- -- 11gR2 cluster Nodename |Public IP |VIP name |VIP |private IP1 | |NIC/MTU | | |NIC/MTU | ---------|----------|---------|-----------|------------|---------- rac1 |120.0.0.1 |rac1v |120.0.0.11 |10.0.0.1 | |eth0/1500 | | |eth1/1500 | ---------|----------|---------|-----------|------------|---------- rac2 |120.0.0.2 |rac2v |120.0.0.12 |10.0.0.2 | |eth0/1500 | | |eth1/1500 | ---------|----------|---------|-----------|------------|---------- rac3 |120.0.0.3 |rac3v |120.0.0.13 |10.0.0.3 | |eth0/1500 | | |eth1/1500 | ---------|----------|---------|-----------|------------|---------- SCAN name |SCAN IP1 |SCAN IP2 |SCAN IP3 ----------|-----------|-----------|-------------------- scancl1 |120.0.0.21 |120.0.0.22 |120.0.0.23 ----------|-----------|-----------|-------------------- |
以下是每个节点上都应该验证的,我们给出的例子是 Linux 平台的示例:
- 找到 MTU 设置:
/bin/netstat -in
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 203273 0 0 0 2727 0 0 0 BMRU
# 以上示例中 MTU 的设置是 eth0 设置的是 1500
- 找到 IP 地址和子网,比对所有节点上的 broadcast 和 netmask 的信息:
/sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:11:11:11
inet addr:120.0.0.1 Bcast:120.0.0.127 Mask:255.255.255.128
inet6 addr: fe80::216:3eff:fe11:1111/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:203245 errors:0 dropped:0 overruns:0 frame:0
TX packets:2681 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:63889908 (60.9 MiB) TX bytes:319837 (312.3 KiB)
..
在以上示例中,eth0 的 IP 地址配置是 120.0.0.1,broadcast 是 120.0.0.127,子网掩码是 255.255.255.128,它的子网是 120.0.0.0,这里最多可以配置 126 个 IP 地址。更多详细信息,请参考“子网的基础信息”部分。
注意:每一个被激活的网卡必须具备“UP”和“RUNNING”的标识。在Solaris平台,"PHYSRUNNING"表示物理网卡是否运行。
- 通过运行两次 ping 的命令来确保和以下结果是一致的:
以下是 ping 的例子(从节点 1 public name 到节点 2 的 public name)。
PING rac2 (120.0.0.2) from 120.0.0.1 : 1500(1528) bytes of data.
1508 bytes from rac1 (120.0.0.2): icmp_seq=1 ttl=64 time=0.742 ms
1508 bytes from rac1 (120.0.0.2): icmp_seq=2 ttl=64 time=0.415 ms
--- rac2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.415/0.578/0.742/0.165 ms
请注意丢包和时间。如何丢包不是0%,或者不是sub-second,那说明网络有问题,请联系网络管理员检查。
3.1 在本地通过 public 的 ip 地址,来 ping 所有节点的 public node names,同时使用 MTU 大小的包,来确保网络的连通性。
/bin/ping -s
/bin/ping -s
/bin/ping -s
/bin/ping -s
/bin/ping -s
/bin/ping -s
3.2.1 通过本地的私网 IP 地址,使用 MTU 大小的包,检查所有节点的私网连通性
# 适合 11gR2 的案例,私网名称是可选的
/bin/ping -s
/bin/ping -s
/bin/ping -s
/bin/ping -s
/bin/ping -s
/bin/ping -s
3.2.2 通过本地的私网名称,使用 MTU 大小的包,检查所有节点的私网IP的连通性
# 适用于 11gR1 和之前的版本。
/bin/ping -s
/bin/ping -s
/bin/ping -s
/bin/ping -s
/bin/ping -s
/bin/ping -s
- Traceroute 私有网络
以下例子,演示了通过 traceroute 从节点 1 的私网 IP 到节点 2 的私有名称的过程。
# MTU包大小 - 在Linux平台 包长度需要减去28字节,否则出错:Message too long is reported.
# 例如,MTU值是1500,那么我们应该使用1472:
traceroute to rac2p (10.0.0.2), 30 hops max, 1472 byte packets
1 rac2p (10.0.0.2) 0.626 ms 0.567 ms 0.529 ms
MTU 大小的包,通过1跳完成,没有透过路由表,输出中没有出现故障信息,如:"*" or "!H" 的存在表示有故障。