[ English | Deutsch | Indonesia | русский | English (United Kingdom) ]
Netzwerke verwalten¶
Betriebsüberlegungen wie Compliance können die Verwaltung von Netzwerken erforderlich machen. Zum Beispiel das Hinzufügen neuer Provider-Netzwerke zur OpenStack-Ansible Managed Cloud. Die folgenden Abschnitte sind die häufigsten administrativen Aufgaben, die zum Ausführen dieser Aufgaben beschrieben werden.
Weitere allgemeine Informationen zur Fehlerbehebung in Ihrem Netzwerk finden Sie im Kapitel Netzwerk-Fehlerbehebung im Betriebshandbuch.
Weitere Informationen zum Netzwerk finden Sie im Netzwerkhandbuch.
Hinzufügen von Provider-Bridges mithilfe neuer Netzwerkschnittstellen¶
Fügen Sie jedes Provider-Netzwerk zu Ihrer Cloud hinzu, um es OpenStack-Ansible und dem Betriebssystem mitzuteilen, bevor Sie die erforderlichen Playbooks ausführen können, um die Konfiguration abzuschließen.
OpenStack-Ansible-Konfiguration¶
Alle Provider-Netzwerke müssen der OpenStack-Ansible-Konfiguration hinzugefügt werden.
Editieren Sie die Datei /etc/openstack_deploy/openstack_user_config.yml
und fügen Sie einen neuen Block unter dem Abschnitt provider_networks
hinzu:
The container_bridge
setting defines the physical network bridge used
to connect the veth pair from the physical host to the container.
Inside the container, the container_interface
setting defines the name
at which the physical network will be made available. The
container_interface
setting is not required when Neutron agents are
deployed on bare metal.
Make sure that both settings are uniquely defined across their provider
networks and that the network interface is correctly configured inside your
operating system.
group_binds
define where this network need to attached to, to either
containers or physical hosts and is ultimately dependent on the network
stack in use. For example, Linuxbridge versus OVS.
The configuration range
defines Neutron physical segmentation IDs which are
automatically used by end users when creating networks via mainly horizon and
the Neutron API.
Similar is true for the net_name
configuration which defines the
addressable name inside the Neutron configuration.
This configuration also need to be unique across other provider networks.
Weitere Informationen finden Sie unter Konfigurieren Sie die Bereitstellung im OpenStack-Ansible-Bereitstellungshandbuch.
Aktualisieren des Knotens mit der neuen Konfiguration¶
Führen Sie die entsprechenden Playbooks aus, abhängig vom Abschnitt group_binds
.
Wenn Sie zum Beispiel die Netzwerke aktualisieren, die eine Änderung an allen Knoten mit einem Linux-Bridge-Agenten erfordern, führen Sie Folgendes aus: Wenn Sie Infra-Knoten mit den Namen infra01, infra02 und infra03 haben, führen Sie Folgendes aus:
# openstack-ansible containers-deploy.yml --limit localhost,infra01,infra01-host_containers
# openstack-ansible containers-deploy.yml --limit localhost,infra02,infra02-host_containers
# openstack-ansible containers-deploy.yml --limit localhost,infra03,infra03-host_containers
Aktualisieren Sie dann die Neutron-Konfiguration.
# openstack-ansible os-neutron-install.yml --limit localhost,infra01,infra01-host_containers
# openstack-ansible os-neutron-install.yml --limit localhost,infra02,infra02-host_containers
# openstack-ansible os-neutron-install.yml --limit localhost,infra03,infra03-host_containers
Aktualisieren Sie dann ggf. Ihre Compute-Knoten.
Entfernen Sie Anbieterbrücken von OpenStack¶
Ähnlich wie beim Hinzufügen eines Provider-Netzwerks wird beim Entfernen derselbe Vorgang verwendet, jedoch in umgekehrter Reihenfolge. Die Neutron-Ports müssen vor dem Entfernen der OpenStack-Ansible-Konfiguration entfernt werden.
Zuweisung aller neutron floating IPs aufheben:
Bemerkung
Exportieren Sie das Neutron-Netzwerk, das als einzelne UUID entfernt werden soll.
export NETWORK_UUID=<uuid> for p in $( neutron port-list -c id --device_owner compute:nova --network_id=${NETWORK_UUID}| awk '/([A-Fa-f0-9]+-){3}/ {print $2}' ); do floatid=$( neutron floatingip-list -c id --port_id=$p | awk '/([A-Fa-z0-9]+-){3}/ { print $2 }' ) if [ -n "$floatid" ]; then echo "Disassociating floating IP $floatid from port $p" neutron floatingip-disassociate $floatid fi done
Entfernen Sie alle Neutron-Ports von den Instanzen:
export NETWORK_UUID=<uuid> for p in $( neutron port-list -c id -c device_id --device_owner compute:nova --network_id=${NETWORK_UUID}| awk '/([A-Fa-f0-9]+-){3}/ {print $2}' ); do echo "Removing Neutron compute port $p" neutron port-delete $p done
Entfernen Sie die Router-Ports und DHCP-Agenten von Neutron:
export NETWORK_UUID=<uuid> for line in $( neutron port-list -c id -c device_id --device_owner network:router_interface --network_id=${NETWORK_UUID}| awk '/([A-Fa-f0-9]+-){3}/ {print $2 "+" $4}' ); do p=$( echo "$line"| cut -d'+' -f1 ); r=$( echo "$line"| cut -d'+' -f2 ) echo "Removing Neutron router port $p from $r" neutron router-interface-delete $r port=$p done for agent in $( neutron agent-list -c id --agent_type='DHCP Agent' --network_id=${NETWORK_UUID}| awk '/([A-Fa-f0-9]+-){3}/ {print $2}' ); do echo "Remove network $NETWORK_UUID from Neutron DHCP Agent $agent" neutron dhcp-agent-network-remove "${agent}" $NETWORK_UUID done
Entferne das Neutron-Netzwerk:
export NETWORK_UUID=<uuid> neutron net-delete $NETWORK_UUID
Entfernen Sie das Provider-Netzwerk aus der Konfiguration
provider_networks
der OpenStack-Ansible-Konfiguration/etc/openstack_deploy/openstack_user_config.yml
und führen Sie die folgenden Playbooks erneut aus:# openstack-ansible lxc-containers-create.yml --limit infra01:infra01-host_containers # openstack-ansible lxc-containers-create.yml --limit infra02:infra02-host_containers # openstack-ansible lxc-containers-create.yml --limit infra03:infra03-host_containers # openstack-ansible os-neutron-install.yml --tags neutron-config
Starten Sie einen Container für den Netzwerkagenten neu¶
Unter bestimmten Umständen, bei der Konfiguration oder bei temporären Problemen, muss ein bestimmter oder alle Neutronenagenten-Container neu gestartet werden.
Dies kann mit mehreren Befehlen erreicht werden:
Beispiel für das Neustarten von noch zugänglichen Containern.
In diesem Beispiel wird der Container mit dem Namen
neutron_agents_container_hostname_name
von innen gestartet:# ansible -m shell neutron_agents_container_hostname_name -a 'reboot'
Beispiel für das Neustarten eines einzelnen Containers im Abstand von 60 Sekunden:
# ansible -m shell neutron_agents_container -a 'sleep 60; reboot' --forks 1
Wenn der Container nicht antwortet, kann er vom physischen Netzwerkhost neu gestartet werden:
# ansible -m shell network_hosts -a 'for c in $(lxc-ls -1 |grep neutron_agents_container); do lxc-stop -n $c && lxc-start -d -n $c; done' --forks 1