OpenStack安裝(四)-Neutron模組

weixin_33782386發表於2017-03-12

一、安裝Neutron前的準備

1. 為Neutron配置資料庫

  1. 使用資料庫客戶端,以root使用者連線到資料庫中:mysql -u root -p
  2. 建立Neutron資料庫:CREATE DATABASE neutron;
  3. 為Neutron使用者授予資料庫許可權:
    GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
    GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';

2. 建立Neutron的身份認證證照

  1. 載入admin使用者的客戶端指令碼:source admin-openrc.sh
  2. 建立neutron使用者:openstack user create --password-prompt neutron
  3. 將admin角色新增給neutron使用者:openstack role add --project service --user neutron admin
  4. 建立neutron的服務實體:
    openstack service create --name neutron --description "OpenStack Networking" network
  5. 建立網路服務的API endpoint:
    openstack endpoint create --publicurl http://controller:9696 --adminurl http://controller:9696 --internalurl http://controller:9696 --region regionOne network

二、在控制節點上安裝和配置Neutron

1. 安裝Neutron

  1. 安裝Neutron:apt-get install neutron-server neutron-plugin-ml2 python-neutronclient

2. 配置Neutron

需要配置:資料庫、校驗機制、訊息佇列、拓撲更改通知、外掛

編輯Neutron的配置檔案:/etc/neutron/neutron.conf
小助手:刪除#和空格的命令:cat file | grep -v '^#' | grep -v '^$' > newfile

  1. 修改[database]部分,配置資料庫的連線:connection = mysql://neutron:NEUTRON_DBPASS@controller/neutron
    記得密碼替換為自己設定密碼,這是mysql的密碼,並非nova使用者的密碼

  2. 修改[DEFAULT]和[oslo_messaging_rabbit]兩部分, 配置RabbitMQ訊息佇列的訪問:

    rpc_backend = rabbit
    
    rabbit_host = controller
    rabbit_userid = openstack
    rabbit_password = RABBIT_PASS
    
  3. 修改[DEFAULT]和[keystone_authtoken]兩部分,配置身份認證服務的訪問:

    auth_strategy = keystone
    

    注意:修改[keystone_authtoken]部分要註釋掉本部分其他的引數

    auth_uri = http://controller:5000
    auth_url = http://controller:35357
    auth_plugin = password
    project_domain_id = default
    user_domain_id = default
    project_name = service
    username = nova
    password = NOVA_PASS
    
  4. 修改[DEFAULT]部分,啟用ML2外掛、路由服務和IP地址重疊:

    core_plugin = ml2
    service_plugins = router
    allow_overlapping_ips = True
    
  5. 修改[DEFAULT]和[nova]部分,配置網路拓撲結構更改的通知:

    notify_nova_on_port_status_changes = True
    notify_nova_on_port_data_changes = True
    nova_url = http://controller:8774/v2
    nova_admin_auth_url = http://controller:35357/v2.0
    nova_region_name = regionOne
    nova_admin_username = nova
    nova_admin_tenant_id = SERVICE_TENANT_ID
    nova_admin_password = NOVA_PASS
    
    auth_url = http://controller:35357
    auth_plugin = password
    project_domain_id = default
    user_domain_id = default
    region_name = RegionOne
    project_name = service
    username = nova
    password = NOVA_PASS
    
  6. 可選:在[DEFAULT]部分啟用日誌資訊詳細記錄:

    verbose = True
    

3. 配置ML2外掛

編輯配置檔案:/etc/neutron/plugins/ml2/ml2_conf.ini

  1. 在[ml2]部分,配置啟用flat和generic routing encapsulation(GRE)網路型別驅動,GRE租戶網路型別和OVS機制驅動:
    type_drivers = flat,vlan,gre,vxlan
    tenant_network_types = gre
    mechanism_drivers = openvswitch
    
  2. 在[ml2_type_gre]部分,配置tunnel identifier(id)範圍:
    tunnel_id_ranges = 1:1000
    
  3. 在[securitygroup]部分,啟用安全組、ipset和配置OVS iptables的防火牆驅動:
    enable_security_group = True
    enable_ipset = True
    firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
    

4. 配置計算服務的網路型別

