天天看點

8,neutron網絡虛拟化8.1 為什麼實體網絡無法滿足與雲計算需求8.2 neutron 網絡虛拟化能力8.3 neutron提供網絡類型8.4 在Keystone注冊neutron服務8.5 控制節點安裝配置neutron8.6 nova計算節點安裝neutron服務8.7 控制節點檢查neutron服務8.8 控制節點建立網絡

文章目錄

  • 8.1 為什麼實體網絡無法滿足與雲計算需求
    • 8.1.1 大容量的MAC表項和ARP表項
    • 8.1.2 4K VLAN TRUNK
    • 8.1.3 4K VLAN上限問題
    • 8.1.4 虛拟機遷移網絡依賴問題
  • 8.2 neutron 網絡虛拟化能力
  • 8.3 neutron提供網絡類型
  • 8.4 在Keystone注冊neutron服務
    • 8.4.1 建立neutron資料庫
    • 8.4.2 建立neutron使用者
    • 8.4.3 将neutron添加到test項目并且授予admin權限
    • 8.4.4 建立neutron服務
    • 8.4.5 建立neutron的api服務(endpoint)
  • 8.5 控制節點安裝配置neutron
    • 8.5.1 安裝neutron
    • 8.5.2 配置neutron.conf
    • 8.5.3 配置ml2_conf.ini
    • 8.5.4 配置linuxbridge_agent.ini
    • 8.5.5 配置dhcp_agent.ini
    • 8.5.6 配置metadata_agent.ini
    • 8.5.7 nova添加neutron網絡服務
    • 8.5.8 初始化網絡插件
    • 8.5.9 同步資料庫
    • 8.5.10 重新開機nova_api服務
    • 啟動并且配置自啟動
  • 8.6 nova計算節點安裝neutron服務
    • 8.6.1 安裝neutron
    • 8.6.2 配置neutron.conf
    • 8.6.3 配置linuxbridge_agent.ini
    • 8.6.4 nova添加neutron網絡服務
    • 8.6.5 重新開機nova
    • 8.6.6 啟動并且配置自啟動
  • 8.7 控制節點檢查neutron服務
  • 8.8 控制節點建立網絡
    • 8.8.1 建立網絡接口(provider:與現有實體網絡進行橋接)
    • 8.8.2 建立子網

8.1 為什麼實體網絡無法滿足與雲計算需求

8.1.1 大容量的MAC表項和ARP表項

虛拟化會導緻更大的MAC表項。假設一個網際網路雲計算中心的伺服器有5000台,按照1:20的比例進行虛拟化,則有10萬個虛拟機。通常每個虛拟機會配置兩個業務網口,這樣這個雲計算中心就有20萬個虛拟網口,對應的就是需要20萬個MAC位址和IP位址。雲計算要求資源靈活排程,業務資源任意遷移。也就是說任意一個虛拟機可以在整個雲計算網絡中任意遷移。這就要求全網在一個統一的二層網絡中。全網任意交換機都有可能學習到全網所有的MAC表項。與此對應的則是,目前業界主流的接入交換機的MAC表項隻有32K,基本無法滿足網際網路雲計算的需求。另外,網關需要記錄全網所有主機、所有網口的ARP資訊。這就需要網關裝置的有效ARP表項超過20萬。大部分的網關裝置晶片都不具備這種能力
           

8.1.2 4K VLAN TRUNK

傳統的大二層網絡支援任意VLAN的虛拟機遷移到網絡的任意位置,一般有兩種方式。方式一:虛拟機遷移後,通過自動化網絡管理平台動态的在虛拟機對應的所有端口上下發VLAN配置;同時,還需要動态删除遷移前虛拟機對應所有端口上的VLAN配置。這種方式的缺點是實作非常複雜,同時自動化管理平台對多廠商裝置還面臨相容性的問題,是以很難實作。方式二:在雲計算網絡上靜态配置VLAN,在所有端口上配置VLAN trunk all。這種方式的優點是非常簡單,是目前主流的應用方式。但這也帶來了巨大的問題:任一VLAN内如果出現廣播風暴,則全網所有VLAN内的虛拟機都會受到風暴影響,出現業務中斷
           

8.1.3 4K VLAN上限問題

雲計算網絡中有可能出現多租戶需求。如果租戶及業務的數量規模超出VLAN的上限(4K),則無法支撐客戶的需求
           

