RAC HAIP

NOTE:

 

 

HAIP(ohasd管理的资源)

RAC HAIP

对于 oracle集群,私网通信是非常重要的,因为节点和节点之间的通信绝大部分都是要通过私网来实现的,私网通信基本上可以分为两种:第一种是集群层面之间的通信:第二种是数据库实例之间的通信。

 

第一种通信(例如:节点间的网络心跳)主要特点是持续存在,实时性要求高,是数据量比较小,所以通过TCP/IP协议传递就可以了。

 

第二种通信,也就是所熟知的内在合存融合造成的实例之间的数据传输,特点是数据量很大,而且速度要求非常高,TCP/IP协议此时已经不能足Oracle的要求了,所以需要使用UDP或者RDS,同时oracle也一直建议用户对集群的私网进行高可用性和负载均的衡配置,对于10G和11GR1版本的集群Oracle并不提供段私网的高可用性和负载均衡配置,而是建议用户在操作系统层面配置,例如linux bonding,AIX etherchannel等,而从11.0.0.2版本开始,Oracle提供了私网的高可用性和负载均衡特性-HAIP。

 

首先,用户需要在安装GI的过程当中为集群私网制定多块网卡。

RAC HAIP

RAC HAIP

RAC HAIP

上面的截图是真正的生产环境,版本是11.2.0.4,没有使用HAIP特性,还是使用了操作系统层面配置,例如linux bonding。

 


下图是使用OUI安装集群过桩中选择集群网络的页面,选用了使用eth1,eth2
作为集群的私网。

RAC HAIP

HAIP顾名思义就是一个(或多个)P地址,Oracle会自动在集群的每一块私网网卡上绑定一个网段169.254.*.*(这个网段地址在下面查看网卡信息会看到)的IP地址,这个1P地址被称为HAIP,数据实例(ASM实例也同样适用)之间在进行通信时,会通过这个Oracle绑定的IP地址来完成。当对应的网卡绑定的IP地址可以飘移到其他私有网卡上面,这就实现了私网的高可用性。从另一个角度来讲,如果集包含了多块私网,也就意味着会有多个HAIP被绑定在每块私两卡上,每一块网卡都问时承担实倒之间的通信,从而实现了私网通信的负载均衡,因此,能看到HAIP的功能要比很多操作系统层面的网卡绑定更加强大,而且管理起来更加简单,因为用户只需要在安装的时候选择私网网卡就可以了,oracle会在启动集群的时候自动把HAIP绑定到网卡上。此外,HAIP的负载均衡是以网卡为单位,不需要额外的OS软件和交换机支持,下面是我自己测试环境下面输出。

[[email protected] ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

 

192.168.56.100   rac1

192.168.56.11    rac1-vip

10.10.10.1       rac1-priv1

10.10.10.2       rac1-priv2

 

192.168.56.101   rac2

192.168.56.22    rac2-vip

10.10.10.3       rac2-priv1

10.10.10.4       rac2-priv2

 

192.168.56.33    scan

[[email protected] ~]# ifconfig -a

 

 

eth1      Link encap:Ethernet  HWaddr 08:00:27:91:87:F4  

          inet addr:10.10.10.1  Bcast:10.10.10.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fe91:87f4/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:258590 errors:0 dropped:0 overruns:0 frame:0

          TX packets:197388 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:175228591 (167.1 MiB)  TX bytes:97648064 (93.1 MiB)

 

eth1:1    Link encap:Ethernet  HWaddr 08:00:27:91:87:F4  

          inet addr:169.254.89.248  Bcast:169.254.127.255  Mask:255.255.128.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

 

eth2      Link encap:Ethernet  HWaddr 08:00:27:0E:16:F1  

          inet addr:10.10.10.2  Bcast:10.10.10.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fe0e:16f1/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:372574 errors:0 dropped:0 overruns:0 frame:0

          TX packets:301407 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:236054233 (225.1 MiB)  TX bytes:148160593 (141.2 MiB)

 

eth2:1    Link encap:Ethernet  HWaddr 08:00:27:0E:16:F1  

          inet addr:169.254.145.149  Bcast:169.254.255.255  Mask:255.255.128.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

可以看到上面网卡eth1 HAIP地址169.254.89.248被绑定,网卡eth2上面169.254.145.149被绑定,到目前为止,oracle最多支持4块私网网卡,网卡数量和HAIP数量关系如下:

1块私网网卡对应1个HAIP地址

2块私网网卡对应2个HAIP地址

3块私网网卡对应4个HAIP地址

4块私网网卡对应4个HAIP地址

 

接下来通过下面测试来说明HAIP是如何工作。

 

步骤1:检查HAIP资源状态和私网设置

[[email protected] ~]$ crsctl stat res -t -init

--------------------------------------------------------------------------------

NAME           TARGET  STATE        SERVER                   STATE_DETAILS       

--------------------------------------------------------------------------------

Cluster Resources

--------------------------------------------------------------------------------

ora.asm

      1        ONLINE  ONLINE       rac1                     Started             

ora.cluster_interconnect.haip

      1        ONLINE  ONLINE       rac1    

 

HAIP资源状态正常。

 

[[email protected] ~]$ oifcfg getif

eth0  192.168.56.0  global  public

eth1  10.10.10.0  global  cluster_interconnect

eth2  10.10.10.0  global  cluster_interconnect

集群私网存在两个私网网卡

 

步骤2:检查HAIP是否已经绑定到对应的网卡上面了

[[email protected] ~]# ifconfig -a

 

 

eth1      Link encap:Ethernet  HWaddr 08:00:27:91:87:F4  

          inet addr:10.10.10.1  Bcast:10.10.10.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fe91:87f4/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:258590 errors:0 dropped:0 overruns:0 frame:0

          TX packets:197388 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:175228591 (167.1 MiB)  TX bytes:97648064 (93.1 MiB)

 

eth1:1    Link encap:Ethernet  HWaddr 08:00:27:91:87:F4  

          inet addr:169.254.89.248  Bcast:169.254.127.255  Mask:255.255.128.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

 

eth2      Link encap:Ethernet  HWaddr 08:00:27:0E:16:F1  

          inet addr:10.10.10.2  Bcast:10.10.10.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fe0e:16f1/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:372574 errors:0 dropped:0 overruns:0 frame:0

          TX packets:301407 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:236054233 (225.1 MiB)  TX bytes:148160593 (141.2 MiB)

 

eth2:1    Link encap:Ethernet  HWaddr 08:00:27:0E:16:F1  

          inet addr:169.254.145.149  Bcast:169.254.255.255  Mask:255.255.128.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

 

从上面可以看出网卡eth1的HAIP地址169.254.89.248 被绑定,网卡eth2上的HAIP地址169.254.145.149 被绑定。

 

 

步骤三:将网卡eth1停掉,再看一下HAIP情况

RAC HAIP

[[email protected] ~]# ifconfig -a

 

eth2      Link encap:Ethernet  HWaddr 08:00:27:0E:16:F1  

          inet addr:10.10.10.2  Bcast:10.10.10.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fe0e:16f1/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:374306 errors:0 dropped:0 overruns:0 frame:0

          TX packets:302837 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:237141579 (226.1 MiB)  TX bytes:148877761 (141.9 MiB)

 

eth2:1    Link encap:Ethernet  HWaddr 08:00:27:0E:16:F1  

          inet addr:169.254.89.248  Bcast:169.254.127.255  Mask:255.255.128.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

 

eth2:2    Link encap:Ethernet  HWaddr 08:00:27:0E:16:F1  

          inet addr:169.254.145.149  Bcast:169.254.255.255  Mask:255.255.128.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1HAIP 从上面可以看出网卡HAIP地址169.254.145.149 被绑定到私网网卡eth2上面了。

 

 

步骤四:恢复网卡eth1,再看一下HAIP情况

 

[[email protected] ~]# ifconfig

eth1      Link encap:Ethernet  HWaddr 08:00:27:91:87:F4  

          inet addr:10.10.10.1  Bcast:10.10.10.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fe91:87f4/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:261365 errors:0 dropped:0 overruns:0 frame:0

          TX packets:198958 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:177241573 (169.0 MiB)  TX bytes:98637336 (94.0 MiB)

 

eth1:1    Link encap:Ethernet  HWaddr 08:00:27:91:87:F4  

          inet addr:169.254.89.248  Bcast:169.254.127.255  Mask:255.255.128.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

 

eth2      Link encap:Ethernet  HWaddr 08:00:27:0E:16:F1  

          inet addr:10.10.10.2  Bcast:10.10.10.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fe0e:16f1/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:390125 errors:0 dropped:0 overruns:0 frame:0

          TX packets:315262 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:247423964 (235.9 MiB)  TX bytes:154418399 (147.2 MiB)

 

eth2:1    Link encap:Ethernet  HWaddr 08:00:27:0E:16:F1  

          inet addr:169.254.145.149  Bcast:169.254.255.255  Mask:255.255.128.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

可以看到HAIP地址169.254.89.248被重新绑定到私网网卡eth1上面了,说明集群管理软件会在私网网卡出现问题之后仍然会继续继续监控这块网卡,以便在网卡恢复正常之后能够将HAIP重新恢复到原有的网卡上面,从而保证HAIP能够恢复负载均衡。

 

需要说明,数据库和ASM实例在启动的时候会去读取HAIP地址,下面是数据库一小段alter日志,数据库提供UDP协议在ip地址169.254.89.248和169.254.145.149上上实现实例数据传输。

Private Interface 'eth1:1' configured from GPnP for use as a private interconnect.

  [name='eth1:1', type=1, ip=169.254.89.248, mac=08-00-27-91-87-f4, net=169.254.0.0/17, mask=255.255.128.0, use=haip:cluster_interconnect/62]

Private Interface 'eth2:1' configured from GPnP for use as a private interconnect.

  [name='eth2:1', type=1, ip=169.254.145.149, mac=08-00-27-0e-16-f1, net=169.254.128.0/17, mask=255.255.128.0, use=haip:cluster_interconnect/62]

Public Interface 'eth0' configured from GPnP for use as a public interface.

  [name='eth0', type=1, ip=192.168.56.100, mac=08-00-27-60-03-77, net=192.168.56.0/24, mask=255.255.255.0, use=public/1]

Public Interface 'eth0:1' configured from GPnP for use as a public interface.

  [name='eth0:1', type=1, ip=192.168.56.11, mac=08-00-27-60-03-77, net=192.168.56.0/24, mask=255.255.255.0, use=public/1]

CELL communication is configured to use 0 interface(s):

在整个过程当中,HAIP会一直存在,只不过绑定的网卡发生了飘移,所以数据库实例和ASM实例一直保持正常运行,不会出现实例终止的问题出现,从而实现了实例通信的高可用性和负载均衡等待特性。