I was trying to deploy a multinode OpenStack cloud using Kolla-Ansible by following this doc and many others:
https://docs.openstack.org/project-deploy-guide/kolla-ansible/2023.1/multinode.html. I want to clarify here that I'm very new in OpenStack and hoping to get some guidance from the pros.
The nodes comprise 1 Kolla node, 1 control node, 1 compute node, and 1 storage node. All the nodes are VMs hosted on a VMware vSphere cluster. Each of the nodes has 2 NICs both connected to the same port group e.g. VLAN 100. Except for the Kolla node which only has one NIC and is connected to VLAN 100 port group also. All the nodes are running Rocky Linux 9.
The subnet for VLAN 100 is 10.0.32/0
which has a gateway on an external firewall 10.0.32.1
. So for each of the nodes, I use the first NIC (ens192) as the network_interface
and api_interface
configured in the globals.yml
file. Meanwhile, the second NIC (ens224) is used for neutron_external_interface
.
I've set up a test environment using the init-runonce
script and I modified the info in EXT_NET_CIDR
to use 10.0.32.0/20
as the external network. The script created 1 virtual router named demo-router
,1 network named demo-net
, and 1 instance named demo1
. After that, I created 1 new instance, demo2
, 1 new network named demo-net1
, and connected it to the same virtual router. Both instances can ping each other from different subnets/networks.
Instances image, Network Topology, Ping Test from demo1 to demo2
However, I can't seems to able to ping something on the Internet e.g. 1.1.1.1
or even the external gateway 10.0.32.1
. Ping from demo1 to Internet and external gateway. I've included my multimode inventory and the globals.yml
config snippet below.
# multinode config file
[control]
control-node1
[Network]
control-node1
[compute]
compute-node1
[Monitoring]
control-node1
[Storage]
storage-node1
[deployment]
localhost ansible_connection=local
# /etc/kolla/globals.yml file
kolla_base_distro: "rocky"
network_interface: "ens192"
api_interface: "ens192"
neutron_external_interface: "ens224"
enable_openstack_core: "yes"
enable_neutron: "{{ enable_openstack_core | bool }}"
neutron_plugin_agent: "open switch"
enable_openvswitch: "{{ enable_neutron | bool and neutron_plugin_agent != 'Linux bridge' }}"
On another note, I have a few questions regarding network interfaces and storage.
- Is it possible to use separate physical NIC on the node for management, external, storage, and live migration traffic? I know that
neutron_external_interface
is for the external NIC and api_interface
is for the management NIC. What about storage and live migration? Is there a way I can set it in Kolla Ansible?
- I've configured a storage node,
storage-node1
, and enabled Cinder with the LVM backend.
enable_cinder: "Yes"
enable_cinder_backend_lvm: "Yes"
How can I use it as the storage for Nova VM instead of the compute node local disk?
Thanks all for the help and suggestions :)