預設情況下openstack配置計算服務使用傳統網路型別(legacy networking),所以需要重新配置計算服務使用neutron來管理網路服務
注意:在控制節點上進行配置

  1. 在[DEFAULT]部分,配置APIs和驅動:

    network_api_class = nova.network.neutronv2.api.API
    security_group_api = neutron
    linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
    firewall_driver = nova.virt.firewall.NoopFirewallDriver
    
  2. 在[neutron]部分,配置訪問引數:

    url = http://controller:9696
    auth_strategy = keystone
    admin_auth_url = http://controller:35357/v2.0
    admin_tenant_name = service
    admin_username = neutron
    admin_password = NEUTRON_PASS
    

5. 完成安裝

  1. 產生資料庫:
    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
  2. 重啟計算服務:
    service nova-api restart
    service nova-scheduler restart
    service nova-conductor restart
  3. 重啟網路服務:service nova-server restart

6. 校驗安裝

提示:在控制節點上進行校驗

  1. 載入admin客戶端指令碼:source admin-openrc.sh
  2. 檢視載入的擴充套件以校驗是否可以成功地發起neutron-server程式:neutron ext-list

三、在網路節點上安裝和配置Neutron

1. 調整網路節點的網路調優引數

  1. 編輯/etc/sysctl.conf檔案,編輯一些網路調優引數:
    net.ipv4.ip_forward=1
    net.ipv4.conf.all.rp_filter=0
    net.ipv4.conf.default.rp_filter=0
    
  2. 使更改立刻生效:sysctl -p

2. 安裝Neutron

  1. 在網路節點上安裝Neutron:
    apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent

3. 配置網路服務的通用元件

網路服務的通用元件包括:校驗機制、訊息佇列和外掛

  1. 編輯檔案/etc/neutron/neutron.conf進行配置

  2. 在[database]部分,註釋掉所有連線資料庫的引數,因為網路節點不能直接訪問資料庫

  3. 在[DEFAULT]和[oslo_messaging_rabbit]兩部分, 配置RabbitMQ訊息佇列的訪問:

    rpc_backend = rabbit
    
    rabbit_host = controller
    rabbit_userid = openstack
    rabbit_password = RABBIT_PASS
    
  4. 在[DEFAULT]和[keystone_authtoken]兩部分,配置身份認證服務的訪問:

    auth_strategy = keystone
    

    注意:修改[keystone_authtoken]部分要註釋掉本部分其他的引數

    auth_uri = http://controller:5000
    auth_url = http://controller:35357
    auth_plugin = password
    project_domain_id = default
    user_domain_id = default
    project_name = service
    username = neutron
    password = NEUTRON_PASS
    
  5. 在[DEFAULT]部分,配置ML2外掛、路由服務和IP地址的重疊:

    core_plugin = ml2
    service_plugins = router
    allow_overlapping_ips = True
    
  6. 可選:在[DEFAULT]部分啟用日誌資訊詳細記錄:

    verbose = True
    

4. 配置ML2外掛

修改檔案:/etc/neutron/plugins/ml2/ml2_conf.ini

  1. 在[ml2]部分,配置啟用flat,VLAN,GRE和VXLAN網路型別驅動,GRE租戶網路型別和OVS機制驅動:

    type_drivers = flat,vlan,gre,vxlan
    tenant_network_types = gre
    mechanism_drivers = openvswitch
    
  2. 在[ml2_type_flat]部分,配置外部的flat網路:

    flat_networks = external
    
  3. 在[ml2_type_gre]部分,配置tunnel identifier(id)範圍:

    tunnel_id_ranges = 1:1000
    
  4. 在[securitygroup]部分,啟用安全組、ipset和配置OVS iptables的防火牆驅動:

    enable_security_group = True
    enable_ipset = True
    firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
    
  5. 在[ovs]部分,啟用隧道,配置本地隧道端點和將外部的flat網路對映到br-ex外部網路橋接:

    local_ip = INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS(網路節點上隧道網路的IP地址10.0.1.21)
    enable_tunneling = True
    bridge_mappings = external:br-ex
    
  6. 在[agent]部分,啟用GRE隧道:

    tunnel_types = gre
    

5. 配置L3代理

編輯檔案:/etc/neutron/l3_agent.ini

  1. 在[DEFAULT]部分,配置介面驅動,配置外部網路橋接和失效路由名稱空間的清除:
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
    external_network_bridge =        #這部分為空,目的是在一個代理上啟用多個外部網路
    dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
    use_namespaces = True
    dhcp_delete_namespaces = True
    

