我正在使用 Oracle GNS 运行 2 节点 Oracle 12.1.0.2.0 ASM Flex Cluster,我相信它使用 zeroconf 来创建其 adhoc 网络。
在 GNS 启动之前,DNS 可以工作,即 nslookup、dig、ping、ssh 都可以在本地网络和 www(例如 google.com)上使用。以下是 GNS 启动之前的路由表:
[root@lxcora03 ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default vmem1.vmem.org 0.0.0.0 UG 0 0 0 eth0
10.207.39.0 * 255.255.255.0 U 0 0 0 eth0
172.0.0.0 * 255.0.0.0 U 0 0 0 eth5
172.0.0.0 * 255.0.0.0 U 0 0 0 eth6
192.0.0.0 * 255.0.0.0 U 0 0 0 eth1
192.0.0.0 * 255.0.0.0 U 0 0 0 eth2
192.0.0.0 * 255.0.0.0 U 0 0 0 eth3
192.0.0.0 * 255.0.0.0 U 0 0 0 eth4
[root@lxcora03 ~]#
GNS 启动后,添加了新路由,ping 和 ssh 中断,而 nslookup 和 dig 继续工作。这是 GNS 启动后的路由表。我怀疑问题与路由表中的 link-local 条目有关,但不确定。
[root@lxcora03 ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default vmem1.vmem.org 0.0.0.0 UG 0 0 0 eth0
10.207.39.0 * 255.255.255.0 U 0 0 0 eth0
link-local * 255.255.192.0 U 0 0 0 eth1
169.254.64.0 * 255.255.192.0 U 0 0 0 eth2
169.254.128.0 * 255.255.192.0 U 0 0 0 eth3
169.254.192.0 * 255.255.192.0 U 0 0 0 eth4
172.0.0.0 * 255.0.0.0 U 0 0 0 eth5
172.0.0.0 * 255.0.0.0 U 0 0 0 eth6
192.0.0.0 * 255.0.0.0 U 0 0 0 eth1
192.0.0.0 * 255.0.0.0 U 0 0 0 eth2
192.0.0.0 * 255.0.0.0 U 0 0 0 eth3
192.0.0.0 * 255.0.0.0 U 0 0 0 eth4
[root@lxcora03 ~]#
我想知道如何让 www 解析再次工作。我需要添加静态路由吗?我是一名 Oracle DBA,我对网络有足够的了解,可以构建 openvswitch、使用 dhclient.conf、设置绑定、配置 ifcfg-ethX 文件、使用 resolv.conf 等,但这个问题超出了我目前的技能水平。我花了几天时间研究它,尝试了 nsswitch.conf、avahi-daemon、resolv.conf 等各种方法,但都无济于事。
欢迎提出所有建议,但我确实需要使用运行良好的 GNS,因此取消配置 GNS 不是一个选项。谢谢。
带有“-n”开关的路线(回复安德鲁 - 谢谢!)
ORACLE GNS 启动之前:
[root@lxcora03 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.207.39.1 0.0.0.0 UG 0 0 0 eth0
10.207.39.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth5
172.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth6
192.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth1
192.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth2
192.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth3
192.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth4
ORACLE GNS 启动后(注意已出现多播 IP 路由)
[root@lxcora03 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.207.39.1 0.0.0.0 UG 0 0 0 eth0
10.207.39.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.192.0 U 0 0 0 eth1
169.254.64.0 0.0.0.0 255.255.192.0 U 0 0 0 eth2
169.254.128.0 0.0.0.0 255.255.192.0 U 0 0 0 eth3
169.254.192.0 0.0.0.0 255.255.192.0 U 0 0 0 eth4
172.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth5
172.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth6
192.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth1
192.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth2
192.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth3
192.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth4
[root@lxcora03 ~]#
resolv.conf(GNS 启动前后相同)
[root@lxcora03 ~]# cat /etc/resolv.conf
options attempts:2 timeout:1
; generated by /sbin/dhclient-script
search vmem.org gns1.vmem.org
nameserver 10.207.39.3
nameserver 10.207.39.1
12 月 23 日更新... 因此,根据 Andrew 的回复,我使用了 /etc/resolv.conf,并相信我至少有一个“解决方法”可以解决我的需求,尽管它没有解释问题的原因。所以就在这里。
由于某种原因,在 Oracle RAC GNS 集群完全启动后,使用上述 /etc/resolv.conf 时,本地和 www 地址的解析都会停止工作,因此,不知何故,某些解析路径被破坏了。冒着说蠢话的风险,上面提到的路由似乎与这个问题完全无关:我在 Oracle 堆栈完全启动后手动删除了路由,但没有任何效果 - DNS 解析仍然中断。如果这完全是愚蠢的,请记住我首先是一名 Oracle DBA,其次是一名业余网络管理员(但一直在提高!)
因此,我发现以下 /etc/resolv.conf 可以根据需要解析所有内容:外部地址、本地域地址和 RAC 集群地址。以下是可以正常工作的 /etc/resolv.conf:
[root@lxcora02 ~]# cat /etc/resolv.conf
options attempts:2 timeout:1
; generated by /sbin/dhclient-script
search vmem.org gns1.vmem.org
nameserver 10.207.39.1
nameserver 8.8.8.8
nameserver 10.207.39.3
[root@lxcora02 ~]#
我在启动时使用这个文件生成这个 /etc/resolv.conf(顺便说一下,这些是 LXC Linux 容器):
[root@lxcora02 ~]# cd /etc/dhcp
[root@lxcora02 dhcp]# cat dhclient.conf
append domain-name-servers 8.8.8.8, 10.207.39.3;
append domain-name " gns1.vmem.org";
[root@lxcora02 dhcp]#
仅供参考,请注意,最终的名称服务器“10.207.39.3”是 GNS“委托”域(有关详细信息,请参阅 Oracle Grid Naming Service 文档)。名称服务器“10.207.39.1”是我的本地名称服务器,用于仅限本地的“vmem.org”域。最后,名称服务器“8.8.8.8”当然为我提供了 www 解析,例如 google.com 等。
另一点需要注意:在这种情况下,名称服务器的顺序很重要。我尝试了不同的名称服务器顺序,只有按照显示的顺序才能提供所有所需的解析。例如,首先输入“8.8.8.8”,可以解析 google.com,但会破坏本地域解析,因此,通过反复试验得出的这个特定顺序最终成为提供所有成功解析的名称服务器顺序。
现在我所有的 DNS 解析都正常工作了,但是如上所述,这并不能真正解释为什么 Oracle RAC 集群堆栈的启动会以某种方式破坏使用“其他”resolv.conf 文件的解析。
感谢安德鲁的回复,这让我再次努力解决这个问题,我将接受一个“变通安慰奖”,它实际上每天都有效,周日有两次。