OpenStack Newton版本部署---- 网络服务(neutron)(控制节点)

时间:2022-08-13 20:31:23

OpenStack Newton版本部署 ---- 网络服务(neutron)

OpenStack Networking(neutron)允许您创建并附加由其他OpenStack服务管理的接口设备到网络。 可以实现插件以适应不同的网络设备和软件,为OpenStack架构和部署提供灵活性。

它包括以下组件:

neutron-server

接受并将API请求路由到相应的OpenStack Networking插件以进行操作。

OpenStack Networking plug-ins andagents

       插拔端口,创建网络或子网,并提供IP寻址。

       通用代理是L3DHCP(动态主机IP寻址)和插件代理。

Messaging queue

       大多数OpenStack网络设备用队列在neutron服务器和各种代理之间路由信息。 还充当数据库来存储特定插件的网络状态。

安装和配置控制节点

先决条件

1、 创建数据库

1root用户登录数据库

$ mysql -u root -p

2)创建neutron数据库

mysql> CREATE DATABASE neutron;

       3)创建neutron数据库用户并授予权限

mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
  IDENTIFIED BY 'NEUTRON_DBPASS';
mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
  IDENTIFIED BY 'NEUTRON_DBPASS';

       用合适的密码替换NEUTRON_DBPASS

2、创建服务凭证

1)输入管理员凭证

$ . admin-openrc

       2)创建neutron用户(openstack

$ openstack user create --domain default --password-prompt neutron
 
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 319f34694728440eb8ffcb27b6dd8b8a |
| name                | neutron                          |
| password_expires_at | None                             |
+---------------------+----------------------------------+

       3)添加admin角色到neutron用户和service工程中:

$ openstack role add --project service --user neutron admin

       4)创建neutron服务:

$ openstack service create --name nova \
  --description "OpenStack Compute" compute
 
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | 060d59eac51b4594815603d75a00aba2 |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+

3、创建neutron服务API端口:

$ openstack endpoint create --region RegionOne \
  network public http://controller:9696
 
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 85d80a6d02fc4b7683f611d7fc1493a3 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | f71529314dab4a4d8eca427e701d209e |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9696           |
+--------------+----------------------------------+
 
$ openstack endpoint create --region RegionOne \
  network internal http://controller:9696
 
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 09753b537ac74422a68d2d791cf3714f |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | f71529314dab4a4d8eca427e701d209e |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9696           |
+--------------+----------------------------------+
 
$ openstack endpoint create --region RegionOne \
  network admin http://controller:9696
 
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 1ee14289c9374dffb5db92a5c112fc4e |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | f71529314dab4a4d8eca427e701d209e |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9696           |
+--------------+----------------------------------+

配置网络选项

    这里我们配置自服务网络。

1、安装

# yum install openstack-neutron openstack-neutron-ml2 \
  openstack-neutron-linuxbridge ebtables

2、 修改 /etc/neutron/neutron.conf 配置

1)配置数据库访问

[database]
...
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron

用合适密码替换NEUTRON_DBPASS

2) 启用ML2插件,路由器服务和重叠IP地址:

[DEFAULT]
...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True

3)配置RabbitMQ消息队列访问:

[DEFAULT]
...
transport_url = rabbit://openstack:RABBIT_PASS@controller

openstack用户的队列密码替换RABBIT_PASS

4)配置认证服务访问

[DEFAULT]
...
auth_strategy = keystone
 
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = neutron
password = NEUTRON_PASS

neutron用户的密码替换NEUTRON_PASS

5)配置Networking通知Compute网络拓扑变化:

[DEFAULT]
...
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
 
[nova]
...
auth_url = http://controller:35357
auth_type = password
project_domain_name = Default
user_domain_name = Default
region_name = RegionOne
project_name = service
username = nova
password = NOVA_PASS

nova用户的密码替换NOVA_PASS

6)配置锁定路径:

[oslo_concurrency]
...
lock_path = /var/lib/neutron/tmp

 7)检查配置

用命令 cat/etc/neutron/neutron.conf | grep -v ^# | grep -v^$ 检查配置是否正确。

3、配置ML2插件

vim   /etc/neutron/plugins/ml2/ml2_conf.ini

1)启动flat,,VLANVXLAN网络。

[ml2]
...
type_drivers = flat,vlan,vxlan

2) 启用VXLAN自服务网络

[ml2]
...
tenant_network_types = vxlan

3)启动Linux bridgeL2 population机制:

[ml2]
...
mechanism_drivers = linuxbridge,l2population

4)启动端口安全扩展驱动程序:

[ml2]
...
extension_drivers = port_security

5)将提供商虚拟网络配置为flat网络

[ml2_type_flat]
...
flat_networks = provider

 6)配置自服务网络的VXLAN网络标识符范围:

[ml2_type_vxlan]
...
vni_ranges = 1:1000

7)启用ipset来提高安全组规则的效率:

[securitygroup]
...
enable_ipset = True

 8)检查配置

用命令 cat/etc/neutron/plugins/ml2/ml2_conf.ini | grep -v ^# | grep -v^$ 检查配置是否正确。

4、配置Linuxbridge代理

vim   /etc/neutron/plugins/ml2/linuxbridge_agent.ini

1)将提供商虚拟网络映射到提供商物理网络接口。

[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME

PROVIDER_INTERFACE_NAME替换为控制节点外网网卡,例如eno1.

2) 启用VXLAN覆盖网络,配置处理覆盖网络的物理网络接口的IP地址,并启动L2 population

[vxlan]
enable_vxlan = True
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = True

 用控制节点管理网络IP地址替换OVERLAY_INTERFACE_IP_ADDRESS,例如192.168.1.103.

3)启动安全组并配置Linux bridge iptables防火墙驱动:

[securitygroup]
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

4)检查配置

用命令 cat/etc/neutron/plugins/ml2/linuxbridge_agent.ini | grep -v ^# | grep-v ^$ 检查配置是否正确。

5、配置L3代理

vim   /etc/neutron/l3_agent.ini

1)配置Linux bridge接口驱动和外网网桥

[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

6、配置DHCP代理

vim   /etc/neutron/dhcp_agent.ini

1)配置Linux bridge接口驱动,DnsmasqDHCP驱动,并启动启用隔离的元数据,从而提供商网络上的实例可以通过网络访问元数据:

[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True

7、配置metadata代理

vim   /etc/neutron/metadata_agent.ini

1)配置元数据主机和共享密匙:

[DEFAULT]
...
nova_metadata_ip = controller
metadata_proxy_shared_secret = METADATA_SECRET

为元数据代理选择合适的密匙替代METADATA_SECRET

配置compute服务以使用networking服务

1vim   /etc/nova/nova.conf

1)配置访问参数,启动元数据代理:

[neutron]
...
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = Default
user_domain_name = Default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
service_metadata_proxy = True
metadata_proxy_shared_secret = METADATA_SECRET

neutron用户密码替换NEUTRON_PASS

用元数据代理密匙替换METADATA_SECRET

完成安装

1、 建立符号链接

# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

2、填充计算服务数据库

# 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

       可以通过以下命令查看数据库是否填充成功:

MariaDB [(none)]> useneutron;

MariaDB [neutron]> showtables;

3、 重启Compute API服务

# systemctl restart openstack-nova-api.service

4、 启动Networking服务,并设置开机启动:

# systemctl enable neutron-server.service \
  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
  neutron-metadata-agent.service
# systemctl start neutron-server.service \
  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
  neutron-metadata-agent.service
# systemctl enable neutron-l3-agent.service
# systemctl start neutron-l3-agent.service