在network节点上安装和配置
设定kernel networking参数:
- 编辑
# vi /etc/sysctl.conf
文件:
<pre>net.ipv4.ip_forward=1
</pre>
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
- 使上述变化生效:
# sysctl -p
安装网络服务组件
# apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent \
neutron-l3-agent neutron-dhcp-agent
配置网络服务的通用组件
编辑# vi /etc/neutron/neutron.conf
文件:
在[database]
部分,注释掉connection选项,因为network节点不需要直接访问数据库。
在[DEFAULT]
部分,设定RabbitMQ的访问选项:
<pre>[DEFAULT]
</pre>
...
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS
RABBIT_PASS为RabbitMQ guest账户的密码。
在[DEFAULT]
和[keystone_authtoken]
部分,设定认证服务的访问选项:
<pre>[DEFAULT]
</pre>
...
auth_strategy = keystone
<pre>[keystone_authtoken]
</pre>
...
auth_uri = http://controller:5000/v2.0
identity_uri = http://controller:35357
admin_tenant_name = service
admin_user = neutron
admin_password = NEUTRON_PASS
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]
</pre>
...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
在[DEFAULT]
部分,开启“详细输出日志”选项:
<pre>[DEFAULT]
</pre>
...
verbose = True
设定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]
</pre>
...
type_drivers = flat,gre
tenant_network_types = gre
mechanism_drivers = openvswitch
在[ml2_type_flat]
部分,设定external flat provider network:
<pre>[ml2_type_flat]
</pre>
...
flat_networks = external
在[ml2_type_gre]
部分,设定tunnel ID范围:
<pre>[ml2_type_gre]
</pre>
...
tunnel_id_ranges = 1:1000
在[securitygroup]
部分,启用security groups,ipset, and configure,设定OVS iptables firewall driver:
<pre>[securitygroup]
</pre>
...
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
在[ovs]
部分,启用tunnel,设定local tunnel endpoint,把external flat provider network和br-ex external network brigde绑定起来:
<pre>[ovs]
</pre>
...
local_ip = INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS
enable_tunneling = True
bridge_mappings = external:br-ex
INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS为network节点在tunnel network中的IP地址。
在[agent]
部分,启用GRE tunnels:
<pre>[agent]
</pre>
...
tunnel_types = gre
设定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]
</pre>
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces = True
external_network_bridge = br-ex
router_delete_namespaces = True
在[DEFAULT]
部分,开启“详细输出日志”选项:
<pre>[DEFAULT]
</pre>
...
verbose = True
设定DHCP agent
DHCP agent为虚拟网络提供了DHCP服务。
编辑# vi /etc/neutron/dhcp_agent.ini
文件:
在[DEFAULT]
部分,设定驱动,启用namespaces,启用deletion of defunct DHCP namespaces:
<pre>[DEFAULT]
</pre>
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
use_namespaces = True
dhcp_delete_namespaces = True
在[DEFAULT]
部分,开启“详细输出日志”选项:
<pre>[DEFAULT]
</pre>
...
verbose = True
设定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]
</pre>
...
nova_metadata_ip = controller
在[DEFAULT]
部分,设定metadata proxy shared secret:
<pre>[DEFAULT]
</pre>
...
metadata_proxy_shared_secret = METADATA_SECRET
把METADATA_SECRET替换为合适的密码。
在[DEFAULT]
部分,开启“详细输出日志”选项:
<pre>[DEFAULT]
</pre>
...
verbose = True
- 在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版本不一致,更新完成后重新配置即可正常显示。