mirror of
https://github.com/clearlinux/clear-linux-documentation.git
synced 2026-05-14 10:53:55 +00:00
309 lines
9.8 KiB
ReStructuredText
309 lines
9.8 KiB
ReStructuredText
.. _openstack_networking:
|
||
|
||
Networking
|
||
############################################################
|
||
|
||
OpenStack* Networking allows you to create and attach interface devices
|
||
managed by other OpenStack services to networks. Plug-ins can be
|
||
implemented to accommodate different networking equipment and software,
|
||
providing flexibility to OpenStack architecture and deployment.
|
||
|
||
Installing and configuring the controller node
|
||
-------------------------------------------------
|
||
|
||
Prerequisites
|
||
~~~~~~~~~~~~~
|
||
|
||
Before configuring the OpenStack Networking (neutron) service, create a
|
||
database, service credentials, and an API endpoint.
|
||
|
||
#. Create the database:
|
||
|
||
* Use the database access client to connect to the database server
|
||
as the ``root`` user::
|
||
|
||
$ mysql -u root -p
|
||
|
||
* Create the ``neutron`` database::
|
||
|
||
CREATE DATABASE neutron;
|
||
|
||
* Grant proper access to the ``neutron`` database. Replace
|
||
*``NEUTRON_DBPASS``* with a suitable password::
|
||
|
||
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
|
||
IDENTIFIED BY 'NEUTRON_DBPASS';
|
||
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
|
||
IDENTIFIED BY 'NEUTRON_DBPASS';
|
||
|
||
* Exit the database access client.
|
||
|
||
#. Source the ``admin`` credentials to gain access to admin-only CLI
|
||
commands::
|
||
|
||
$ source admin-openrc.sh
|
||
|
||
#. To create the service credentials, complete these steps:
|
||
|
||
* Create the ``neutron`` user::
|
||
|
||
$ openstack user create --password-prompt neutron
|
||
User Password:
|
||
Repeat User Password:
|
||
+----------+----------------------------------+
|
||
| Field | Value |
|
||
+----------+----------------------------------+
|
||
| email | None |
|
||
| enabled | True |
|
||
| id | ab67f043d9304017aaa73d692eeb4945 |
|
||
| name | neutron |
|
||
| username | neutron |
|
||
+----------+----------------------------------+
|
||
|
||
* Add the ``admin`` role to the ``neutron`` user::
|
||
|
||
+-------+----------------------------------+
|
||
| Field | Value |
|
||
+-------+----------------------------------+
|
||
| id | cd2cb9a39e874ea69e5d4b896eb16128 |
|
||
| name | admin |
|
||
+-------+----------------------------------+
|
||
|
||
* Create the ``neutron`` service entity::
|
||
|
||
$ openstack service create --name neutron \
|
||
--description "OpenStack Networking" network
|
||
+-------------+----------------------------------+
|
||
| Field | Value |
|
||
+-------------+----------------------------------+
|
||
| description | OpenStack Networking |
|
||
| enabled | True |
|
||
| id | f71529314dab4a4d8eca427e701d209e |
|
||
| name | neutron |
|
||
| type | network |
|
||
+-------------+----------------------------------+
|
||
|
||
#. Create the Networking service API endpoint::
|
||
|
||
--publicurl http://controller:9696 \
|
||
--adminurl http://controller:9696 \
|
||
--internalurl http://controller:9696 \
|
||
--region RegionOne \
|
||
network
|
||
+--------------+----------------------------------+
|
||
| Field | Value |
|
||
+--------------+----------------------------------+
|
||
| adminurl | http://controller:9696 |
|
||
| id | 04a7d3c1de784099aaba83a8a74100b3 |
|
||
| internalurl | http://controller:9696 |
|
||
| publicurl | http://controller:9696 |
|
||
| region | RegionOne |
|
||
| service_id | f71529314dab4a4d8eca427e701d209e |
|
||
| service_name | neutron |
|
||
| service_type | network |
|
||
+--------------+----------------------------------+
|
||
|
||
Installing the Networking components
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
Complete the following step to install the Networking components:
|
||
|
||
- Install OpenStack networking bundle::
|
||
|
||
# clr_bundle_add openstack-network
|
||
|
||
Configuring the Networking server component
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
Complete the following steps to configure the Networking server component:
|
||
|
||
The Networking server component configuration includes the database,
|
||
authentication mechanism, message queue, topology change notifications,
|
||
and plug-in.
|
||
|
||
Edit the ``/etc/neutron/neutron.conf `` file:
|
||
|
||
#. Custom configurations will be located at ``/etc/neutron``.
|
||
|
||
* Create /etc/neutron directory::
|
||
|
||
$ mkdir /etc/neutron
|
||
|
||
* Create empty neutron configuration
|
||
file::
|
||
|
||
$ touch /etc/neutron/neutron.conf
|
||
|
||
#. In the ``[database]`` section, configure database access. Replace
|
||
*NEUTRON_DBPASS* with the password you chose for the database::
|
||
|
||
[database]
|
||
...
|
||
connection = mysql://neutron:NEUTRON_DBPASS@controller/neutron
|
||
|
||
#. In the ``[DEFAULT]`` and ``[oslo_messaging_rabbit]`` sections,
|
||
configure RabbitMQ message queue access. Replace *``RABBIT_PASS``*
|
||
with the password you chose for the ``openstack`` account in
|
||
RabbitMQ::
|
||
|
||
[DEFAULT]
|
||
...
|
||
rpc_backend = rabbit
|
||
[oslo_messaging_rabbit]
|
||
...
|
||
rabbit_host = controller
|
||
rabbit_userid = openstack
|
||
rabbit_password = RABBIT_PASS
|
||
|
||
#. In the ``[DEFAULT]`` and ``[keystone_authtoken]`` sections, configure
|
||
Identity service access. Replace *``NEUTRON_PASS``* with the password
|
||
you chose for the ``neutron`` user in the Identity service::
|
||
|
||
[DEFAULT]
|
||
...
|
||
auth_strategy = keystone
|
||
[keystone_authtoken]
|
||
...
|
||
auth_uri = http://controller:5000
|
||
auth_url = http://controller:35357
|
||
auth_plugin = password
|
||
project_domain_id = default
|
||
user_domain_id = default
|
||
project_name = service
|
||
username = neutron
|
||
password = NEUTRON_PASS
|
||
|
||
#. In the ``[DEFAULT]`` section, enable the Modular Layer 2 (ML2)
|
||
plug-in, router service, and overlapping IP addresses::
|
||
|
||
[DEFAULT]
|
||
...
|
||
core_plugin = ml2
|
||
service_plugins = router
|
||
allow_overlapping_ips = True
|
||
|
||
#. In the ``[DEFAULT]`` and ``[nova]`` sections, configure Networking to
|
||
notify Compute of network topology changes. Replace ``NOVA_PASS``
|
||
with the password you chose for the ``nova`` user in the Identity
|
||
service::
|
||
|
||
[DEFAULT]
|
||
...
|
||
notify_nova_on_port_status_changes = True
|
||
notify_nova_on_port_data_changes = True
|
||
nova_url = http://controller:8774/v2
|
||
[nova]
|
||
...
|
||
auth_url = http://controller:35357
|
||
auth_plugin = password
|
||
project_domain_id = default
|
||
user_domain_id = default
|
||
region_name = RegionOne
|
||
project_name = service
|
||
username = nova
|
||
password = NOVA_PASS
|
||
|
||
Configuring the Modular Layer 2 (ML2) plug-in
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
The ML2 plug-in uses the Open vSwitch (OVS) mechanism (agent) to build
|
||
the virtual networking framework for instances. However, the controller
|
||
node does not need the OVS components because it does not handle
|
||
instance network traffic.
|
||
|
||
#. Custom configuration for ML2 plug-in will be stored in ``/etc/neutron/plugins/ml2``::
|
||
|
||
mkdir -p /etc/neutron/plugins/ml2
|
||
touch /etc/neutron.plugins/ml2/ml2_conf.ini
|
||
|
||
#. Edit the ``/etc/neutron/plugins/ml2/ml2_conf.ini`` file as follows:
|
||
|
||
* In the ``[ml2]`` section, enable the flat, VLAN, generic routing
|
||
encapsulation (GRE), and virtual extensible LAN (VXLAN) network
|
||
type drivers, GRE tenant networks, and the OVS mechanism driver::
|
||
|
||
[ml2]
|
||
...
|
||
type_drivers = flat,vlan,gre,vxlan
|
||
tenant_network_types = gre
|
||
mechanism_drivers = openvswitch
|
||
|
||
* In the ``[ml2_type_gre]`` section, configure the tunnel identifier
|
||
(id) range::
|
||
|
||
[ml2_type_gre]
|
||
...
|
||
tunnel_id_ranges = 1:1000
|
||
|
||
* In the ``[securitygroup]`` section, enable security groups, enable
|
||
ipset, and configure the OVS iptables firewall driver::
|
||
|
||
[securitygroup]
|
||
...
|
||
enable_security_group = True
|
||
enable_ipset = True
|
||
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
|
||
|
||
Configuring Compute to use Networking
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
By default, distribution packages configure Compute to use legacy
|
||
networking. You must reconfigure Compute to manage networks through
|
||
Networking.
|
||
|
||
#. Edit the ``/etc/nova/nova.conf`` file on the controller node as
|
||
follows:
|
||
|
||
* In the ``[DEFAULT]`` section, configure the APIs and drivers::
|
||
|
||
[DEFAULT]
|
||
...
|
||
network_api_class = nova.network.neutronv2.api.API
|
||
security_group_api = neutron
|
||
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
|
||
firewall_driver = nova.virt.firewall.NoopFirewallDriver
|
||
|
||
* In the ``[neutron]`` section, configure access
|
||
parameters. Replace *NEUTRON_PASS* with the password you
|
||
chose for the ``neutron`` user in the Identity service::
|
||
|
||
[neutron]
|
||
...
|
||
url = http://controller:9696
|
||
auth_strategy = keystone
|
||
admin_auth_url = http://controller:35357/v2.0
|
||
admin_tenant_name = service
|
||
admin_username = neutron
|
||
admin_password = NEUTRON_PASS
|
||
|
||
Finalizing installation
|
||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
#. The Networking service initialization scripts expect a symbolic link
|
||
``/etc/neutron/plugin.ini`` pointing to the ML2 plug-in configuration
|
||
file, ``/etc/neutron/plugins/ml2/ml2_conf.ini``. If this symbolic
|
||
link does not exist, create it using the following command::
|
||
|
||
# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
|
||
|
||
#. Populate the database::
|
||
|
||
# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
|
||
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
|
||
|
||
#. Let ``systemd`` set the correct permissions for files in ``/etc/neutron``::
|
||
|
||
# systemctl restart update-triggers.target
|
||
|
||
#. Restart the Compute services::
|
||
|
||
# systemctl restart nova-api.service nova-scheduler.service \
|
||
nova-conductor.service
|
||
|
||
#. Start the Networking service and configure it to start when the
|
||
system boots::
|
||
|
||
# systemctl enable neutron-server.service
|
||
# systemctl start neutron-server.service
|
||
|
||
Next topic: :ref:`openstack_orchestration`. |