VMware NSX for vSphere 6.1.x 和 6.2.x 中删除参考对象后,发布分布式防火墙 (DFW) 规则失败
search cancel

VMware NSX for vSphere 6.1.x 和 6.2.x 中删除参考对象后,发布分布式防火墙 (DFW) 规则失败

book

Article ID: 301265

calendar_today

Updated On:

Products

VMware NSX Networking

Issue/Introduction

Symptoms:
免责声明:本文为 Publishing Distributed Firewall (DFW) rules fails after referenced object is deleted in VMware NSX for vSphere 6.1.x and 6.2.x (2126275) 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。

  • 发布新的分布式防火墙规则失败
  • 您会看到以下错误:

    配置包含无效规则。如果规则中的分组对象、服务或服务组被删除或未将服务配置文件分配给合作伙伴安全服务规则,则规则无效。无法发布此配置 (A rule becomes invalid if grouping objects, service or service group used in the rule are deleted or service profile is not assigned to a partner security services rule. This configuration cannot be published)。
  • 强制执行同步失败
  • 在 NSX Manager 的 /home/secureall/secureall/logs/vsm.log 文件中,您会看到类似以下内容的条目:

    2015-05-11 09:19:29.675 EST ERROR TaskFrameworkExecutor-11 FirewallConfigurationSyncService:290 - Update operation for SG apply has failed. Marking Service Composer Firewall config as out of sync.
    com.vmware.vshield.vsm.exceptions.ObjectNotFoundException:
    core-services:202:The requested object : 501d40e1-51b1-0fc3-af65-b7608a05430f.000 could not be found. Object identifiers are case sensitive.
  • 在 Firewall DCN Handler 代码中,您会看到类似以下内容的条目:

    2015-05-11 09:19:35.188 EST ERROR DCNPool-6 BatchingBatcher:73 - Exception executing batch:
    org.hibernate.StaleStateException: Batch update returned unexpected row count from update [3]; actual row count: 0; expected: 1
    at com.vmware.vshield.firewall.service.impl.FirewallServiceImpl.setAppliedToInvalid(FirewallServiceImpl.java:2124)
  • 在 RelationshipNotificationHandler 代码中,您会看到类似于以下内容的条目:

    • 2015-05-06 21:38:54.141 EST ERROR DCNPool-3 RelationshipManagerNotificationHandler:219 - Could not mark the vm cache as stale for securitygroup-56
    org.springframework.orm.jpa.JpaOptimisticLockingFailureException: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; nested exception is javax.persistence.OptimisticLockException: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
    at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:310)
    at java.lang.Thread.run(Unknown Source)

    • 2015-05-06 23:54:17.991 EST ERROR DCNPool-4 RelationshipManagerNotificationHandler:219 - Could not mark the vm cache as stale for securitygroup-46
    org.springframework.orm.jpa.JpaOptimisticLockingFailureException: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; nested exception is javax.persistence.OptimisticLockException: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
    at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:310)
  • 在 DynamicCriteriaHandler 代码中,您会看到类似于以下内容的条目:

    2015-05-06 23:55:00.050 EST ERROR DCNPool-4 AbstractFlushingEventListener:324 - Could not synchronize database state with session
    org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.vmware.vshield.vsm.dynamicmembership.model.DynamicCriteria#dynamiccriteria-180]

    注意:上述日志摘录仅为示例。日期、时间和环境变量可能会因环境而有所不同。


Environment

VMware NSX for vSphere 6.2.x
VMware NSX for vSphere 6.1.x

Cause

当防火墙的 DCN Handler、DynamicCriteriaHandler 和 RelationshipNotificationHandler 中出现 OptimisticLocking 异常时,会出现此问题。

Resolution

此问题在 VMware NSX for vSphere 6.2.4(可从 VMware Downloads 获取)中已解决。

如果您无法进行升级,要临时解决此问题,请执行以下操作:

注意
请先创建 NSX Manager 设备的快照,然后再继续。如果对更改满意,请切记提交快照。
  1. 使用 REST API 获取完整的防火墙配置。
    https://NSX Manager ip/api/4.0/firewall/globalroot-0/config

    注意:记录具有无效条目的部分 ID。(Service Composer 与默认部分 ID)。

  2. 获取具有无效条目的部分 ID 的防火墙配置。例如,如果默认部分 ID 为 1003:

    https://NSX Manager ip//api/4.0//firewall/globalroot-0/config/layer3sections/1003
  3. 更正无效条目,并将更正部分发布为:

    PUT https://<nsx-manager>/api/4.0//firewall/globalroot-0/config/layer3sections/1003

    注意:如果在默认部分源中,虚拟机是无效的,则在配置重新发布期间删除 <sources> 标记。
    例如:

    <sources excluded="false">
    <source>
    <name>gavjdw00286</name>
    <value>vm-17</value>
    <type>VirtualMachine</type>
    <isValid>true</isValid>


  4. 从 appliedTo 中移除无效 Vnic。获取 Service Composer 服务 ID 的防火墙配置,并在重新发布各自部分的配置时移除无效条目(上一步中的 PUT 调用)。
    如果 AppliedTo 列中的 vNic 无效,则在重新发布配置期间移除无效 vNic 的 <appliedto>

    例如:

    <appliedTo>
    <name>gavypa002891 - Network adapter 1</name>
    <value>5039218c-4fe7-b956-a61e-7b52173c3f3e.000</value>
    <type>Vnic</type>
    <isValid>true</isValid>
    </appliedTo>
  5. 转到 Service Composer 页面,单击同步防火墙配置。此操作可使 Service Composer 同步。


Additional Information

要在更新本文时收到提醒,请在“Actions”框中单击 Subscribe to Article。