尝鲜安装oracle12.2
发现配置了两条haip的心跳链路后集群无法启动,现象是在crsctl stat res -t中,卡在starting状态
经查官方文档,发现12.2需要系统参数修改来才可以启动
操作步骤:
首先oifcfg getif查看状态
其次oifcfg setif -global ib1/172.16.20.0:cluster_interconnect,asm添加第二条心跳链路(具体oifcfg setif命令查看help)
最后修改sysctl.conf配置
vi /etc/sysctl.conf 添加net.ipv4.conf.ib0.rp_filter=2 net.ipv4.conf.ib1.rp_filter=2 net.ipv4.conf.all.rp_filter = 0
然后sysctl -p生效
经修改后,集群正常启动
下面是rp_filter参数的介绍
rp_filter - INTEGER
• 0 - No source validation. • 1 - Strict mode as defined in RFC3704 Strict Reverse Path Each incoming packet is tested against the FIB and if the interface is not the best reverse path the packet check will fail. By default failed packets are discarded. • 2 - Loose mode as defined in RFC3704 Loose Reverse Path Each incoming packet's source address is also tested against the FIB and if the source address is not reachable via any interface the packet check will fail. In the example situation where ib0 & ib1 are used for private interconnect (on 2 or more nodes), then the MAX value of rp_filter for the "all" and "ib0" and "ib1" must be either 0 or 2 for RAC to function correctly. For example, if you set "net.ipv4.conf.ib1.rp_filter = 0" to disable filtering on that NIC but then set "net.ipv4.conf.all.rp_filter = 1", that is a wrong configuration. It is wrong because the value that will be taken for ib1 is 1 which is the MAX between 0 & 1. As explained above, the MAX should be either 0 or 2 for RAC to function correctly.
A valid configuration would be for example to set "net.ipv4.conf.ib1.rp_filter = 2" and "net.ipv4.conf.all.rp_filter = 0 or 1", MAX would be 2 in this case for NIC ib1, which is valid.
Examples of valid configurations:
(Max value would be "2", this is OK) net.ipv4.conf.ib1.rp_filter = 2 net.ipv4.conf.ib0.rp_filter = 2 net.ipv4.conf.all.rp_filter = 0
(Max value would be "0", this is OK) net.ipv4.conf.eth1.rp_filter = 0 net.ipv4.conf.eth0.rp_filter = 0 net.ipv4.conf.all.rp_filter = 0
Examples of Invalid configurations
(Max value would be "1", this is NOT OK) net.ipv4.conf.ib1.rp_filter = 0 net.ipv4.conf.ib0.rp_filter = 0 net.ipv4.conf.all.rp_filter = 1
(Max value would be "1", this is NOT OK) net.ipv4.conf.eth1.rp_filter = 1 net.ipv4.conf.eth0.rp_filter = 1 net.ipv4.conf.all.rp_filter = 0