Welcome 微信登录

首页 / 数据库 / MySQL / RAC 某节点不可用时,对应VIP是否可用

实验环境:RHEL 6.5 + GI 11.2.0.4 + Oracle 11.2.0.4
验证:RAC 某节点不可用时,其对应VIP是否可用?是否可用于连接数据库?[grid@jyrac2 ~]$ more /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6#public ip192.168.56.150jyrac1192.168.56.152jyrac2#private ip10.10.10.11jyrac1-priv10.10.10.12jyrac2-priv#virtual ip192.168.56.151jyrac1-vip192.168.56.153jyrac2-vip#scan ip192.168.56.160jyrac-scan
  • 1.节点宕机,对应节点VIP漂移到另一个节点
  • 2.节点宕机后,另一个节点的网络信息
  • 3.可ping通宕机节点VIP,但无对应监听
  • 4.知识点总结

1.节点宕机,对应节点VIP漂移到另一个节点

模拟主机jyrac1宕机,随之该节点的VIP资源failed over。
此时在主机jyrac2查询对应的资源信息如下:[grid@jyrac2 ~]$ crsctl stat res -t--------------------------------------------------------------------------------NAME TARGETSTATESERVER STATE_DETAILS --------------------------------------------------------------------------------Local Resources--------------------------------------------------------------------------------ora.DATA1.dg ONLINEONLINE jyrac2 ora.FRA1.dg ONLINEONLINE jyrac2 ora.LISTENER.lsnr ONLINEONLINE jyrac2 ora.OCR1.dg ONLINEONLINE jyrac2 ora.asm ONLINEONLINE jyrac2 Started ora.gsd OFFLINE OFFLINEjyrac2 ora.net1.network ONLINEONLINE jyrac2 ora.ons ONLINEONLINE jyrac2 ora.registry.acfs ONLINEONLINE jyrac2 --------------------------------------------------------------------------------Cluster Resources--------------------------------------------------------------------------------ora.LISTENER_SCAN1.lsnr1ONLINEONLINE jyrac2 ora.cvu1ONLINEONLINE jyrac2 ora.jyrac1.vip1ONLINEINTERMEDIATE jyrac2 FAILED OVER ora.jyrac2.vip1ONLINEONLINE jyrac2 ora.jyzhao.db1ONLINEOFFLINE Instance Shutdown 2ONLINEONLINE jyrac2 Openora.oc4j1ONLINEONLINE jyrac2 ora.scan1.vip1ONLINEONLINE jyrac2

2.节点宕机后,另一个节点的网络信息

查看在主机jyrac2网络信息:[grid@jyrac2 ~]$ ifconfig -aeth2Link encap:EthernetHWaddr 08:00:27:1A:5A:7Ainet addr:192.168.56.152Bcast:192.168.56.255Mask:255.255.255.0inet6 addr: fe80::a00:27ff:fe1a:5a7a/64 Scope:LinkUP BROADCAST RUNNING MULTICASTMTU:1500Metric:1RX packets:3955 errors:0 dropped:0 overruns:0 frame:0TX packets:8277 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:510869 (498.8 KiB)TX bytes:692985 (676.7 KiB)eth2:1Link encap:EthernetHWaddr 08:00:27:1A:5A:7Ainet addr:192.168.56.153Bcast:192.168.56.255Mask:255.255.255.0UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1eth2:2Link encap:EthernetHWaddr 08:00:27:1A:5A:7Ainet addr:192.168.56.151Bcast:192.168.56.255Mask:255.255.255.0UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1eth2:3Link encap:EthernetHWaddr 08:00:27:1A:5A:7Ainet addr:192.168.56.160Bcast:192.168.56.255Mask:255.255.255.0UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1eth3Link encap:EthernetHWaddr 08:00:27:7C:CD:9Finet addr:10.10.10.12Bcast:10.10.10.255Mask:255.255.255.0inet6 addr: fe80::a00:27ff:fe7c:cd9f/64 Scope:LinkUP BROADCAST RUNNING MULTICASTMTU:1500Metric:1RX packets:116635 errors:0 dropped:0 overruns:0 frame:0TX packets:103705 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:81979594 (78.1 MiB)TX bytes:63727783 (60.7 MiB)eth3:1Link encap:EthernetHWaddr 08:00:27:7C:CD:9Finet addr:169.254.198.12Bcast:169.254.255.255Mask:255.255.0.0UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1loLink encap:Local Loopbackinet addr:127.0.0.1Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNINGMTU:16436Metric:1RX packets:145545 errors:0 dropped:0 overruns:0 frame:0TX packets:145545 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:130875345 (124.8 MiB)TX bytes:130875345 (124.8 MiB)

3.可ping通宕机节点VIP,但无对应监听

