Neutron中最为核心的工作便是对二层物理网络的抽象和管理
为Neutron创建数据库
mysql -u root -p CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \ IDENTIFIED BY 'NEUTRON_DBPASS'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \ IDENTIFIED BY 'NEUTRON_DBPASS';创建neutron用户和服务实例、端点
openstack user create --domain default --password-prompt neutron openstack role add --project service --user neutron admin创建服务实例
openstack service create --name neutron --description "OpenStack Networking" network创建服务端点
openstack endpoint create --region RegionOne network public http://controller:9696 openstack endpoint create --region RegionOne network internal http://controller:9696 openstack endpoint create --region RegionOne network admin http://controller:9696安装服务和代理服务模块
apt-get install neutron-server neutron-plugin-ml2 \ neutron-linuxbridge-agent neutron-dhcp-agent \ neutron-metadata-agent/etc/neutron/neutron.conf配置文件如下:
[database] ... connection =mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron [DEFAULT] ... core_plugin = ml2 service_plugins = [DEFAULT] ... rpc_backend = rabbit [oslo_messaging_rabbit] ... rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS [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 [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/etc/neutron/plugins/ml2/ml2_conf.ini ML2插件使用Linux桥接机制为实例创建layer-2 (桥接/交换)虚拟网络基础设施
[ml2] ... type_drivers = flat,vlan [ml2] ... tenant_network_types = #禁用私有网络选项 [ml2] ... mechanism_drivers = linuxbridge [ml2] ... extension_drivers = port_security #启用端口安全扩展驱动 [ml2_type_flat] ... flat_networks = provider #配置公共flat提供网络 [securitygroup] ... enable_ipset = True/etc/neutron/plugins/ml2/linuxbridge_agent.ini 为实例创建包括私有网络的VXLAN隧道和处理安全组的layer-2(桥接/交换)虚拟网络设施
[linux_bridge] physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME [vxlan] enable_vxlan = False#因为没有私有网络的功能所以禁用 [securitygroup] enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver/etc/neutron/dhcp_agent.ini
[DEFAULT] interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = True/etc/neutron/metadata_agent.ini
[DEFAULT] ... nova_metadata_ip = controller metadata_proxy_shared_secret = METADATA_SECRET/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_PASS service_metadata_proxy = True metadata_proxy_shared_secret = METADATA_SECRET安装网桥代理组建
apt-get install neutron-linuxbridge-agent配置neutron服务(/etc/neutron/neutron.conf)
[DEFAULT] ... rpc_backend = rabbit [oslo_messaging_rabbit] ... rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS [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*配置计算节点的Linux bridge服务
[linux_bridge] physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME(改成eth1) [vxlan] enable_vxlan = False [securitygroup] enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver配置计算节点的计算服务使用网络
[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如果列表host里出现compute1,就已经成功了。 参考: http://docs.openstack.org/mitaka/install-guide-ubuntu/common/get_started_networking.html
Flat network:基于不使用 VLAN 的物理网络实现的虚拟网络。每个物理网络最多只能实现一个虚拟网络。
Provider network: 基于不使用 VLAN 的物理网络实现的虚拟网络。每个物理网络最多只能实现一个虚拟网络。
/etc/neutron/plugins/ml2/ml2_conf.ini 这个配置文件其实是Neutron ML2模块的配置文件。这个模块统一管理着 Layer 2 网络的虚拟化(Neutron支持L2-L7的虚拟化),目前支持 Open vSwitch,linux bridge,SR-IOV 等虚拟化 。在上面的配置选项中,我们选择了linux bridge这个代理。网络类型的支持由 ML2 的 types drivers 来完成。’local’,’flat’,’vlan’,’gre’,’vxlan’,’geneve’。实际上就是 ML2 内部所有支持的网络类型。 下面是ML2的工作方式
ML2和agent之间的关系: OpenStack网络类型(管理,数据,外接和API): Flat结构: