问题描述
请教个问题,我的RAC的IP配置如下
192.168.56.10 rac1
192.168.56.11 rac2
10.10.10.10 rac1-priv
10.10.10.11 rac2-priv
192.168.56.12 rac1-vip
192.168.56.13 rac2-vip
192.168.56.14 rac-scan
现在我模拟场景,RAC1主机宕机,RAC1-VIP漂移到RAC2节点。数据库的服务名是ORCL
我通过192.168.56.13去连接ORCL服务名是可以的,通过192.168.56.12去连接服务名是不可连接的,这种情况是不是正常的现像??
我看网上有人说修改监听listener.ora,增加如下内容就可以实现我说的用RAC1-VIP去连接服务名,
LISTENER_RAC2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
)
)
给出的解释是:
如果关键字HOST配置为IP地址解析名,则绑定步骤如下:
(1)oracle根据IP地址解析名调用gethostbyname()函数取得IP地址(IP地址可能有多个)。
(2)oracle调用gethostname()函数获取服务器的主机名,并再次调用gethostbyname()函数获取主机名对应的IP地址(IP地址可能有多个)。
(3)将步骤(1)获取的第一个IP地址和步骤(2)获取的所有IP地址进行比对,如果匹配成功,则监听运行在该服务器所有激活的网卡上。如果匹配不成功,则监听只运行在步骤(1)解析出来的Ip地址上。
结论:如果关键字HOST配置为主机名,则监听运行在该服务器所有激活的网卡上。
注意:如果将关键字HOST设置为主机名,当加有关键字IP=FIRST时,监听只运行在主机名对应的IP地址上,这种配置在oracle 10G RAC系统中较为常见。
在我看来这只是新建一个监听,只监听本机主机名对应的IP。这块实在有点蒙圈,求指点
专家解答
rac的vip在不发生故障的时段,连接数据库是正常。
一旦发生漂移,这个vip漂到别的节点,就是不可以连接数据库的。这是正常现象。
vip在这里的意义是迅速给app反馈信息,让app去连别的vip。如果没有vip,那app要等待60秒才能等到tcp超时。这个时间是不允许的 。