注册
MAL_LINK_MAGIC,集群内外网分离必备项
专栏/小时的百草园/ 文章详情 /

MAL_LINK_MAGIC,集群内外网分离必备项

Joker￿ 2022/12/05 1723 6 0
摘要 本文主要记录dm8在集群部署时dmmal如何实现跨机房的内外网分离的通信方案。

写在前面

随着项目的深入和集群的扩展,用户对数据库性能、集群稳定性、数据安全提出了方方面面的需求,在实际生产项目中越来越多的要使用DSC+DW架构,同机房、同城异地机房、远距离灾备机房等等方面我们都需要考虑,如何实现这些复杂的容灾需求和不同节点间的机房网络通信成为了难点。

常见场景

部署过dm相关集群应该明白,集群间的通信离不开dmmal.ini系统,试想存在这样一个场景:
1、机房一有两台服务器需要部署DSC集群
2、同城异地机房二需要部署一个实时备机
3、跨城机房三需要部署一个异步备机
4、同时还有别的系统需要部署DBLINK来访问DSC集群的数据
要通过一套dmmal系统来实现跨机房跨网段的DSC+DW+DBLINK,如果不仔细考虑,是不是按照现有的配置只能把所有通信压力集中到一个网口上,这样带来的风险是一出出问题,所有都出问题了。
按照手册中的例子,我们几乎都不会用到的一个参数 MAL_LINK_MAGIC正是正对这类场景需求做出的改造,让各个集群的mail通信能实现内外网分离。我们来看看手册(系统管理员手册2.1.1.2Z小节)中的介绍:
image.png
注意:dmmal.ini 和 dm.ini 中都可配置 MAL_LEAK_CHECK,启动时以 dmmal.ini 中设置为准,如果 dmmal.ini 中没有配置,则以 dm.ini 中配置为准,两个都没配置时,则默认 0。此参数在 dm.ini 中可动态更改。

案例

以跨机房的DSC+DW集群为例,我们除了常规的安装部署外,只需要将DW和DSC内部的mal拆分为两个不同的link即可实现,示例配置如下:

MAL_BUF_SIZE=3000
MAL_VPOOL_SIZE=5000
MAL_COMPRESS_LEVEL=0
[MAL_INST0]
MAL_INST_NAME            = DMTEST_DSC0
MAL_HOST                 = 192.168.198.128
MAL_PORT                 = 31246
MAL_INST_HOST            = 192.168.219.128
MAL_INST_PORT            = 5237
MAL_DW_PORT              = 52141
MAL_INST_DW_PORT         = 5276
MAL_LINK_MAGIC           = 1
[MAL_INST1]
MAL_INST_NAME            = DMTEST_DSC1
MAL_HOST                 = 192.168.198.129
MAL_PORT                 = 31246
MAL_INST_HOST            = 192.168.219.129
MAL_INST_PORT            = 5237
MAL_DW_PORT              = 52141
MAL_INST_DW_PORT         = 5276
MAL_LINK_MAGIC           = 1
[MAL_INST2]
MAL_INST_NAME            = DMSERVER
MAL_HOST                 = 192.168.219.130
MAL_PORT                 = 31246
MAL_INST_HOST            = 192.168.219.130
MAL_INST_PORT            = 5237
MAL_DW_PORT              = 52141
MAL_INST_DW_PORT         = 5276
MAL_LINK_MAGIC           = 2

校验

配置完成后启动集群观察不同节点间的网络通信使用的是哪个IP

netstat -anp |grep $dmmal.ini中的端口号

如:
image.png

同理对于dblink的mail链路也可以按照这种模式进行拆分,有兴趣的小伙伴们可以去尝试一下。
当然如果是DW+DW/DBLINK也可以用这样的方式避免单个网卡通信压力太大的问题。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服