8.1.4 虛拟機遷移網絡依賴問題

VM遷移需要在同一個二層域内==,基于IP子網的區域劃分限制了二層網絡連通性的規模
           

8.2 neutron 網絡虛拟化能力

  1. 二層到七層網絡的虛拟化:L2(virtual switch)、L3(virtual Router 和 LB)、L4-7(virtual Firewall )等
  2. 網絡連通性:二層網絡和三層網絡
  3. 租戶隔離性
  4. 網絡安全性
  5. 網絡擴充性
  6. REST API
  7. 更進階的服務,包括 LBaaS,FWaaS,VPNaaS 等

8.3 neutron提供網絡類型

  • local 類型
  • flat 類型
  • vlan 類型
  • gre 類型
  • vxlan 類型

8.4 在Keystone注冊neutron服務

8.4.1 建立neutron資料庫

mysql -uroot -pabc-123
---
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
           

8.4.2 建立neutron使用者

source /script/admin.sh
openstack user create --domain default --password=neutron neutron
openstack user list
           

8.4.3 将neutron添加到test項目并且授予admin權限

openstack role add --project test --user neutron admin
           

8.4.4 建立neutron服務

openstack service create --name neutron --description "OpenStack Networking" network
openstack service list
           

8.4.5 建立neutron的api服務(endpoint)

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
openstack endpoint list
           

8.5 控制節點安裝配置neutron

8.5.1 安裝neutron

yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
           

8.5.2 配置neutron.conf

openstack-config --set  /etc/neutron/neutron.conf database connection  mysql+pymysql://neutron:[email protected]/neutron 
openstack-config --set  /etc/neutron/neutron.conf DEFAULT core_plugin  ml2  
openstack-config --set  /etc/neutron/neutron.conf DEFAULT service_plugins 
openstack-config --set  /etc/neutron/neutron.conf DEFAULT transport_url rabbit://openstack:[email protected]
openstack-config --set  /etc/neutron/neutron.conf DEFAULT auth_strategy  keystone  
openstack-config --set  /etc/neutron/neutron.conf keystone_authtoken www_authenticate_uri  http://controller:5000
openstack-config --set  /etc/neutron/neutron.conf keystone_authtoken auth_url  http://controller:5000
openstack-config --set  /etc/neutron/neutron.conf keystone_authtoken memcached_servers  controller:11211
openstack-config --set  /etc/neutron/neutron.conf keystone_authtoken auth_type  password  
openstack-config --set  /etc/neutron/neutron.conf keystone_authtoken project_domain_name default  
openstack-config --set  /etc/neutron/neutron.conf keystone_authtoken user_domain_name  default  
openstack-config --set  /etc/neutron/neutron.conf keystone_authtoken project_name  test 
openstack-config --set  /etc/neutron/neutron.conf keystone_authtoken username  neutron  
openstack-config --set  /etc/neutron/neutron.conf keystone_authtoken password  neutron  
openstack-config --set  /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_status_changes  True  
openstack-config --set  /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_data_changes  True  
openstack-config --set  /etc/neutron/neutron.conf nova auth_url  http://controller:5000
openstack-config --set  /etc/neutron/neutron.conf nova auth_type  password 
openstack-config --set  /etc/neutron/neutron.conf nova project_domain_name  default  
openstack-config --set  /etc/neutron/neutron.conf nova user_domain_name  default  
openstack-config --set  /etc/neutron/neutron.conf nova region_name  RegionOne  
openstack-config --set  /etc/neutron/neutron.conf nova project_name  test  
openstack-config --set  /etc/neutron/neutron.conf nova username  nova  
openstack-config --set  /etc/neutron/neutron.conf nova password  nova  
openstack-config --set  /etc/neutron/neutron.conf oslo_concurrency lock_path  /var/lib/neutron/tmp
           

8.5.3 配置ml2_conf.ini

openstack-config --set  /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers  flat,vlan
openstack-config --set  /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types 
openstack-config --set  /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers  linuxbridge
openstack-config --set  /etc/neutron/plugins/ml2/ml2_conf.ini ml2 extension_drivers  port_security
openstack-config --set  /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_flat flat_networks  provider 
openstack-config --set  /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_ipset  True 
           

8.5.4 配置linuxbridge_agent.ini