6. 配置DHCP代理

編輯檔案:/etc/neutron/dhcp_agent.ini

  1. 在[DEFAULT]部分,配置介面和DHCP驅動,啟用名稱空間和啟用刪除廢棄的名稱空間:
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
    dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
    use_namespaces = True
    dhcp_delete_namespaces = True
    

7. 配置metadata代理

主要配置實驗的連線認證資訊
編輯檔案:/etc/neutron/metadata_agent.ini

  1. 在[DEFAULT]部分,配置metadata的主機為控制節點:

    nova_metadata_ip = controller
    
  2. 在[DEFAULT]部分,配置metadata代理共享密碼:

    metadata_proxy_shared_secret = METADATA_SECRET
    
  3. 在[DEFAULT] 部分,配置訪問引數:

    auth_uri = http://controller:5000
    auth_url = http://controller:35357
    auth_region = regionOne
    auth_plugin = password
    project_domain_id = default
    user_domain_id = default
    project_name = service
    username = neutron
    password = NEUTRON_PASS
    

8. 配置metadata代理(注意!!!在控制節點上完成)

編輯檔案:/etc/nova/nova.conf

  1. 在[neutron]部分,啟動metadata代理和配置密碼:
    service_metadata_proxy = True
    metadata_proxy_shared_secret = METADATA_SECRET
    
  2. 在控制節點重啟api服務:
    service nova-api restart
    

9. 配置Open vSwitch(OVS)服務

  1. 重啟OVS服務:service openvswitch-switch restart
  2. 新增額外的橋接:ovs-vsctl add-br br-ex
  3. 新增一個外部網橋的埠用於連線外部網路的物理網路卡:ovs-vsctl add-port br-ex eth2

10. 完成安裝

  1. 重啟服務:
    service neutron-plugin-openvswitch-agent restart
    service neutron-l3-agent restart
    service neutron-dhcp-agent restart
    service neutron-metadata-agent restart
    

11. 校驗安裝

  1. 載入admin客戶端指令碼(在控制節點上!):source admin-openrc.sh
  2. 檢視neytron的代理,以確定是否可以正確地載入這些代理,應當有四個代理(在控制節點上!):neutron agent-list
    +--------------------------------------+--------------------+---------+-------+----------------+---------------------------+
    | id                                   | agent_type         | host    | alive | admin_state_up | binary                    |
    +--------------------------------------+--------------------+---------+-------+----------------+---------------------------+
    | 051543d3-4be3-45b9-a9a2-5bbd3e89a47c | Open vSwitch agent | network | :-)   | True           | neutron-openvswitch-agent |
    | 16bd7da4-b76e-4fbd-9e5f-92b52a8c70a5 | DHCP agent         | network | :-)   | True           | neutron-dhcp-agent        |
    | 2882756c-e965-4070-a105-9b408ef1cebc | L3 agent           | network | :-)   | True           | neutron-l3-agent          |
    | 5c4678e6-4096-44fe-95ad-5c4c26f2cc43 | Metadata agent     | network | :-)   | True           | neutron-metadata-agent    |
    +--------------------------------------+--------------------+---------+-------+----------------+---------------------------+
    

四、在計算節點上安裝和配置Neutron

1. 調整計算節點的網路調優引數

  1. 編輯/etc/sysctl.conf檔案,編輯一些網路調優引數:
    net.ipv4.conf.all.rp_filter=0
    net.ipv4.conf.default.rp_filter=0
    
  2. 使更改立刻生效:sysctl -p

2. 在計算節點上安裝Neutron

  1. 在網路節點上安裝Neutron:
    apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent

3. 配置網路服務的通用元件

網路服務的通用元件包括:校驗機制、訊息佇列和外掛

  1. 編輯檔案/etc/neutron/neutron.conf進行配置

  2. 在[database]部分,註釋掉所有連線資料庫的引數,因為網路節點不能直接訪問資料庫

  3. 在[DEFAULT]和[oslo_messaging_rabbit]兩部分, 配置RabbitMQ訊息佇列的訪問:

    rpc_backend = rabbit
    
    rabbit_host = controller
    rabbit_userid = openstack
    rabbit_password = RABBIT_PASS
    
  4. 在[DEFAULT]和[keystone_authtoken]兩部分,配置身份認證服務的訪問:

    auth_strategy = keystone
    

    注意:修改[keystone_authtoken]部分要註釋掉本部分其他的引數

    auth_uri = http://controller:5000
    auth_url = http://controller:35357
    auth_plugin = password
    project_domain_id = default
    user_domain_id = default
    project_name = service
    username = neutron
    password = NEUTRON_PASS
    
  5. 在[DEFAULT]部分,配置ML2外掛、路由服務和IP地址的重疊:

    core_plugin = ml2
    service_plugins = router
    allow_overlapping_ips = True
    
  6. 可選:在[DEFAULT]部分啟用日誌資訊詳細記錄:

    verbose = True
    

4. 配置ML2外掛

修改檔案:/etc/neutron/plugins/ml2/ml2_conf.ini

  1. 在[ml2]部分,配置啟用flat,VLAN,GRE和VXLAN網路型別驅動,GRE租戶網路型別和OVS機制驅動:

    type_drivers = flat,vlan,gre,vxlan
    tenant_network_types = gre
    mechanism_drivers = openvswitch
    
  2. 在[ml2_type_gre]部分,配置tunnel identifier(id)範圍:

    tunnel_id_ranges = 1:1000
    
  3. 在[securitygroup]部分,啟用安全組、ipset和配置OVS iptables的防火牆驅動:

    enable_security_group = True
    enable_ipset = True
    firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
    
  4. 在[ovs]部分,啟用隧道,配置本地隧道端點和將外部的flat網路對映到br-ex外部網路橋接:

    local_ip = INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS(計算節點上隧道網路的IP地址10.0.1.31)
    enable_tunneling = True
    bridge_mappings = external:br-ex
    
  5. 在[agent]部分,啟用GRE隧道:

    tunnel_types = gre
    

5. 配置Open vSwitch(OVS)服務

  1. 重啟OVS服務:service openvswitch-switch restart

6. 配置計算服務使用網路服務

預設情況下openstack配置計算服務使用傳統網路型別(legacy networking),所以需重新配置計算服務使用neutron來管理網路服務
編輯檔案:/etc/nova/nova.conf

  1. 在[DEFAULT]部分,配置APIs和驅動:

    network_api_class = nova.network.neutronv2.api.API
    security_group_api = neutron
    linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
    firewall_driver = nova.virt.firewall.NoopFirewallDriver
    
  2. 在[neutron] 部分,配置訪問引數

    url = http://controller:9696
    auth_strategy = keystone
    admin_auth_url = http://controller:35357/v2.0
    admin_tenant_name = service
    admin_username = neutron
    admin_password = NEUTRON_PASS
    

7. 完成安裝

  1. 重啟計算服務:service nova-compute restart
  2. 重啟Open vSwitch(OVS)代理:service neutron-plugin-openvswitch-agent restart

8. 校驗安裝

注意:在控制節點上進行校驗

  1. 載入admin客戶端指令碼:source admin-openrc.sh
  2. 檢視neutron的代理,以確定是否可以正確地載入這些代理,輸出中應當有四個代理在網路節點中,在計算節點上有一個代理:
    neutron agent-list

五、建立第一個網路

1. 建立外部網路(在控制節點上)

建立一個外部網路,用於外網訪問例項

  1. 載入admin客戶端指令碼:source admin-openrc.sh
  2. 建立外部網路:
    neutron net-create ext-net --router:external True --provider:physical_network external --provider:network_type flat
  3. 在外部網路上建立一個子網:
    neutron subnet-create ext-net --name ext-subnet --allocation-pool start=FLOATING_IP_START,end=FLOATING_IP_END --disable-dhcp --gateway EXTERNAL_NETWORK_GATEWAY EXTERNAL_NETWORK_CIDR

2. 建立租戶網路(在控制節點上)

  1. 在租戶網路上建立子網:
    neutron subnet-create demo-net --name demo-subnet --gateway TENANT_NETWORK_GATEWAY TENANT_NETWORK_CIDR

3. 在租戶網路上建立路由

在租戶網路上建立路由,並將外部網路和租戶網路新增到路由上

  1. 建立路由:neutron router-create demo-router
  2. 新增路由到demo租戶的子網:neutron router-interface-add demo-router demo-subnet
  3. 新增路由到外部網路:neutron router-gateway-set demo-router ext-net

4. 校驗安裝

用外部網路的一臺主機,測試是否能ping通租戶的路由閘道器:ping -c 4 203.0.113.101

相關文章