OpenStack安装流程(juno版)- 添加网络服务(neutron)- network节点

在network节点上安装和配置

设定kernel networking参数:

  1. 编辑# vi /etc/sysctl.conf文件:

<pre>net.ipv4.ip_forward=1<br>net.ipv4.conf.all.rp_filter=0<br>net.ipv4.conf.default.rp_filter=0</pre>

  1. 使上述变化生效:

# sysctl -p

安装网络服务组件

# apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent \<br>neutron-l3-agent neutron-dhcp-agent

配置网络服务的通用组件

编辑# vi /etc/neutron/neutron.conf文件:

[database]部分,注释掉connection选项,因为network节点不需要直接访问数据库。

[DEFAULT]部分,设定RabbitMQ的访问选项:
<pre>[DEFAULT]<br>...<br>rpc_backend = rabbit<br>rabbit_host = controller<br>rabbit_password = RABBIT_PASS</pre>
RABBIT_PASS为RabbitMQ guest账户的密码。

[DEFAULT][keystone_authtoken]部分,设定认证服务的访问选项:
<pre>[DEFAULT]<br>...<br>auth_strategy = keystone</pre>
<pre>[keystone_authtoken]<br>...<br>auth_uri = <a href="http://controller" rel="nofollow noreferrer">http://controller</a>:5000/v2.0<br>identity_uri = <a href="http://controller" rel="nofollow noreferrer">http://controller</a>:35357<br>admin_tenant_name = service<br>admin_user = neutron<br>admin_password = NEUTRON_PASS</pre>
NEUTRON_PASS为创建neutron用户时使用的密码。在[keystone_authtoken]部分,注释掉 auth_host,auth_port,和auth_protocol的选项,因为identity_uri选项是直接代替它们的。

[DEFAULT]部分,开启Modular Layer 2(ML2)plug-in选项,设定router service和overlapping IP addresses选项:
<pre>[DEFAULT]<br>...<br>core_plugin = ml2<br>service_plugins = router<br>allow_overlapping_ips = True</pre>

[DEFAULT]部分,开启“详细输出日志”选项:
<pre>[DEFAULT]<br>...<br>verbose = True</pre>

设定Modular Layer 2(ML2)plug-in

编辑# vi /etc/neutron/plugins/ml2/ml2_conf.ini文件:

[ml2]部分,启用flat和generic routing encapsulation(GRE)网络类型的驱动( network type drivers),GRE 租户网络和OVS机制的驱动:
<pre>[ml2]<br>...<br>type_drivers = flat,gre<br>tenant_network_types = gre<br>mechanism_drivers = openvswitch</pre>

[ml2_type_flat]部分,设定external flat provider network:
<pre>[ml2_type_flat]<br>...<br>flat_networks = external</pre>

[ml2_type_gre]部分,设定tunnel ID范围:
<pre>[ml2_type_gre]<br>...<br>tunnel_id_ranges = 1:1000</pre>

[securitygroup]部分,启用security groups,ipset, and configure,设定OVS iptables firewall driver:
<pre>[securitygroup]<br>...<br>enable_security_group = True<br>enable_ipset = True<br>firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver</pre>

[ovs]部分,启用tunnel,设定local tunnel endpoint,把external flat provider network和br-ex external network brigde绑定起来:
<pre>[ovs]<br>...<br>local_ip = INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS<br>enable_tunneling = True<br>bridge_mappings = external:br-ex</pre>
INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS为network节点在tunnel network中的IP地址。

[agent]部分,启用GRE tunnels:
<pre>[agent]<br>...<br>tunnel_types = gre</pre>

设定Layer-3(L3)agent

Layer-3(L3)agent为虚拟网络提供了routing service。

编辑# vi /etc/neutron/l3_agent.ini文件:

[DEFAULT]部分,设定驱动,启用network namespace,设定external network bridge,启用deletion of defunct router namespaces:
<pre>[DEFAULT]<br>...<br>interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver<br>use_namespaces = True<br>external_network_bridge = br-ex<br>router_delete_namespaces = True</pre>

[DEFAULT]部分,开启“详细输出日志”选项:
<pre>[DEFAULT]<br>...<br>verbose = True</pre>

设定DHCP agent

DHCP agent为虚拟网络提供了DHCP服务。

