Openstack学习总结之五(网络组件部署)

前言

这部分内容主要介绍openstack网络组件是如何部署。

一、概述

1. neutron介绍

neutron是Nova提供的一个网络服务组件。它为Openstack服务管理接口设备之间通信提供网络服务的支持。通过插件方式,Neutron可以适应不同的网络设备和软件,从而为Openstack体系结构和开发提供灵活性。

2. 网络分类

  • 按照提供的功能进行划分:
网络类别 说明
management network 管理网络,用于openstack模块之间的交互,连接数据库,连接mq等
data network 数据网络,用于虚拟机之间的数据传输
external network 外部网络,用于连接外网
  • 按照虚拟化程度来划分:
网络类别 说明 特点
provider 一种半虚拟化的网络,它借助物理网络设备来实现简单的二层网络的部署,支持flat、local、vlan三种网络模型 稳定行和性能较高
self-service 一种全虚拟化的网络,借助于物理网卡和高级软件实现各种高级的网络定制,除了支持flat、local、vlan以外,还支持VxLan、GRE等其他网络模型 支持更多的网络模型

3. neutron常见组件

组件名 说明
neutron-server 接受Nova-Compute发送过来的创建网络请求,并转交给适当的网络插件来执行操作
neutron database 存储网络相关参数信息的数据库,这些信息由超级管理员admin负责配置
neutron-dhcp-agent 向所有provider网络提供dhcp服务
neutron-13-agent 执行L3/NAT转发,以支持网络网络访问租户网络上的VM
neutron-12-agent 二层网络插件
neutron-3rd party plugin 第三方网络插件

4. neutron的执行流程

Openstack学习总结之五(网络组件部署)

  • 执行流程:
    1)首先由Nova-Compute发起请求;
    2)Neutron-Server接收请求后,调用keystone验证请求;
    3)如果验证通过,则从Neutron DataBase获取配置的网络信息;
    4)Nova-Compute将请求交给queue,再由queue将请求转发给Nova-Control节点上的一些插件;
    5)Neutron-Server将配置的网络信息通过queue指挥Nova-Control节点上的插件给vm实例配置相关的网络信息;

二、准备工作

1. 创建数据库

  • 创建neutron数据库
  • 给用户授权访问数据库
# 创建数据库
mysql -uroot -proot
CREATE DATABASE neutron;
# 给用户授权
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron';
exit;

2. 安装软件

yum install -y openstack-neutron  --nogpgchec 
yum install -y openstack-neutron-ml2  --nogpgchec 
yum install -y openstack-neutron-linuxbridge  --nogpgchec 
yum install -y ebtables --nogpgchec 

三、配置服务

1. 配置nova

  • 配置数据库连接
  • 配置rabbitmq连接
  • 配置网络插件
  • 配置keystone + nova认证
  • 配置nova通知
  • 配置锁文件
cp /etc/neutron/neutron.conf{,.bak}
vim /etc/neutron/neutron.conf

[DEFAULT]
auth_strategy = keystone 
core_plugin = ml2
service_plugins = 
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true 
transport_url = rabbit://openstack:openstack@192.168.88.14:5672

[database]
connection = mysql+pymysql://neutron:neutron@192.168.88.14/neutron

[keystone_authtoken]
auth_uri = http://192.168.88.14:5000
auth_url = http://192.168.88.14:35357
memcached_servers = 192.168.88.14:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron

[nova]
auth_url = http://192.168.88.14:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = nova

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

2. 配置Modular Layer 2 (ML2)插件

  • 开启网络驱动
  • 设置网络模型
  • 开启ipset功能
cp /etc/neutron/plugins/ml2/ml2_conf.ini{,.bak}
vim /etc/neutron/plugins/ml2/ml2_conf.ini

[ml2]
type_drivers = flat,vlan
tenant_network_types =
mechanism_drivers = linuxbridge
extension_drivers = port_security

[ml2_type_flat]
flat_networks = provider

[securitygroup]
enable_ipset = true