openstack-config --set   /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings  provider:ens192
openstack-config --set   /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan  enable_vxlan  False
openstack-config --set   /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup  enable_security_group  True 
openstack-config --set   /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup  firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
           

neutron-linuxbridge-agent.service的時候會自動設定為1

sysctl net.bridge.bridge-nf-call-iptables
sysctl net.bridge.bridge-nf-call-ip6tables
           

8.5.5 配置dhcp_agent.ini

openstack-config --set   /etc/neutron/dhcp_agent.ini DEFAULT  interface_driver  linuxbridge
openstack-config --set   /etc/neutron/dhcp_agent.ini DEFAULT  dhcp_driver  neutron.agent.linux.dhcp.Dnsmasq
openstack-config --set   /etc/neutron/dhcp_agent.ini DEFAULT  enable_isolated_metadata  True 
           

8.5.6 配置metadata_agent.ini

openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT nova_metadata_host controller
openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT metadata_proxy_shared_secret neutron
           

8.5.7 nova添加neutron網絡服務

openstack-config --set  /etc/nova/nova.conf  neutron url http://controller:9696
openstack-config --set  /etc/nova/nova.conf  neutron auth_url http://controller:5000
openstack-config --set  /etc/nova/nova.conf  neutron auth_type password
openstack-config --set  /etc/nova/nova.conf  neutron project_domain_name default
openstack-config --set  /etc/nova/nova.conf  neutron user_domain_name default
openstack-config --set  /etc/nova/nova.conf  neutron region_name RegionOne
openstack-config --set  /etc/nova/nova.conf  neutron project_name test
openstack-config --set  /etc/nova/nova.conf  neutron username neutron
openstack-config --set  /etc/nova/nova.conf  neutron password neutron
openstack-config --set  /etc/nova/nova.conf  neutron service_metadata_proxy true
openstack-config --set  /etc/nova/nova.conf  neutron metadata_proxy_shared_secret neutron
           

8.5.8 初始化網絡插件

ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
           

8.5.9 同步資料庫

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.5.10 重新開機nova_api服務

systemctl restart openstack-nova-api.service
           

啟動并且配置自啟動

systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
systemctl status neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
           

8.6 nova計算節點安裝neutron服務

8.6.1 安裝neutron

yum install openstack-neutron-linuxbridge ebtables ipset -y
           

8.6.2 配置neutron.conf

openstack-config --set /etc/neutron/neutron.conf DEFAULT transport_url  rabbit://openstack:[email protected]
openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken www_authenticate_uri  http://controller:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name test
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password neutron
openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp
           

8.6.3 配置linuxbridge_agent.ini

openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings  provider:ens192
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan false
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
           

8.6.4 nova添加neutron網絡服務

openstack-config --set /etc/nova/nova.conf neutron url http://controller:9696
openstack-config --set /etc/nova/nova.conf neutron auth_url http://controller:5000
openstack-config --set /etc/nova/nova.conf neutron auth_type password
openstack-config --set /etc/nova/nova.conf neutron project_domain_name default
openstack-config --set /etc/nova/nova.conf neutron user_domain_name default
openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne
openstack-config --set /etc/nova/nova.conf neutron project_name test
openstack-config --set /etc/nova/nova.conf neutron username neutron
openstack-config --set /etc/nova/nova.conf neutron password neutron
           

8.6.5 重新開機nova

systemctl restart openstack-nova-compute.service
systemctl status openstack-nova-compute.service
           

8.6.6 啟動并且配置自啟動

systemctl restart neutron-linuxbridge-agent.service
systemctl status neutron-linuxbridge-agent.service
systemctl enable neutron-linuxbridge-agent.service
           

8.7 控制節點檢查neutron服務

source /script/admin.sh
openstack extension list --network
openstack network agent list
           

8.8 控制節點建立網絡

8.8.1 建立網絡接口(provider:與現有實體網絡進行橋接)

openstack network create --share --external --provider-physical-network provider  --provider-network-type flat provider
openstack network list
           

8.8.2 建立子網

openstack subnet create --network provider --no-dhcp --allocation-pool start=192.168.204.100,end=192.168.204.200 --dns-nameserver 223.5.5.5 --gateway 192.168.204.1 --subnet-range 192.168.204.0/24 provider-subnet01
openstack subnet list
           

繼續閱讀