编辑# vi /etc/neutron/dhcp_agent.ini 文件:

[DEFAULT]部分,设定驱动,启用namespaces,启用deletion of defunct DHCP namespaces:
<pre>[DEFAULT]<br>...<br>interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver<br>dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq<br>use_namespaces = True<br>dhcp_delete_namespaces = True</pre>

[DEFAULT]部分,开启“详细输出日志”选项:
<pre>[DEFAULT]<br>...<br>verbose = True</pre>

设定metadata agent

metadata agent提供了配置信息,比如实例的证书。

  1. 编辑# vi /etc/neutron/metadata_agent.ini文件:

    [DEFAULT]部分,设定访问参数:
    <pre>[DEFAULT]

...
auth_url = http://controller:5000/v2.0
auth_region = regionOne
admin_tenant_name = service
admin_user = neutron
admin_password = NEUTRON_PASS</pre>
NEUTRON_PASS为创建neutron用户时使用的密码。

[DEFAULT]部分,设定metadata host:
<pre>[DEFAULT]<br>...<br>nova_metadata_ip = controller</pre>

[DEFAULT]部分,设定metadata proxy shared secret:
<pre>[DEFAULT]<br>...<br>metadata_proxy_shared_secret = METADATA_SECRET</pre>
把METADATA_SECRET替换为合适的密码。

[DEFAULT]部分,开启“详细输出日志”选项:
<pre>[DEFAULT]<br>...<br>verbose = True</pre>

  1. 在controller节点,编辑# vi /etc/nova/nova.conf文件:
    [neutron]部分,启用metadata proxy,设定密码选项:
    <pre>[neutron]

...
service_metadata_proxy = True
metadata_proxy_shared_secret = METADATA_SECRET</pre>
把METADATA_SECRET替换为metadata proxy中设定的密码。

  1. 在controller节点,重启计算的API服务:
    # service nova-api restart

设定Open vSwitch(OVS)服务:

OVS服务为实例提供虚拟网络框架。integration bridge br-int处理内网通信,external bridge br-ex处理外网通信。external bridge需要物理外网提供一个访问端口,来连接物理网络和虚拟网络。

  1. 重启OVS服务:

# service openvswitch-switch restart

  1. 添加external bridge:

# ovs-vsctl add-br br-ex

  1. 把端口添加到external bridge中,来连接物理外网:

# ovs-vsctl add-port br-ex INTERFACE_NAME
INTERFACE_NAME替换为实际的interface name,本文的网络配置方案下为eth2

完成安装

重启网络服务:
# service neutron-plugin-openvswitch-agent restart
# service neutron-l3-agent restart
# service neutron-dhcp-agent restart
# service neutron-metadata-agent restart

验证操作

在controller节点上进行如下操作。

  1. 启动admin证书:
    $ source admin-openrc.sh
  2. 显示agent列表,验证neutron agent已成功启动:
    <pre>$ neutron agent-list
idagent_typehostaliveadmin_state_upbinary
2be5bff5-2d4b-4308-9d8e-218f86f0884eDHCP agentnetwork:-)Trueneutron-dhcp-agent
35e5874c-0e45-44b1-95e5-f5ac94a1b9d5L3 agentnetwork:-)Trueneutron-l3-agent
7debcbec-b316-490e-baa1-1a6bb74fcbbbOpen vSwitch agentnetwork:-)Trueneutron-openvswitch-agent
c35af91b-9f6b-4632-bc10-aa67c8a75ae1Metadata agentnetwork:-)Trueneutron-metadata-agent

+--------------------------------------+--------------------+---------+-------+----------------+---------------------------+</pre>

安装时出现的问题及解决方法

输入neutron agent-list后,显示为空白。在网上搜索后,发现有个解决方案为:官方文档中/etc/neutron/neutron.conf文件中rpc_backend设置为rpc_backend=rabbit,注释掉,改用默认的rpc_backend = neutron.openstack.common.rpc.impl_kombu,重启服务后,在controller节点上即可如官方文档般正确显示。后来在重新安装的过程中发现,实际产生问题的原因是network节点上的OpenStack库没有更新到最新版本,与controller节点上的OpenStack版本不一致,更新完成后重新配置即可正常显示。

相关推荐