1 测试概述
1.1操作系统
Red Hat Enterprise Linux Server release 7.8 (Maipo)
1.2 数据库版本
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
1.3 数据库架构
两节点的数据库Rac环境
#node1
10.201.86.204 racnode1.localdomain racnode1
10.201.86.214 racnode1-vip.localdomain racnode1-vip
192.168.0.204 racnode1-priv.localdoamin racnode1-priv
#node2
10.201.86.205 racnode2.localdomain racnode2
10.201.86.215 racnode2-vip.localdomain racnode2-vip
192.168.0.205 racnode2-priv.localdoamin racnode2-priv
#scan-ip
10.201.86.225 scan-cluster.localdomain scan-cluster
1.4 测试目的
测试关闭当前节点,是否依然可以使用当前节点的VIP连接数据库
2 测试步骤
2.1查看当前RAC 状态、VIP信息和listener信息
从下面的图片可以看出VIP分别分布在在各自的节点上,
2.2 关闭节点1,依然尝试使用节点1的VIP连接数据库
2.2.1关闭节点1前,尝试通过VIP1连接数据库
可以通过节点1的VIP正常连接数据库
2.2.2关闭节点1后 查看当前RAC 状态、VIP信息和listener信息
关闭节点1后,所有VIP已经漂移到节点2
2.2.3 关闭节点1后,尝试通过VIP1连接数据库
关闭节点1后依然尝试 使用节点1的VIP连接数据库,连接报错
2.2.4 修改节点2的listener后尝试通过VIP1连接数据库
修改节点2的Listener并重启后,可以正常通过节点1的VIP连接数据库
su - grid
cd $ORACLE_HOME/network/admin
cp listener.ora listener.ora.bak20240102
vi listener.ora
向图中所示位置加入监听节点1VIP的地址
(ADDRESS = (PROTOCOL = TCP)(HOST = racnode1-vip)(PORT = 1521))
lsnrctl stop
lsnrctl start
2.2.5 启动节点1后VIP1飘回到节点1
启动节点1后 VIP1飘回到节点1,可以正常登陆节点1数据库
我们的VIP1 又可以重新连接到节点1
2.3 关闭节点2,依然尝试使用节点2的VIP连接数据库
2.3.1 关闭节点2前,尝试通过VIP2连接数据库
可以通过节点2的VIP正常连接数据库
2.3.2关闭节点2后 查看当前RAC 状态、VIP信息和listener信息
关闭节点2后,所有VIP已经漂移到节点1
2.3.3 关闭节点2后,尝试通过VIP2连接数据库
关闭节点2后依然尝试 使用节点2的VIP连接数据库,连接报错
2.3.4 修改节点1的listener后尝试通过VIP2连接数据库
修改节点1的Listener并重启后,可以正常通过节点1的VIP连接数据库
su - grid
cd $ORACLE_HOME/network/admin
cp listener.ora listener.ora.bak20240102
vi listener.ora
向图中所示位置加入监听节点1VIP的地址
(ADDRESS = (PROTOCOL = TCP)(HOST = racnode2-vip)(PORT = 1521))
lsnrctl stop
lsnrctl start
2.3.5 启动节点2后VIP2飘回到节点2
启动节点2后 VIP2飘回到节点2,但是节点2Listener无法启动,需要去掉VIP1的监听才可以正常启
动监听Listener
lsnrctl stop
lsnrctl start
3. 测试结论
VIP 可以在两个物理机之间漂移,而且关闭其中的一个节点(这里是节点1),在另外一个节点(这里是节点2)配置相应的监听,是可以监听节点1 VIP的数据库连接的。节点1正常后又可以正常连接节点1的VIP连接数据库。但是两者不能互相配置VIP监听。不然节点2启动Listener报错详见章节(2.3.5启动节点2后VIP2飘回到节点2)。
也就是说,如果我现在使用节点1,只需要在节点2配置VIP1监听就好了。但是不能同时在节点1配置VIP2 监听,不然节点2不能启动listener。生产上我们连节点1,节点1挂了,我们可以正常连接到节点2. 而且重新启动节点1就会正常。但是如果节点2挂了,而我们又有应用必须连接节点2,这就需要我们手工在节点1配置VIP2的监听。
使用VIP连接有一定的限制,无法像SCAN_IP一样,完全对应用透明,需要根据应用自身需求考虑使用VIP还是SCAN IP