在 Oracle Real Application Clusters (RAC) 环境中,组播 (Multicast) 主要用于集群间的节点通信,特别是在心跳检测以及某些集群服务发现机制中。为了支持这些功能,至少需要有一个网络接口卡 (NIC) 支持组播功能。
通常情况下,Oracle RAC 至少需要三个网络接口:
- 私有网络 (Private Network) - 这个网络主要用于集群内部节点之间的通信,比如心跳检测等。私有网络通常不需要访问外部网络,因此可以配置在一个隔离的子网上。私有网络上的网卡需要支持组播,因为 Oracle RAC 集群管理软件利用组播来进行节点间的心跳检测和其他通信。
- 公共网络 (Public Network) - 公共网络用于客户端访问数据库,通常不需要支持组播。
- 存储网络 (Storage Network) - 如果使用基于 IP 的 SAN 存储解决方案(如 iSCSI),可能还需要第三个网络接口用于存储通信。这个网络接口是否需要支持组播取决于具体的存储配置和所选择的技术。
对于 Oracle RAC,私有网络上的网卡必须能够处理组播流量。这是因为组播在 RAC 环境中用于集群成员之间的心跳通信,这对于保持集群的稳定性和可靠性至关重要。
从Oracle官方文档看,不同的oracle版本会使用230.0.1.0 和224.0.0.251 这两个组播地址。
目前天翼云的虚拟机和弹性裸金属可以支持Oracle RAC,部分可用区资源池可以支持从控制台配置云内组播功能,具体可以通过工单咨询。
方案1:使用云内动态组播方式
云内动态组播是指Oracle RAC内部使用了IGMP协议,需要RAC集群的成员私有网络网卡会自动发送组播组加入报文。这种场景主网卡和辅助网卡均可以通过云主机或弹性裸金属内Oracle的软件自动发组播组加入报文加入Oracle RAC集群。
网络规划
云主机的private network 网卡是主网卡或者是辅助网卡均可以,以private network为主网卡为例。
Oracle RAC 网络 |
Network 网段 |
备注 |
VPC Network |
192.168.0.0/16 |
|
Subnet - public |
192.168.1.0/24 |
辅助网卡子网 |
Subnet - private |
192.168.64.0/24 |
主网卡子网 |
Oracle RAC 集群地址规划
Oracle RAC |
Public |
Private |
虚拟 IP 地址 |
scan IP 地址
|
oracle-01 |
192.168.1.168 |
192.168.64.79 |
192.168.1.241 |
192.168.1.243
|
oracle-02 |
192.168.1.63 |
192.168.64.21 |
192.168.1.242 |
步骤1 创建VPC
可以直接选择增加两个子网,分别用于私有网络和公有网络。
创建成功后的两个子网
步骤2 创建两个云主机 oracle-01 和oracle-02, 也支持弹性裸金属,操作步骤类似。
选择子网,可以手动指定网卡的地址,例如私网网卡地址指定为192.168.64.79,外网网卡地址指定为192.168.1.168.
Oracle 另一个云主机oracle-02的方式类似于oracle-01
步骤3 创建组播域
组播域来源选择云内,然后选择之前创建的VPC,成员加入方式选择动态加入,然后勾选IGMPv2和IGMPv3。本VPC内配置了oracle RAC集群的主机会自动加入这个组播域。
另外由于部分oracle 版本使用224.0.0.251 作为组播组地址,所以建议开启特殊组播组地址白名单,在地址栏内输入224.0.0.251/32。
步骤4 此时可以测试oracle组播了
可以点击下图中的更多,组播转发展示,查看云主机是否已经自动加入了组播域。
注意事项:
1. 由于Oracle RAC 的HAIP使用了169.254.0.0/16这个link local地址,此地址和天翼云的翼盾等服务的地址冲突了,所以如果在天翼云使用Oracle RAC需要禁用HAIP
2. 如果使用的是组播域成员加入方式是动态的话,如果提示删除不成功,可能是由于该VPC内仍然有网卡在不断发IGMP 组播组加入报文,此时可以打开组播转发展示,查看下是那些网卡加入了那些组。 方法1:通过安全组过滤掉这些组地址,等待10分钟(组播表项默认老化时间为10分钟),再删除组播域。 方法2:将对应有加组行为的云主机关机,等待10分钟再删除组播域
方案2:使用云内静态组播方式
云内静态组播是指静态配置Oracle RAC用到的目的组播组地址230.0.1.0 和224.0.0.251,并将Oracle RAC集群 私有网络的网卡加入组播域。值得注意的是目前只有主网卡可以加入云内静态组播域,所以客户在做网络规划时,需要将Oracle RAC的私有网络private network规划为主网卡。
网络规划
Oracle RAC 网络 |
Network 网段 |
备注 |
VPC Network |
192.168.0.0/16 |
|
Subnet - public |
192.168.1.0/24 |
辅助网卡子网 |
Subnet - private |
192.168.64.0/24 |
必须是主网卡子网 |
Oracle RAC 集群地址规划
Oracle RAC |
Public |
Private |
虚拟 IP 地址 |
scan IP 地址
|
oracle-01 |
192.168.1.168 |
192.168.64.79 (主网卡) |
192.168.1.241 |
192.168.1.243
|
oracle-02 |
192.168.1.63 |
192.168.64.21(主网卡) |
192.168.1.242 |
创建VPC,创建子网,创建云主机的步骤可以参考方案1。
步骤3 创建组播域
点击 组播->添加组播域
配置组播源的名称, 选择组播域来源为云内,选择所需VPC 为前面创建的oracle-vpc。
成员加入方式选择静态加入
在组播组地址中输入oracle RAC 使用的地址230.0.1.0;
点击网卡导入,选择oracle-01 和oracle-02的private网络的网卡。
由于部分oracle的版本使用了224.0.0.251这个特殊的保留组播组地址,所以在控制台上点击特殊组播组地址白名单,将224.0.0.251输入到特殊组播组地址中,并选择oracle-01 和oracle-02的private网络的网卡
最终所有选项如下图,点击确定
注意事项:
如果提示 Multicast Failed for ethe using address 230.0.1.0:42000, 可以先查看安全组是否放通对应的端口,再通过抓包的方式查看组播的接受和发送是否均使用的是主网卡。 如果还是不行,可以修改为动态组播域的方案1尝试。
小结:
从配置的简便性推荐动态组播域方式,这种方式对私有网段是主网卡还是辅助网卡没有限制。 唯一需要注意的是删除动态组播域需要参考方案1最后的指导。