[openstack-ansible] Dedicated gateway hosts not working with OVN
Roger Rivera
roger.riverac at gmail.com
Tue Sep 5 12:48:49 UTC 2023
Hello,
We are noticing two issues with these changes:
*1*. The overrides on the file /*etc/openstack_deploy/env.d/nova.yml* are
not being honored:
nova_compute_container:
belongs_to:
- compute_containers
- kvm-compute_containers
- qemu-compute_containers
contains:
- neutron_sriov_nic_agent
- neutron_ovn_controller
- nova_compute
properties:
is_metal: true
The following block continues to be populated in with compute nodes in
*/etc/openstack_deploy/openstack_inventory.json* after deleting and
recreating the inventory file with
*/opt/openstack-ansible/scripts/inventory-manage.py*:
"neutron_ovn_gateway": {
"children": [],
"hosts": [
"cmp3",
"cmp4",
"net1",
"net2"
]
},
*2*. After changing *group_binds *to *neutron_ovn_gateway *instead of the
previous *neutron_ovn_controller*, group binds for *provider_networks *in
*openstack_user_config.yml*. Openstack-ansible still wants to create
network mappings for compute nodes, which are not part of the
*neutron_ovn_gateway
*host group:
=.=.=.=.=.=.=.=.=
TASK [os_neutron : Setup Network Provider Bridges]
**********************************************************************************************************************************************************************************************************************************************************************************************
fatal: [cmp4]: FAILED! => {"msg": "The task includes an option with an
undefined variable. The error was: list object has no element 1\n\nThe
error appears to be in
'/etc/ansible/roles/os_neutron/tasks/providers/setup_ovs_ovn.yml': line 55,
column 3, but may\nbe elsewhere in the file depending on the exact syntax
problem.\n\nThe offending line appears to be:\n\n\n- name: Setup Network
Provider Bridges\n ^ here\n"}
=.=.=.=.=.=.=.=.=
I'll dig deeper to see if I can find anything that helps. But any
assistance will be appreciated.
Thanks
On Sat, Sep 2, 2023 at 12:08 PM Dmitriy Rabotyagov <noonedeadpunk at gmail.com>
wrote:
> Hi,
>
> I think this is known issue which should be fixed with the following patch:
> https://review.opendev.org/c/openstack/openstack-ansible/+/892540
>
> In the meanwhile you should be able to workaround the issue by creating
> /etc/openstack_deploy/env.d/nova.yml file with following content:
>
> nova_compute_container:
> belongs_to:
> - compute_containers
> - kvm-compute_containers
> - qemu-compute_containers
> contains:
> - neutron_sriov_nic_agent
> - neutron_ovn_controller
> - nova_compute
> properties:
> is_metal: true
>
> You might also need to remove computes from the inventory using
> /opt/openstack-ansible/scripts/inventory-manage.py -r cmp03
>
> They will be re-added next time running openstack-ansible or
> dynamic-inventory.py. Removing them is needed to ensure that they're not
> part of ovn-gateway related group.
> You might also need to stop ovn-gateway service on these computes
> manually, but I'm not sure 100% about that.
>
> On Sat, Sep 2, 2023, 17:47 Roger Rivera <roger.riverac at gmail.com> wrote:
>
>> Hello,
>>
>> We have deployed an openstack-ansible cluster to test it on_metal with
>> OVN and defined *dedicated gateway hosts* connecting to the external
>> network with the *network-gateway_hosts* host group. Unfortunately, we
>> are not able to connect to the external/provider networks. It seems that
>> traffic wants to reach external networks via the hypervisor nodes and not
>> the gateway hosts.
>>
>> Any suggestions on changes needed to our configuration will be highly
>> appreciated.
>>
>> Environment:
>> -Openstack Antelope
>> -Ubuntu 22 on all hosts
>> -3 infra hosts - 1xNIC (ens1)
>> -2 compute hosts - 1xNIC (ens1)
>> -2 gateway hosts - 2xNIC (ens1 internal, ens2 external)
>> -No linux bridges are created.
>>
>> The gateway hosts are the only ones physically connected to the external
>> network via physical interface ens2. Therefore, we need all external
>> provider network traffic to traverse via these gateway hosts.
>>
>> Tenant networks work fine and VMs can talk to each other. However, when a
>> VM is spawned with a floating IP to the external network, they are unable
>> to reach the outside network.
>>
>> Relevant content from openstack-ansible configuration files:
>>
>>
>> =.=.=.=.=.=.=.=
>> openstack_user_config.yml
>> =.=.=.=.=.=.=.=
>> ```
>> ...
>> provider_networks:
>> - network:
>> container_bridge: "br-mgmt"
>> container_type: "veth"
>> container_interface: "ens1"
>> ip_from_q: "management"
>> type: "raw"
>> group_binds:
>> - all_containers
>> - hosts
>> is_management_address: true
>> - network:
>> container_bridge: "br-vxlan"
>> container_type: "veth"
>> container_interface: "ens1"
>> ip_from_q: "tunnel"
>> #type: "vxlan"
>> type: "geneve"
>> range: "1:1000"
>> net_name: "geneve"
>> group_binds:
>> - neutron_ovn_controller
>> - network:
>> container_bridge: "br-flat"
>> container_type: "veth"
>> container_interface: "ens1"
>> type: "flat"
>> net_name: "flat"
>> group_binds:
>> - neutron_ovn_controller
>> - network:
>> container_bridge: "br-vlan"
>> container_type: "veth"
>> container_interface: "ens1"
>> type: "vlan"
>> range: "101:300,401:500"
>> net_name: "vlan"
>> group_binds:
>> - neutron_ovn_controller
>> - network:
>> container_bridge: "br-storage"
>> container_type: "veth"
>> container_interface: "ens1"
>> ip_from_q: "storage"
>> type: "raw"
>> group_binds:
>> - glance_api
>> - cinder_api
>> - cinder_volume
>> - nova_compute
>>
>> ...
>>
>> compute-infra_hosts:
>> inf1:
>> ip: 172.16.0.1
>> inf2:
>> ip: 172.16.0.2
>> inf3:
>> ip: 172.16.0.3
>>
>> compute_hosts:
>> cmp4:
>> ip: 172.16.0.21
>> cmp3:
>> ip: 172.16.0.22
>>
>> network_hosts:
>> inf1:
>> ip: 172.16.0.1
>> inf2:
>> ip: 172.16.0.2
>> inf3:
>> ip: 172.16.0.3
>>
>> network-gateway_hosts:
>> net1:
>> ip: 172.16.0.31
>> net2:
>> ip: 172.16.0.32
>>
>> ```
>>
>>
>> =.=.=.=.=.=.=.=
>> user_variables.yml
>> =.=.=.=.=.=.=.=
>> ```
>> ---
>> debug: false
>> install_method: source
>> rabbitmq_use_ssl: False
>> haproxy_use_keepalived: False
>> ...
>> neutron_plugin_type: ml2.ovn
>> neutron_plugin_base:
>> - neutron.services.ovn_l3.plugin.OVNL3RouterPlugin
>>
>> neutron_ml2_drivers_type: geneve,vlan,flat
>> neutron_ml2_conf_ini_overrides:
>> ml2:
>> tenant_network_types: geneve
>>
>> ...
>> ```
>>
>> =.=.=.=.=.=.=.=
>> env.d/neutron.yml
>> =.=.=.=.=.=.=.=
>> ```
>> component_skel:
>> neutron_ovn_controller:
>> belongs_to:
>> - neutron_all
>> neutron_ovn_northd:
>> belongs_to:
>> - neutron_all
>>
>> container_skel:
>> neutron_agents_container:
>> contains: {}
>> properties:
>> is_metal: true
>> neutron_ovn_northd_container:
>> belongs_to:
>> - network_containers
>> contains:
>> - neutron_ovn_northd
>>
>> ```
>>
>> =.=.=.=.=.=.=.=
>> env.d/nova.yml
>> =.=.=.=.=.=.=.=
>> ```
>> component_skel:
>> nova_compute_container:
>> belongs_to:
>> - compute_containers
>> - kvm-compute_containers
>> - lxd-compute_containers
>> - qemu-compute_containers
>> contains:
>> - neutron_ovn_controller
>> - nova_compute
>> properties:
>> is_metal: true
>> ```
>>
>> =.=.=.=.=.=.=.=
>> group_vars/network_hosts
>> =.=.=.=.=.=.=.=
>> ```
>> openstack_host_specific_kernel_modules:
>> - name: "openvswitch"
>> pattern: "CONFIG_OPENVSWITCH"
>> ```
>>
>> The nodes layout is like this:
>>
>> [image: image.png]
>>
>>
>> Any guidance on what we have wrong or how to improve this configuration
>> will be appreciated. We need to make external traffic for VMs to go out via
>> the gateway nodes and not the compute/hypervisor nodes.
>>
>> Thank you.
>>
>> Roger
>>
>
--
*Roger Rivera*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.openstack.org/pipermail/openstack-discuss/attachments/20230905/bf0ea771/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 16574 bytes
Desc: not available
URL: <https://lists.openstack.org/pipermail/openstack-discuss/attachments/20230905/bf0ea771/attachment-0001.png>
More information about the openstack-discuss
mailing list