发现能ping通故障节点VIP,但并没有对应的监听程序。
ping可以通,如下:[root@jyrac2 ~]# ping 192.168.56.151PING 192.168.56.151 (192.168.56.151) 56(84) bytes of data.64 bytes from 192.168.56.151: icmp_seq=1 ttl=64 time=0.023 ms64 bytes from 192.168.56.151: icmp_seq=2 ttl=64 time=0.036 ms64 bytes from 192.168.56.151: icmp_seq=3 ttl=64 time=0.051 ms64 bytes from 192.168.56.151: icmp_seq=4 ttl=64 time=0.069 ms^C--- 192.168.56.151 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3229msrtt min/avg/max/mdev = 0.023/0.044/0.069/0.019 ms没有监听,通过此VIP自然连接不上,如下:[root@jyrac2 ~]# sqlplus system/oracle@192.168.56.151/jyzhaoSQL*Plus: Release 11.2.0.4.0 Production on Thu Nov 3 16:58:31 2016Copyright (c) 1982, 2013, Oracle.All rights reserved.ERROR:ORA-12541: TNS:no listenerEnter user-name: #查看监听,确认的确只有scan ip和节点2的ip和vip被监听;节点1的vip的确是没有被监听。[root@jyrac2 ~]# ps -ef|grep tnsroot15 20 09:05 ?00:00:00 [netns]grid2845 10 09:07 ?00:00:00 /opt/app/11.2.0/grid/bin/tnslsnr LISTENER -inheritgrid6867 10 09:34 ?00:00:00 /opt/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inheritroot 13951 109530 17:17 pts/000:00:00 grep tns[root@jyrac2 ~]# su - grid[grid@jyrac2 ~]$ lsnrctl status LISTENERLSNRCTL for Linux: Version 11.2.0.4.0 - Production on 03-NOV-2016 17:18:09Copyright (c) 1991, 2013, Oracle.All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))STATUS of the LISTENER------------------------Alias LISTENERVersion TNSLSNR for Linux: Version 11.2.0.4.0 - ProductionStart Date03-NOV-2016 09:07:20Uptime0 days 8 hr. 10 min. 49 secTrace Level offSecurityON: Local OS AuthenticationSNMPOFFListener Parameter File /opt/app/11.2.0/grid/network/admin/listener.oraListener Log File /opt/app/grid/diag/tnslsnr/jyrac2/listener/alert/log.xmlListening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.152)(PORT=1521)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.153)(PORT=1521)))Services Summary...Service "+ASM" has 1 instance(s).Instance "+ASM2", status READY, has 1 handler(s) for this service...Service "jyzhao" has 1 instance(s).Instance "jyzhao2", status READY, has 1 handler(s) for this service...Service "jyzhaoXDB" has 1 instance(s).Instance "jyzhao2", status READY, has 1 handler(s) for this service...The command completed successfully[grid@jyrac2 ~]$ lsnrctl status LISTENER_SCAN1LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 03-NOV-2016 17:18:18Copyright (c) 1991, 2013, Oracle.All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))STATUS of the LISTENER------------------------Alias LISTENER_SCAN1Version TNSLSNR for Linux: Version 11.2.0.4.0 - ProductionStart Date03-NOV-2016 09:34:20Uptime0 days 7 hr. 43 min. 58 secTrace Level offSecurityON: Local OS AuthenticationSNMPOFFListener Parameter File /opt/app/11.2.0/grid/network/admin/listener.oraListener Log File /opt/app/11.2.0/grid/log/diag/tnslsnr/jyrac2/listener_scan1/alert/log.xmlListening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.160)(PORT=1521)))Services Summary...Service "jyzhao" has 1 instance(s).Instance "jyzhao2", status READY, has 1 handler(s) for this service...Service "jyzhaoXDB" has 1 instance(s).Instance "jyzhao2", status READY, has 1 handler(s) for this service...The command completed successfully[grid@jyrac2 ~]$

4.知识点总结

回到本文开头提出的问题:
RAC 某节点不可用时,其对应VIP是否可用?是否可用于连接数据库?
答:RAC 某节点不可用时,其对应VIP可ping通。但由于没有监听,所以不可用于连接数据库。最后思考下,VIP既然failover漂移后可以ping通,但却没有对应的监听程序导致节点故障时不能再用此节点的vip连接数据库,那么VIP设置的意义何在呢?
从网络上搜索一些资料也可以得知:
VIP 是在出现故障的时候保证不用等待底层的TCP/IP 协议来诊断断开连接,而使用RAC级别来诊断,这样会很快。
简单举例子来说,就是节点1故障后,其VIP会漂移到节点2;但是由于节点2并没有对节点1这个VIP地址进行监听,这样客户端就能迅速知道节点1故障,从而切换到节点2;另外,需要注意的是,如果要实现failover,那么tnsnames.ora中要有相应的配置。关于RAC的tnsnames.ora配置具体可参见Oracle RAC客户端tnsnames.ora相关配置及测试更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址