3. 配置桥接客户端

  • 设置网络映射
  • 设置安全组
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini{,bak}
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]
# 此处配置的provider应该与ml2_conf.ini文件中flat_networks配置项后面的内容一致
physical_interface_mappings = provider:eth0

[vxlan]
enable_vxlan = false

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

4. 配置dhcp客户端

  • 配置接口驱动
  • 开启元数据
cp /etc/neutron/dhcp_agent.ini{,.bak}
vim /etc/neutron/dhcp_agent.ini

[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

5. 配置metadata客户端

  • 配置nova元数据存储主机地址
  • 配置元数据共享秘钥
[DEFAULT]
nova_metadata_host = 192.168.88.14
metadata_proxy_shared_secret = openstack

6. 修改nova配置

  • 增加neutron认证
[neutron]
url = http://192.168.88.14:9696
auth_url = http://192.168.88.14:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron
service_metadata_proxy = true
# 此处的openstack和上面metadata_agent.ini配置文件里面的metadata_proxy_shared_secret项一致
metadata_proxy_shared_secret = openstack

7. 信息初始化

# ml2初始化配置
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
# neutron数据库同步数据
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

8. 认证配置

  • 创建用户
  • 指定用户所在项目组
  • 创建service和endpoint
# 创建用户
openstack user create --domain default --password neutron neutron
# 添加neutron用户到Service项目的admin角色组
openstack role add --project service --user neutron admin
# 创建neutron服务
openstack service create --name neutron --description "OpenStack Networking" network
# 创建endpoint
openstack endpoint create --region RegionOne network public http://192.168.88.14:9696
openstack endpoint create --region RegionOne network internal http://192.168.88.14:9696
openstack endpoint create --region RegionOne network admin http://192.168.88.14:9696
# 验证
openstack user list
openstack service list
openstack endpoint list

配置完成后,分别启动openstack-nova-api、neutron-server、neutron-linuxbridge-agent、neutron-dhcp-agent、neutron-metadata-agent服务。

systemctl start openstack-nova-api neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agen
systemctl status openstack-nova-api neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agen
systemctl enable openstack-nova-api neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agen

四、计算节点网络部署

1. 安装软件

yum install -y openstack-neutron-linuxbridge --nogpgchec 
yum install -y ebtables --nogpgchec 
yum install -y ipset --nogpgchec 
yum install -y conntrack-tools --nogpgchec

2. 配置neutron

  • 配置rabbitmq连接
  • 配置keystone认证
  • 配置锁文件
cp /etc/neutron/neutron.conf{,.bak}
vim /etc/neutron/neutron.conf

[DEFAULT]
auth_strategy = keystone
transport_url = rabbit://openstack:openstack@192.168.88.14:5672

[keystone_authtoken]
auth_uri = http://192.168.88.14:5000
auth_url = http://192.168.88.14:35357
memcached_servers = 192.168.88.14:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron

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

3. 配置网桥设备客户端

  • 设置网络映射和安全组
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini{,.bak}
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]
physical_interface_mappings = provider:eth0

[vxlan]
enable_vxlan = false

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

4. 修改nova配置

vim /etc/nova/nova.conf

[neutron]
url = http://192.168.88.14:9696
auth_url = http://192.168.88.14:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron

配置完成后,启动nova相关服务。

# 重启openstack-nova-compute服务
systemctl restart openstack-nova-compute
# 启动neutron服务
systemctl start neutron-linuxbridge-agent
systemctl status neutron-linuxbridge-agent
systemctl enable neutron-linuxbridge-agent
# 重启libvirtd服务
systemctl restart libvirtd

启动完成后,在控制节点上测试network和compute服务状态是否正常。

# 在control节点上查看所有的网络客户端
openstack network agent list
# 查看所有的计算节点服务
openstack compute service list

总结

这部分介绍了neutron网络组件的部署工作。到目前为止,已经完成了openstack的最小化安装。接下来介绍如何使用openstack命令创建一个VM实例。

上一篇:OpenStack基础环境配置


下一篇:OpenStack主要组件