OpenStack Networking(neutron),容許建立、插入接口設備,這些設備由其餘的OpenStack服務管理。插件式的實現能夠容納不一樣的網絡設備和軟件,爲OpenStack架構與部署提供了靈活性。mysql
它包含下列組件:linux
neutron-server:
接收和路由API請求到合適的OpenStack網絡插件,以達到預想的目的。sqlOpenStack網絡插件和代理:
插拔端口,建立網絡和子網,以及提供IP地址,這些插件和代理依賴於供應商和技術而不一樣,OpenStack網絡基於插件和代理爲Cisco 虛擬和物理交換機、NEC OpenFlow產品,Open vSwitch,Linux bridging以及VMware NSX 產品穿線搭橋。
常見的代理L3(3層),DHCP(動態主機IP地址),以及插件代理。數據庫消息隊列:
大多數的OpenStack Networking安裝都會用到,用於在neutron-server和各類各樣的代理進程間路由信息。也爲某些特定的插件扮演數據庫的角色,以存儲網絡狀態
OpenStack網絡主要和OpenStack計算交互,以提供網絡鏈接到它的實例。vim- 網絡neutron概念:
OpenStack網絡(neutron)管理OpenStack環境中全部虛擬網絡基礎設施(VNI),物理網絡基礎設施(PNI)的接入層。OpenStack網絡容許租戶建立包括像 firewall, :term:load balancer
和 :term:virtual private network (×××)
等這樣的高級虛擬網絡拓撲。
網絡服務提供網絡,子網以及路由這些對象的抽象概念。每一個抽象概念都有本身的功能,能夠模擬對應的物理設備:網絡包括子網,路由在不一樣的子網和網絡間進行路由轉發。api
對於任意一個給定的網絡都必須包含至少一個外部網絡。不像其餘的網絡那樣,外部網絡不單單是一個定義的虛擬網絡。相反,它表明了一種OpenStack安裝以外的能從物理的,外部的網絡訪問的視圖。外部網絡上的IP地址可供外部網絡上的任意的物理設備所訪問
外部網絡以外,任何 Networking 設置擁有一個或多個內部網絡。這些軟件定義的網絡直接鏈接到虛擬機。僅僅在給定網絡上的虛擬機,或那些在經過接口鏈接到相近路由的子網上的虛擬機,能直接訪問鏈接到那個網絡上的虛擬機。
若是外部網絡想要訪問實例或者相反實例想要訪問外部網絡,那麼網絡之間的路由就是必要的了。每個路由都配有一個網關用於鏈接到外部網絡,以及一個或多個鏈接到內部網絡的接口。就像一個物理路由同樣,子網能夠訪問同一個路由上其餘子網中的機器,而且機器也能夠訪問路由的網關訪問外部網絡。
另外,你能夠將外部網絡的IP地址分配給內部網絡的端口。無論何時一旦有鏈接鏈接到子網,那個鏈接被稱做端口。你能夠給實例的端口分配外部網絡的IP地址。經過這種方式,外部網絡上的實體能夠訪問實例.
網絡服務一樣支持安全組。安全組容許管理員在安全組中定義防火牆規則。一個實例能夠屬於一個或多個安全組,網絡爲這個實例配置這些安全組中的規則,阻止或者開啓端口,端口範圍或者通訊類型。安全
建立nuetron數據庫和受權網絡
# mysql -u root -p > CREATE DATABASE neutron; > GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123456'; > GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123456';
得到 admin 憑證來獲取只有管理員能執行的命令的訪問權限:架構
# source ~/admin-openrc
建立用戶app
# openstack user create --domain default --password-prompt neutron User Password: //密碼123456 Repeat User Password: //密碼123456
添加admin
角色到neutron
用戶:
# openstack role add --project service --user neutron admin
建立neutron服務
# 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
安裝組件
# yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables
修改配置文件
# vim /etc/neutron/neutron.conf [database] //729 connection = mysql+pymysql://neutron:123456@controller/neutron [DEFAULT] //27 auth_strategy = keystone //30 core_plugin = ml2 //33 不寫表明禁用其餘插件 service_plugins = //570 transport_url = rabbit://openstack:RABBIT_PASS@controller //98 notify_nova_on_port_status_changes = true //102 notify_nova_on_port_data_changes = true [keystone_authtoken] //847 auth_uri = http://controller:5000 auth_url = http://controller:35357 //898 memcached_servers = controller:11211 //1005 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = 123456 [nova] //1085 auth_url = http://controller:35357 //1089 auth_type = password //1127 project_domain_name = default //1156 user_domain_name = default //1069 region_name = RegionOne //1135 project_name = service //1163 username = nova //1121 password = 123456 [oslo_concurrency] //1179 lock_path = /var/lib/neutron/tmp
配置 Modular Layer 2 (ML2) 插件
# vim /etc/neutron/plugins/ml2/ml2_conf.ini [ml2] //136 type_drivers = flat,vlan //141 設置空是禁用本地網絡 tenant_network_types = //145 mechanism_drivers = linuxbridge //150 extension_drivers = port_security [ml2_type_flat] //186 flat_networks = provider [securitygroup] //263 enable_ipset = true
配置Linux網橋
# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini [linux_bridge] //157 physical_interface_mappings = provider:ens33 [vxlan] //208 enable_vxlan = false [securitygroup] //193 enable_security_group = true //188 firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置DHCP
# vim /etc/neutron/dhcp_agent.ini //16 interface_driver = linuxbridge //28 dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq //37 enable_isolated_metadata = true
配置metadata
# vim /etc/neutron/metadata_agent.ini [DEFAULT] //22 nova_metadata_host = controller //34 metadata_proxy_shared_secret = 123456
配置計算服務使用網絡服務
# vim /etc/nova/nova.conf [neutron] //7534 url = http://controller:9696 //7610 auth_url = http://controller:35357 //7604 auth_type = password //7631 project_domain_name = default //7657 user_domain_name = default //7678 region_name = RegionOne //7625 project_name = service //7651 username = neutron //7660 password = 123456 //7573 service_metadata_proxy = true //7584 metadata_proxy_shared_secret = 123456
創建服務軟鏈接
# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
同步數據庫
# 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
重啓compute API服務和 啓動neutron服務並加入開機自啓動
# systemctl restart openstack-nova-api.service systemctl enable neutron-server.service systemctl enable neutron-linuxbridge-agent.service systemctl enable neutron-dhcp-agent.service systemctl enable neutron-metadata-agent.service systemctl start neutron-server.service systemctl start neutron-linuxbridge-agent.service systemctl start neutron-dhcp-agent.service systemctl start neutron-metadata-agent.service
# yum install -y openstack-neutron-linuxbridge ebtables ipset
配置公共組件
# vim /etc/neutron/neutron.conf [DEFAULT] //27 auth_strategy = keystone //570 transport_url = rabbit://openstack:123456@controller [keystone_authtoken] //847 auth_uri = http://controller:5000 auth_url = http://controller:35357 //898 memcached_servers = controller:11211 //1005 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = 123456 [oslo_concurrency] //1180 lock_path = /var/lib/neutron/tmp
配置Linux網橋
# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini [linux_bridge] //157 physical_interface_mappings = provider:ens33 [vxlan] //208 enable_vxlan = false [securitygroup] //193 enable_security_group = true //188 firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置計算節點網絡服務
# vim /etc/nova/nova.conf [neutron] //7534 url = http://controller:9696 //7610 auth_url = http://controller:35357 //7605 auth_type = password //7631 project_domain_name = default //7657 user_domain_name = default //7678 region_name = RegionOne //7625 project_name = service //7651 username = neutron //7660 password = 123456
重啓計算服務
# systemctl restart openstack-nova-compute.service
啓動Linuxbridge代理並配置它開機自啓動
# systemctl enable neutron-linuxbridge-agent.service # systemctl start neutron-linuxbridge-agent.service
列出加載的擴展來驗證neutron-server
進程是否正常啓動:
# source ~/admin-openrc # neutron ext-list