一、理论基础篇
1. Neutron 概念
Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和 *** 等。Neutron 提供了一个灵活的框架,通过配置,无论是开源还是商业软件都可以被用来实现这些功能。
Openstack的设计理念是把所有的组件当做服务来注册的。 Neutron就是网络服务。它将网络、子网、端口和路由器抽象化,之后启动的虚拟主机就可以连接到这个虚拟网络上,最大的好处是这些都可视化的在Horizon里得到了实现,部署或者改变一个SDN变得非常简单。
2. 工作流程图
1. Neutron 组件分类
Neutron-server(接收用户的请求,通过消息队列告知Plugin处理请求)
Plugin(处理Neutron-server的请求,维护网络状态,调用Agent处理请求)
Agent(处理Plugin的请求,实现Network Provider上的各种网络功能 最终创建网络是由这个组件完成)
Network Provider(提供网络的虚拟设备或者物理设备,比如:Linux Bridge,OpenVSwitch或者其他支持Neutron的物理交换机[网络功能是在这上面来实现的])
Queue(消息队列,组件之间沟通的桥梁)
Database(存放OpenStack的网络状态信息,包括Network,Subnet,Port,Router等)
Plugin、Agent、Network Provider 是配套进行使用的,比如Network Provider采用的是Linux Bridge ,那么Plugin 和 Agent就必须采用Linux Bridge里面Plugin Agent
2. Neutron 组网模型
Neutron 提供了多种组网模型以提供不同的租户搭建各种网络拓扑。
2.1 Local 网络
2.2 Flat 网络
(1) Flat 网络直接连接虚拟机和外部网络
(2) Flat 网络连接路由器和外部网络
2.3 vlan 网络
2.4 Vxlan 网络
一、实践操作篇
1.环境说明
系统 | 主机名 | IP地址 |
CentOS 7.7 | controller | ens33:10.0.0.129 ens37:192.168.248.140 |
CentOS 7.7 | compute | ens33:10.0.0.130 ens37:192.168.248.141 |
虚拟机网卡配置
ens33 为VMnet1仅主机模式
ens37 为VMnet8 Nat模式
2.controller节点的配置
2.1创建neutron数据库
[root@controller ~]# mysql -uroot -p
MariaDB [(none)]> create database neutron;
MariaDB [(none)]> grant all privileges on neutron.* to 'neutron'@'localhost' identified by 'neutron';
MariaDB [(none)]> grant all privileges on neutron.* to 'neutron'@'%' identified by 'neutron';
2.2创建neutron用户以及角色权限的赋予
[root@controller ~]# openstack user create --domain default --password neutron neutron
[root@controller ~]# openstack role add --project service --user neutron admin
2.3 创建neutron服务实体以及端点信息
[root@controller ~]# openstack service create --name neutron --description "Openstack Networking" network
创建公有端点信息(public)
[root@controller ~]# openstack endpoint create --region RegionOne network public http://controller:9696
创建私有端点信息(internal)
[root@controller ~]# openstack endpoint create --region RegionOne network internal http://controller:9696
创建admin管理员端点信息
[root@controller ~]# openstack endpoint create --region RegionOne network admin http://controller:9696
3. 安装neutron相关组件包
[root@controller ~]# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
4. 配置neutron的配置文件
配置数据库连接
[root@controller ~]# vi /etc/neutron/neutron.conf
[database]
connection = mysql+pymysql://neutron:neutron@controller/neutron
配置keystone用户认证信息
[keystone_authtoken]
auth_uri = http://controller:
auth_url = http://controller:35357
memcached_servers = controller:11211
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron
[DEFAULT]
auth_strategy = keystone
配置rabbitmq消息队列
rpc_backend = rabbit
rabbit_host = controller
rabbit_port = 5672
rabbit_userid = guest
rabbit_password = guest
neutron核心配置,启用ML2插件并禁用其他插件
[DEFAULT]
core_plugin = ml2
service_plugins =
备注:service_plugins等号后面什么都不写就是禁用其他插件 配置网络服务来通知计算节点的网络拓扑变化
[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
配置锁路径
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
配置Modular Layer 2 (ML2)
[root@controller ~]# vi /etc/neutron/plugins/ml2/ml2_conf.ini
驱动的选择
[ml2]
type_drivers = flat,vlan,gre,vxlan,geneve
使用什么插件来创建网络
mechanism_drivers = linuxbridge,openvswitch
禁用私有网络(租户的网络类型)
tenant_network_types = 启动端口安全扩展驱动
extension_drivers = port_security
配置公共的网络
[ml2_type_flat
flat_networks = public
在 [securitygroup]部分,启用 ipset增加安全组规则的高效性
[securitygroup]
enable_ipset = true
配置Linuxbridge代理
[root@controller ~]# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini [linux_bridge]
physical_interface_mappings = public:ens37
在[vxlan]部分,禁止VXLAN覆盖网络
[vxlan]
enable_vxlan = false
在[securitygroup]部分,启用安全组并配置防火墙驱动
enable_security_group = true
firewall_driver= neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置DHCP代理
[root@controller ~]# vi /etc/neutron/dhcp_agent.ini
配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
[DEFAULT]
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
配置元数据代理 在[DEFAULT]部分,配置元数据主机以及共享密码
[root@controller ~]# vi /etc/neutron/metadata_agent.ini
[DEFAULT]
nova_metadata_host = controller 元数据主机
metadata_proxy_shared_secret = controller
共享密码 为nova-api配置网络服务 在[neutron]部分,配置访问参数 [root@controller ~]# vi /etc/nova/nova.conf
[neutron]
url=http://controller:9696 7698 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
在[neutron]部分,启用元数据代理并设置密码
[neutron]
service_metadata_proxy=true
metadata_proxy_shared_secret = controller
5. 初始化数据库
[root@controller ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
[root@controller ~]# 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
6. 重启Nova API 服务
[root@controller ~]# systemctl restart openstack-nova-api.service
7. 启动Neutron服务并配置开机自启动
[root@controller ~]# systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
[root@controller ~]# systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
8. 检查neutron是否安装成功
[root@controller ~]# openstack network agent list
compute节点的部署
安装相关软件包
[root@compute ~]# yum install openstack-neutron-linuxbridge ebtables ipset net-tools -y
· 1
修改配置文件
复制controller配置文件过来进行修改即可
[root@controller ~]# scp /etc/neutron/neutron.conf root@compute:/etc/neutron/neutron.conf
配置Neutron服务
[root@compute ~]# vi /etc/neutron/neutron.conf
注释以下选项#connection = mysql+pymysql://neutron:neutron@controller/neutron
#core_plugin = ml233 #service_plugins =
#notify_nova_on_port_status_changes = true
#notify_nova_on_port_data_changes = true
为nova计算节点配置网络服务
[root@compute ~]# vi /etc/nova/nova.conf
[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
配置Linuxbridge代理
[root@compute ~]# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
physical_interface_mappings = public:ens33
enable_vxlan = false
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
enable_security_group = true
重启计算节点nova-compute
[root@compute ~]# systemctl restart openstack-nova-compute.service
启动Linuxbridge代理并配置它开机自启动
[root@compute ~]# systemctl start neutron-linuxbridge-agent.service
[root@compute ~]# systemctl enable neutron-linuxbridge-agent.service
控制节点查看是否生效
[root@controller ~]# openstack network agent list
发表评论