前言
这部分内容主要介绍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的执行流程
- 执行流程:
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实例。