MonitorLink端口联动方案设计与功能解析

需积分: 5 0 下载量 33 浏览量 更新于2024-08-05 收藏 315KB DOCX 举报
MonitorLink是一种专为配合二层拓扑协议设计的端口联动解决方案,由 Inspur 公司于2019年提出并保留所有权利。该技术主要用于在网络中通过监控设备的上行端口状态来自动调整下游端口,确保网络链路的稳定性和冗余性。 在MonitorLink的设计中,关键概念包括上行端口(Uplink端口)和下行端口(Downlink端口)。上行端口是被监控的端口,其状态决定了MonitorLink组的整体状态。当至少一个上行端口处于UP状态时,MonitorLink组被认为是UP;反之,如果所有上行端口都DOWN,则MonitorLink组会变为DOWN。下行端口则负责响应上行端口状态的变化,当MonitorLink组状态改变时,下行端口的状态也会随之调整,以维持同步。 MonitorLink的运行机制是独立的,每个组都有自己的监控和联动规则。当上行端口状态不满足条件(即全部DOWN),MonitorLink组会强制将其所有下行端口置为UP状态。然而,如果下行端口本身已为DOWN或不存在,这不会影响MonitorLink组状态的更新。 在实际操作中,可以使用Sonic命令行工具来管理MonitorLink组。`sudo config monitor_link_group add/del <MonitorGroup_name>`用于创建或删除监控组,其中`<MonitorGroup_name>`是用户自定义的组名,遵循以MonitorGroup开头的命名规则。如果某个聚合(可能是指端口聚合)正在被监控,删除前需要先将其从组中移除。默认情况下,新创建的监控组Uplink-Group-status会被初始化为DOWN。 `sudo config monitor_link_groupmemberadd`命令则是用来添加成员端口到监控组,同时指定其link-type属性为上行或下行,以实现上行端口状态对下行端口状态的影响。 总结来说,MonitorLink提供了一种智能的端口管理策略,通过监控上行链路的状态,确保在网络故障时能够快速切换到备份路径,提高网络的可用性和可靠性。其命令行接口为网络管理员提供了灵活的配置选项,以便于监控和维护网络拓扑的稳定性。

Exception in thread "main" org.apache.spark.sql.AnalysisException: unresolved operator 'InsertIntoStatement HiveTableRelation [`test_bigdata`.`test_shd_atlas_spline`, org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe, Data Cols: [id#23, lineage#24, fetchedtime#25], Partition Cols: [ds#26]], [ds=None], false, false; 'InsertIntoStatement HiveTableRelation [`test_bigdata`.`test_shd_atlas_spline`, org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe, Data Cols: [id#23, lineage#24, fetchedtime#25], Partition Cols: [ds#26]], [ds=None], false, false +- Project [ansi_cast(_1#15 as string) AS id#27, ansi_cast(_2#16 as string) AS lineage#28, ansi_cast(_3#17 as int) AS fetchedtime#29, ansi_cast(_4#18 as string) AS ds#30] +- Project [_1#15, _2#16, _3#17, _4#18] +- SubqueryAlias aa +- SerializeFromObject [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, knownnotnull(assertnotnull(input[0, scala.Tuple4, true]))._1, true, false) AS _1#15, staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, knownnotnull(assertnotnull(input[0, scala.Tuple4, true]))._2, true, false) AS _2#16, knownnotnull(assertnotnull(input[0, scala.Tuple4, true]))._3.intValue AS _3#17, staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, knownnotnull(assertnotnull(input[0, scala.Tuple4, true]))._4, true, false) AS _4#18] +- ExternalRDD [obj#14] at org.apache.spark.sql.catalyst.analysis.CheckAnalysis.failAnalysis(CheckAnalysis.scala:50) at org.apache.spark.sql.catalyst.analysis.CheckAnalysis.failAnalysis$(CheckAnalysis.scala:49) at org.apache.spark.sql.catalyst.analysis.Analyzer.failAnalysis(Analyzer.scala:155) at org.apache.spark.sql.catalyst.analysis.CheckAnalysis.$anonfun$checkAnalysis$47(CheckAnalysis.scala:702) at org.apache.spark.sql.catalyst.analysis.CheckAnalysis.$anonfun$checkAnalysis$47$adapted(CheckAnalysis.scala:700) at org.apache.spark.sql.catalyst.tr

2023-07-14 上传