OpenStack安装流程(juno版)- 添加网络服务(neutron)- network节点
在network节点上安装和配置
设定kernel networking参数:
- 编辑
# 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>
- 使上述变化生效:
# 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提供了配置信息,比如实例的证书。
- 编辑
# 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>
- 在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中设定的密码。
- 在controller节点,重启计算的API服务:
# service nova-api restart
设定Open vSwitch(OVS)服务:
OVS服务为实例提供虚拟网络框架。integration bridge br-int处理内网通信,external bridge br-ex处理外网通信。external bridge需要物理外网提供一个访问端口,来连接物理网络和虚拟网络。
- 重启OVS服务:
# service openvswitch-switch restart
- 添加external bridge:
# ovs-vsctl add-br br-ex
- 把端口添加到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节点上进行如下操作。
- 启动
admin
证书:$ source admin-openrc.sh
- 显示agent列表,验证neutron agent已成功启动:
<pre>$ neutron agent-list
id | agent_type | host | alive | admin_state_up | binary |
---|---|---|---|---|---|
2be5bff5-2d4b-4308-9d8e-218f86f0884e | DHCP agent | network | :-) | True | neutron-dhcp-agent |
35e5874c-0e45-44b1-95e5-f5ac94a1b9d5 | L3 agent | network | :-) | True | neutron-l3-agent |
7debcbec-b316-490e-baa1-1a6bb74fcbbb | Open vSwitch agent | network | :-) | True | neutron-openvswitch-agent |
c35af91b-9f6b-4632-bc10-aa67c8a75ae1 | Metadata agent | network | :-) | True | neutron-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版本不一致,更新完成后重新配置即可正常显示。