首先,我们的问题是:在部署Oracle RAC的时候为什么需要修改/etc/hosts文件? 或者具体的说,我们在Linux平台部署Oracle RAC时为什么需要将/etc/hosts文件里的环路地址修改为
127.0.0.1 localhost
格式? 当然,不同操作系统平台需要修改的hosts文件名称和位置,依赖于操作系统本身。如:Windows下需要修改的是C:\Windows\System32\drivers\etc\hosts文件。
接下来,要想搞清楚这个问题不难,了解一些网络相关的基础知识即可。
我们知道,在一个网络环境中,我们可以通过IP地址去精确访问某个网络设备[如主机、pc、打印机],也可以通过这个设备名来访问该设备。
通过IP地址去定位某个设备时,如果网络未遭受诸如ARP攻击的话,则通常都不会出现问题。关于ARP问题不是本篇重点,不再赘述。
而要想通过主机名去访问时,就需要有某种转换规则可以正确的将主机名称与IP地址成功映射。
这种转换规则通常可以有3种途径:
1 hosts配置文件;
2 NIS[Network Information System|Service],网络信息服务,或者称之为"网络黄页";
3 DNS[Domain Name System],域名系统。
在没有配置NIS、DNS的网络环境下,/etc/hosts文件则成为我们通过主机名来访问该主机的唯一选择了。
这个配置文件里记录着网络中每一台主机名与其对应的IP地址,而且如果出现某个主机名对应多个IP的话,则只有第一条记录生效,可以用于正确的解析主机名,在解析过程中,后面出现的记录将被忽略。该文件的配置格式如下:
IP Address hostname aliases
看个例子,如果保留默认情况下的环路地址:
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
33
34
35
36
37
38
39
40
41
42
43
|
[root@node1 ~]
# hostname
node1.oracleonlinux.cn
[root@node1 ~]
# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 node1.oracleonlinux.cn node1 localhost.localdomain localhost localhost
::1 localhost6.localdomain6 localhost6
# public
172.16.0.33 node1.oracleonlinux.cn node1
172.16.0.34 node2.oracleonlinux.cn node2
# private
192.168.94.11 node1-priv.oracleonlinux.cn node1-priv
192.168.94.12 node2-priv.oracleonlinux.cn node2-priv
# virtual
172.16.0.35 node1-vip.oracleonlinux.cn node1-vip
172.16.0.36 node2-vip.oracleonlinux.cn node2-vip
# scan-ip
172.16.0.223 scan-cluster.oracleonlinux.cn
[root@node1 ~]
# ping node1
PING node1.oracleonlinux.cn (127.0.0.1) 56(84) bytes of data.
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=1 ttl=64
time
=0.028 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=2 ttl=64
time
=0.043 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=3 ttl=64
time
=0.041 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=4 ttl=64
time
=0.039 ms
--- node1.oracleonlinux.cn
ping
statistics ---
4 packets transmitted, 4 received, 0% packet loss,
time
3001ms
rtt min
/avg/max/mdev
= 0.028
/0
.037
/0
.043
/0
.009 ms
[root@node1 ~]
# ping node1.oracleonlinux.cn
PING node1.oracleonlinux.cn (127.0.0.1) 56(84) bytes of data.
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=1 ttl=64
time
=0.031 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=2 ttl=64
time
=0.042 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=3 ttl=64
time
=0.044 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=4 ttl=64
time
=0.043 ms
--- node1.oracleonlinux.cn
ping
statistics ---
4 packets transmitted, 4 received, 0% packet loss,
time
2999ms
rtt min
/avg/max/mdev
= 0.031
/0
.040
/0
.044
/0
.005 ms
[root@node1 ~]
#
|
我们修改默认环路地址后:
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
33
34
35
36
37
38
39
40
41
|
[root@node1 ~]
# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost
::1 localhost6.localdomain6 localhost6
# public
172.16.0.33 node1.oracleonlinux.cn node1
172.16.0.34 node2.oracleonlinux.cn node2
# private
192.168.94.11 node1-priv.oracleonlinux.cn node1-priv
192.168.94.12 node2-priv.oracleonlinux.cn node2-priv
# virtual
172.16.0.35 node1-vip.oracleonlinux.cn node1-vip
172.16.0.36 node2-vip.oracleonlinux.cn node2-vip
# scan-ip
172.16.0.223 scan-cluster.oracleonlinux.cn
[root@node1 ~]
# ping node1
PING node1.oracleonlinux.cn (172.16.0.33) 56(84) bytes of data.
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=1 ttl=64
time
=0.026 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=2 ttl=64
time
=0.040 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=3 ttl=64
time
=0.050 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=4 ttl=64
time
=0.034 ms
--- node1.oracleonlinux.cn
ping
statistics ---
4 packets transmitted, 4 received, 0% packet loss,
time
3000ms
rtt min
/avg/max/mdev
= 0.026
/0
.037
/0
.050
/0
.010 ms
[root@node1 ~]
# ping node1.oracleonlinux.cn
PING node1.oracleonlinux.cn (172.16.0.33) 56(84) bytes of data.
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=1 ttl=64
time
=0.038 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=2 ttl=64
time
=0.044 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=3 ttl=64
time
=0.047 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=4 ttl=64
time
=0.041 ms
--- node1.oracleonlinux.cn
ping
statistics ---
4 packets transmitted, 4 received, 0% packet loss,
time
3001ms
rtt min
/avg/max/mdev
= 0.038
/0
.042
/0
.047
/0
.007 ms
[root@node1 ~]
#
|
最后,看完之后,你有答案了吗?现在你知道了部署Oracle RAC时为什么需要将/etc/hosts文件里的环路地址修改为
127.0.0.1 localhost
格式吗?