OpenStack搭建企業私有云 四:Networking服務

網絡服務概覽

OpenStack Networking(neutron),允許創建、插入接口設備,這些設備由其他的OpenStack服務管理。插件式的實現可以容納不同的網絡設備和軟件,爲OpenStack架構與部署提供了靈活性。

它包含下列組件:

  • neutron-server:
    接收和路由API請求到合適的OpenStack網絡插件,以達到預想的目的。

  • OpenStack網絡插件和代理:
    插拔端口,創建網絡和子網,以及提供IP地址,這些插件和代理依賴於供應商和技術而不同,OpenStack網絡基於插件和代理爲Cisco 虛擬和物理交換機、NEC OpenFlow產品,Open vSwitch,Linux bridging以及VMware NSX 產品穿線搭橋。
    常見的代理L3(3層),DHCP(動態主機IP地址),以及插件代理。

  • 消息隊列:
    大多數的OpenStack Networking安裝都會用到,用於在neutron-server和各種各樣的代理進程間路由信息。也爲某些特定的插件扮演數據庫的角色,以存儲網絡狀態
    OpenStack網絡主要和OpenStack計算交互,以提供網絡連接到它的實例。

  • 網絡neutron概念:
    OpenStack網絡(neutron)管理OpenStack環境中所有虛擬網絡基礎設施(VNI),物理網絡基礎設施(PNI)的接入層。OpenStack網絡允許租戶創建包括像 firewall, :term:load balancer和 :term:virtual private network (×××)等這樣的高級虛擬網絡拓撲。

網絡服務提供網絡,子網以及路由這些對象的抽象概念。每個抽象概念都有自己的功能,可以模擬對應的物理設備:網絡包括子網,路由在不同的子網和網絡間進行路由轉發。

對於任意一個給定的網絡都必須包含至少一個外部網絡。不像其他的網絡那樣,外部網絡不僅僅是一個定義的虛擬網絡。相反,它代表了一種OpenStack安裝之外的能從物理的,外部的網絡訪問的視圖。外部網絡上的IP地址可供外部網絡上的任意的物理設備所訪問
外部網絡之外,任何 Networking 設置擁有一個或多個內部網絡。這些軟件定義的網絡直接連接到虛擬機。僅僅在給定網絡上的虛擬機,或那些在通過接口連接到相近路由的子網上的虛擬機,能直接訪問連接到那個網絡上的虛擬機。
如果外部網絡想要訪問實例或者相反實例想要訪問外部網絡,那麼網絡之間的路由就是必要的了。每一個路由都配有一個網關用於連接到外部網絡,以及一個或多個連接到內部網絡的接口。就像一個物理路由一樣,子網可以訪問同一個路由上其他子網中的機器,並且機器也可以訪問路由的網關訪問外部網絡。
另外,你可以將外部網絡的IP地址分配給內部網絡的端口。不管什麼時候一旦有連接連接到子網,那個連接被稱作端口。你可以給實例的端口分配外部網絡的IP地址。通過這種方式,外部網絡上的實體可以訪問實例.
網絡服務同樣支持安全組。安全組允許管理員在安全組中定義防火牆規則。一個實例可以屬於一個或多個安全組,網絡爲這個實例配置這些安全組中的規則,阻止或者開啓端口,端口範圍或者通信類型。

操作步驟

  • 在controller節點
  • 創建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
  • 創建用戶

    # 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

OpenStack搭建企業私有云 四:Networking服務OpenStack搭建企業私有云 四:Networking服務

  • 在controller節點上安裝並配置網絡組件

  • 安裝組件

    # 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

配置compute節點網絡服務

    # 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

OpenStack搭建企業私有云 四:Networking服務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章