网络服务简介mysql
OpenStack网络(neutron)容许您建立和将其余OpenStack服务管理的接口设备附加到网络中。插件能够适应不一样的网络设备和软件,为OpenStack的架构和部署提供灵活性。linux
它包括如下组件:sql
neutron-server:接受并将API请求路由到相应的OpenStack网络插件以进行操做。数据库
OpenStack Networking plug-ins and agent:即插即用端口,建立网络或者子网,提供IP地址。这些插件和代理根据特定云使用的供应商和技术而有所不一样。OpenStack网络附带插件和代理有思科虚拟和物理交换机,NEC OpenFlow产品,Open vSwitch,Linux网桥和VMware的NSX产品。常见的代理是L3(layer 3)、DHCP和插件代理(plug-in agent)。vim
Messaging queue:被大多数的openstack网络安装使用,用于在neutron server和各类agent之间路由信息。也能够做为数据库存储特定插件的网络状态。api
OpenStack网络服务主要与OpenStack计算服务交互,为其实例提供网络和链接。安全
Neutron网络概念bash
OpenStack的网络(neutron)在你的OpenStack环境中管理全部虚拟网络基础设施(VNI)的网络方面,并负责到物理网络基础设施(PNI)的接入。OpenStack网络在项目(projects)中可以建立高级的虚拟网络拓扑,其中可能包括诸如防火墙、负载均衡器和虚拟专用网(×××)等服务。网络
网络提供网络、子网和路由器做为抽象的对象。每一个抽象都有模仿其物理对应的功能:网络包含子网,路由器在不一样的子网和网络之间路由通讯。架构
任何给定的网络设置至少有一个外部网络。与其余网络不一样,外部网络不单单是一个虚拟定义的网络。相反,它表明一个到OpenStack安装以外可访问的物理外部网络的一部分。外部网络上的IP地址能够由任何物理上的外部网络访问。
除了外部网络,任何网络都有一个或多个内部网络。这些软件定义的网络直接链接到VM。只有给定的内部网络中的VM,或经过相似于路由器的接口链接的子网,才能直接访问链接到该网络的VM。
若是从外部网络访问VM,反之亦然,网络之间须要路由器。每一个路由器都有一个网关,链接到外部网络,有一个或多个接口链接到内部网络。与物理路由器同样,子网能够访问链接到同一路由器上的其余子网上的机器,而且能够经过路由器的网关访问外部网络。
此外,能够将外部网络上的IP地址分配到内部网络的端口。您能够将外部网络IP地址与端口关联到VM。经过这种方式,外部网络上的实体能够访问VM。
网络也支持安全组。安全组使管理员能够按组定义防火墙规则。VM能够属于一个或多个安全组,网络在这些安全组中应用规则来阻止或容许端口,端口范围,或者是虚拟机的流量类型。
网络使用的每一个插件都有本身的概念。这些概念的理解能够帮助您设置网络。全部网络安装都使用核心插件和安全组插件(或只是非安全组插件)。此外,firewall-as-a-service(FWaaS)和load-balancer-as-a-service(lbaas)插件是可使用的。
在controller节点上部署neutron
前提准备工做:
在配置neutron以前,你必需要建立一个数据库、service credentials和API endpoints
1、建立数据库,完成如下配置
链接到数据库
mysql -u root -p 123456
建立neutron数据库
MariaDB [(none)]> create database neutron; Query OK, 1 row affected (0.09 sec)
建立数据库用户并赋予权限
MariaDB [(none)]> grant all privileges on neutron.* to 'neutron'@'localhost' identified by '123456'; Query OK, 0 rows affected (0.16 sec) MariaDB [(none)]> grant all privileges on neutron.* to 'neutron'@'%' identified by '123456'; Query OK, 0 rows affected (0.16 sec)
2、赋予admin用户执行命令行环境权限
[root@controller /]# source admin-openrc
3、为了建立service credentials,完成如下步骤:
建立neutron用户
[root@controller /]# openstack user create --domain default --password-prompt neutron
添加neutron用户到admin角色,次命令没有任何输出
[root@controller /]# openstack role add --project service --user neutron admin
建立neutron服务项
建立网络服务API endpoints。
[root@controller /]# openstack endpoint create --region RegionOne network public http://controller:9696
[root@controller /]# openstack endpoint create --region RegionOne network internal http://controller:9696
[root@controller /]# openstack endpoint create --region RegionOne network admin http://controller:9696
在controller节点上安装Self-service networks
安装组件:
[root@controller /]# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
配置服务组件:
编辑配置文件/etc/neutron/neutron.conf并完成如下设置
在[database]部分配置到数据库的访问链接:
[root@controller /]# vim /etc/neutron/neutron.cnf
[database] 添加
connection = mysql+pymysql://neutron:123456@controller/neutron
在[DEFAULT]部分配置:
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
在[DEFAULT]部分配置到RabbitMQ的访问:
[DEFAULT]
transport_url = rabbit://openstack:123456@controller
[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 = 123456
在[DEFAULT]和[nova]部分配置网络去通知计算服务网络拓扑发生的变化
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 = 123456
在[oslo_concurrency]部分配置锁定路径
[oslo_concurrency] 添加
lock_path = /var/lib/neutron/tmp
配置ML2插件
ML2插件使用Linux网桥机制来构建instance的虚拟网络基础架构。
编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件来完成如下设置:
[root@controller /]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
type_drivers = flat,vlan,vxlan
在[ml2]部分激活VXLAN self-service networks
[ml2]
tenant_network_types = vxlan
在[ml2]部分激活Linux bridge 和layer-2 population mechanisms:
mechanism_drivers = linuxbridge,l2population
在[ml2]部分激活port security扩展驱动
extension_drivers = port_security
在[ml2_type_flat]部分配置provider virtual network 做为a flat network:
[ml2_type_flat]
flat_networks = provider
在[ml2_type_vxlan]部分配置vni范围
vni_ranges = 1:1000
在[securitygroup]部分配置激活ipset来增长安全组规则效率
[securitygroup]
enable_ipset = true
配置Linux网桥代理
Linux网桥代理构建2层虚拟网络架构并处理安全组
配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并完成如下配置:
[root@controller /]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
在[linux_bridge]部分配置提供商虚拟网络和提供商物理网络的映射
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
PROVIDER_INTERFACE_NAME替换为控制节点外网网卡名字:eno16777736
例如:physical_interface_mappings = provider:eno16777736
在[vxlan]部分配置启用VXLAN覆盖网络,配置处理覆盖网络的物理网络接口的IP地址,并启动L2 population
[vxlan]
enable_vxlan = true
local_ip = 10.0.0.11
l2_population = true
将OVERLAY_INTERFACE_IP_ADDRESS修改成控制节点内部管理接口IP地址,10.0.0.11。
在[securitygroup]部分激活安全组并配置Linux防火墙驱动
配置3层代理
3层代理提供路由和NAT服务
编辑配置文件/etc/neutron/l3_agent.ini并完成如下设置:
在[DEFAULT]部分配置Linux网桥驱动和外部网络桥接
[root@controller /]# vim /etc/neutron/l3_agent.ini
Inteface_driver - linuxbridge 去掉#号
配置DHCP代理
DHCP代理为虚拟网络提供DHCP服务
配置/etc/neutron/dhcp_agent.ini文件完成如下设置:
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
配置元数据代理
元数据代理将配置信息(如凭据)提供给实例。
配置/etc/neutron/metadata_agent.ini配置文件并完成如下配置:
[root@controller /]# vim /etc/neutron/metadata_agent.ini
DEFAULT]
nova_metadata_ip = controller
metadata_proxy_shared_secret = METADATA_SECRET
配置计算服务使用网络服务
配置/etc/nova/nova.conf文件完成如下配置,主要是配置访问参数、激活元数据代理及配置共享密码
[root@controller /]# vim /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 = 123456 service_metadata_proxy = true metadata_proxy_shared_secret = 123456
完成配置
1、建立网络初始化脚本连接文件
[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
二、重启计算服务
[root@controller /]# systemctl restart openstack-nova-api.service
二、启动网络服务并设置开机启动
[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
若是是自服务网络,还须要启动3层服务:
[root@controller /]# systemctl enable neutron-l3-agent.service [root@controller /]# systemctl start neutron-l3-agent.service
在compute节点上部署neutron
计算节点处理实例的连通性和安全性。
安装组件
[root@compute1 ~]# yum install openstack-neutron-linuxbridge ebtables ipset -y
配置通用部分:
通用配置部分包含认证机制、消息队列和插件
一、编辑/etc/neutron/neutron.conf文件完成如下设置
在[database]部分注释掉全部的链接设置,由于计算节点不须要直接访问数据库
在[DEFAULT] 部分配置和消息队列的链接
[root@compute1 /]# vim /etc/neutron/neutron.conf
DEFAULT]
transport_url = rabbit://openstack:123456@controller
在[DEFAULT] 和[keystone_authtoken]部分配置身份验证服务访问
[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 = 123456
一、在[oslo_concurrency]配置锁定路径
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
配置自服务网络类型的网络选项
配置linux网桥代理
Linux网桥代理构建2层虚拟网络架构并处理安全组
配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并完成如下配置:
在[linux_bridge]部分配置提供商虚拟网络和提供商物理网络的映射
[root@compute1 ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = eno16777736
eno16777736E替换为计算节点外网网卡名字:
在[vxlan]部分配置启用VXLAN覆盖网络,配置处理覆盖网络的物理网络接口的IP地址,并启动L2 population
[vxlan]
enable_vxlan = true
local_ip = 10.0.0.31
l2_population = true
将OVERLAY_INTERFACE_IP_ADDRESS修改成计算节点内部管理接口IP地址,本实验为10.0.0.31。
在[securitygroup]部分激活安全组并配置Linux防火墙驱动
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置计算服务使用网络服务
配置/etc/nova/nova.conf文件完成如下配置。在[neutron]部分配置访问参数
[root@compute1 ~]# vim /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 = 123456
完成配置
1、重启计算服务
[root@compute1 ~]# systemctl restart openstack-nova-compute.service
2、启动Linux网桥代理并设置开机启动
[root@compute1 ~]# systemctl enable neutron-linuxbridge-agent.service [root@compute1 ~]# systemctl start neutron-linuxbridge-agent.service
检查操做:
检查成功启动的neutron代理,在控制节点
[root@controller /]# source admin-openrc
[root@controller /]# openstack network agent list
dashboard在控制节点 Cinder安装 后期继续更新