4.2. 执行高级测试


您可以在部署 OpenDaylight 后测试 OpenDaylight 配置和部署的多个组件。要测试安装的特定部分,您必须按照以下步骤执行操作。每个步骤都单独描述。

您必须在 overcloud 节点上执行相关的流程。

4.2.1. 连接到 overcloud 节点

要连接到 overcloud 节点并确保它们可以正常工作,请完成以下步骤:

流程

  1. 登录 undercloud。
  2. 输入以下命令启动进程:

      $ source /home/stack/stackrc
    Copy to Clipboard Toggle word wrap
  3. 列出所有实例:

      $ openstack server list
    Copy to Clipboard Toggle word wrap
  4. 选择所需的实例,再记下列表中的实例 IP 地址。
  5. 使用您在上一步中获得的列表中的 IP 地址连接到机器:

      $ ssh heat-admin@<IP from step 4>
    Copy to Clipboard Toggle word wrap
  6. 切换到超级用户:

      $ sudo -i
    Copy to Clipboard Toggle word wrap

4.2.2. 测试 OpenDaylight

要测试 OpenDaylight 是否正确运行,您必须验证服务是否正常运行,并且是否正确加载了指定的功能。

流程

  1. 以超级用户或自定义角色中运行的 OpenDaylight 节点,登录运行 OpenDaylight 的 overcloud 节点。
  2. 验证 OpenDaylight Controller 是否在所有 Controller 节点上运行:

    # docker ps | grep opendaylight
    2363a99d514a        192.168.24.1:8787/rhosp13/openstack-opendaylight:latest         "kolla_start"            4 hours ago         Up 4 hours (healthy)                       opendaylight_api
    Copy to Clipboard Toggle word wrap
  3. 验证 HAProxy 是否已正确配置为侦听端口 8081:

    # docker exec -it haproxy-bundle-docker-0 grep -A7 opendaylight /etc/haproxy/haproxy.cfg
    listen opendaylight
      bind 172.17.0.10:8081 transparent
      bind 192.168.24.10:8081 transparent
      mode http
      balance source
      server overcloud-controller-0.internalapi.localdomain 172.17.0.22:8081 check fall 5 inter 2000 rise 2
      server overcloud-controller-1.internalapi.localdomain 172.17.0.12:8081 check fall 5 inter 2000 rise 2
      server overcloud-controller-2.internalapi.localdomain 172.17.0.13:8081 check fall 5 inter 2000 rise 2
    Copy to Clipboard Toggle word wrap
  4. 使用 HAproxy IP 连接 karaf 帐户。karaf 密码为 karaf

    # ssh -p 8101 karaf@localhost
    Copy to Clipboard Toggle word wrap
  5. 列出安装的功能。

    # feature:list -i | grep odl-netvirt-openstack
    Copy to Clipboard Toggle word wrap

    如果列表的第三列中有 x,如流程生成的,则功能会被正确安装。

  6. 验证 API 正常运行。

      # web:list | grep neutron
    Copy to Clipboard Toggle word wrap

    此 API 端点在 /etc/neutron/plugins/ml2/ml2_conf.ini 中设置,供 neutron 用于与 OpenDaylight 通信。

  7. 验证节点之间的 VXLAN 隧道是否已启动。

    # vxlan:show
    Copy to Clipboard Toggle word wrap
  8. 要测试 REST API 是否已正确响应,请列出正在使用它的模块。

    # curl -u "admin:admin" http://localhost:8081/restconf/modules
    Copy to Clipboard Toggle word wrap

    输出结果将类似(示例已缩短)。

    {"modules":{"module":[{"name":"netty-event-executor","revision":"2013-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor"},{"name" ...
    Copy to Clipboard Toggle word wrap
  9. 列出使用主机 internal_API IP 的 REST 流。

    # curl -u "admin:admin" http://localhost:8081/restconf/streams
    Copy to Clipboard Toggle word wrap

    您获得类似的输出:

    {"streams":{}}
    Copy to Clipboard Toggle word wrap
  10. 使用主机 internal_API IP 运行以下命令,以验证 NetVirt 是否正常工作:

    # curl -u "admin:admin" http://localhost:8081/restconf/operational/network-topology:network-topology/topology/netvirt:1
    Copy to Clipboard Toggle word wrap

    请注意,以下输出确认 NetVirt 正常运行。

    {"topology":[{"topology-id":"netvirt:1"}]}
    Copy to Clipboard Toggle word wrap

4.2.3. 测试 Open vSwitch

若要验证 Open vSwitch,可连接到其中一个计算节点,并验证它已正确配置并连接到 OpenDaylight。

流程

  1. 以超级用户身份连接到 overcloud 中的其中一个 Compute 节点。
  2. 列出 Open vSwitch 设置。

    # ovs-vsctl show
    Copy to Clipboard Toggle word wrap
  3. 注意输出中的多个管理器。在这个示例中,行 2 和 3 显示多个管理器。

        6b003705-48fc-4534-855f-344327d36f2a
            Manager "ptcp:6639:127.0.0.1"
            Manager "tcp:172.17.1.16:6640"
                is_connected: true
            Bridge br-ex
                fail_mode: standalone
                Port br-ex-int-patch
                    Interface br-ex-int-patch
                        type: patch
                        options: {peer=br-ex-patch}
                Port br-ex
                    Interface br-ex
                        type: internal
                Port "eth2"
                    Interface "eth2"
            Bridge br-isolated
                fail_mode: standalone
                Port "eth1"
                    Interface "eth1"
                Port "vlan50"
                    tag: 50
                    Interface "vlan50"
                        type: internal
                Port "vlan30"
                    tag: 30
                    Interface "vlan30"
                        type: internal
                Port br-isolated
                    Interface br-isolated
                        type: internal
                Port "vlan20"
                    tag: 20
                    Interface "vlan20"
                        type: internal
            Bridge br-int
                Controller "tcp:172.17.1.16:6653"
                    is_connected: true
                fail_mode: secure
                Port br-ex-patch
                    Interface br-ex-patch
                        type: patch
                        options: {peer=br-ex-int-patch}
                Port "tun02d236d8248"
                    Interface "tun02d236d8248"
                        type: vxlan
                        options: {key=flow, local_ip="172.17.2.18", remote_ip="172.17.2.20"}
                Port br-int
                    Interface br-int
                        type: internal
                Port "tap1712898f-15"
                    Interface "tap1712898f-15"
            ovs_version: "2.7.0"
    Copy to Clipboard Toggle word wrap
  4. 验证 tcp 管理器是否指向运行 OpenDaylight 的节点 IP。
  5. 验证 Managers 显示 is_connected: true,以确保建立了 OVS 到 OpenDaylight 的连接并使用 OVSDB 协议。
  6. 验证每个网桥(不是 br-int)是否存在,并对应于用于部署的 Compute 角色的 NIC 模板。
  7. 验证 tcp 连接是否与运行 OpenDaylight 服务的 IP 对应。
  8. 验证网桥 br-int 显示 is_connected: true,并且已建立与 OpenDaylight 的 OpenFlow 协议连接。

更多信息

  • OpenDaylight 自动创建 br-int 网桥。

4.2.4. 验证 Compute 节点上的 Open vSwitch 配置。

  1. 以超级用户身份连接到 Compute 节点。
  2. 列出 Open vSwitch 配置设置。

    # ovs-vsctl list open_vswitch
    Copy to Clipboard Toggle word wrap
  3. 读取输出。它与此示例类似。

     _uuid               : 4b624d8f-a7af-4f0f-b56a-b8cfabf7635d
     bridges             : [11127421-3bcc-4f9a-9040-ff8b88486508, 350135a4-4627-4e1b-8bef-56a1e4249bef]
     cur_cfg             : 7
     datapath_types      : [netdev, system]
     db_version          : "7.12.1"
     external_ids        : {system-id="b8d16d0b-a40a-47c8-a767-e118fe22759e"}
     iface_types         : [geneve, gre, internal, ipsec_gre, lisp, patch, stt, system, tap, vxlan]
     manager_options     : [c66f2e87-4724-448a-b9df-837d56b9f4a9, defec179-720e-458e-8875-ea763a0d8909]
     next_cfg            : 7
     other_config        : {local_ip="11.0.0.30", provider_mappings="datacentre:br-ex"}
     ovs_version         : "2.7.0"
     ssl                 : []
     statistics          : {}
     system_type         : RedHatEnterpriseServer
     system_version      : "7.4-Maipo"
    Copy to Clipboard Toggle word wrap
  4. 验证 other_config 选项的值是否为本地接口设置了正确的 local_ip,该接口通过 VXLAN 隧道连接到租户网络。
  5. 验证 other_config 选项下的 provider_mappings 值是否与 OpenDaylightProviderMappings heat 模板参数中的值匹配。此配置将 neutron 逻辑网络映射到对应的物理接口。

4.2.5. 验证 neutron 配置

流程

  1. 在其中一个 Controller 角色节点上连接到超级用户帐户。
  2. 确保 /etc/neutron/neutron.conf 文件包含 service_plugins=odl-router_v2,trunk
  3. 确保 /etc/neutron/plugin.ini 文件包含以下 ml2 配置:

    [ml2]
    mechanism_drivers=opendaylight_v2
    
    [ml2_odl]
    password=admin
    username=admin
    url=http://192.0.2.9:8081/controller/nb/v2/neutron
    Copy to Clipboard Toggle word wrap
  4. 在其中一个 overcloud 控制器上,验证 neutron 代理是否在正确运行。

    # openstack network agent list
    Copy to Clipboard Toggle word wrap
  5. 验证元数据和 DHCP 代理的 admin_state_up 值是否为 True

    +--------------------------------------+----------------+--------------------------+-------------------+-------+----------------+------------------------+
    | id                                   | agent_type     | host                     | availability_zone | alive | admin_state_up | binary                 |
    +--------------------------------------+----------------+--------------------------+-------------------+-------+----------------+------------------------+
    | 3be198c5-b3aa-4d0e-abb4-51b29db3af47 | Metadata agent | controller-0.localdomain |                   | :-)   | True           | neutron-metadata-agent |
    | 79579d47-dd7d-4ef3-9614-cd2f736043f3 | DHCP agent     | controller-0.localdomain | nova              | :-)   | True           | neutron-dhcp-agent     |
    +--------------------------------------+----------------+--------------------------+-------------------+-------+----------------+------------------------+
    Copy to Clipboard Toggle word wrap

更多信息

  • plugin.ini 中的 IP (在第 3 步中提到)应该是 InternalAPI Virtual IP Address (VIP)。
  • 第 5 步列出了第 5 步中列出的 Open vSwitch 代理或 L3 代理,它们是所需状态,因为它们现在都由 OpenDaylight 进行管理。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat