安装与配置Neutron2

这一节描述在网络节点上安装与配置Neutron服务。

1、配置前的准备工作

在安装与配置Neutron服务前,首先开启Linux内核对数据包的转发功能:

a、编辑/etc/sysctl.conf,包含如下内容

net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0

b、使改变立即生效

 $sysctl -p

c、添加neutron用户

useradd neutron

2、在Network节点上安装Neutron

安装openvswitch相关

yum install openvswitch* dnsmasq-utils -y

安装neutron

git clone git://git.openstack.org/openstack/neutron
cd neutron
pip install -r requirements.txt
python setup.py install

新建/etc/neutron,拷贝配置文件

mkdir /etc/neutron
cp  -r ./etc/*  /etc/neutron/

新建/var/log/neutron 及用户neutron,并修改文件夹权限

mkdir  /var/log/neutron
useradd neutron
chown -R neutron:neutron /var/log/neutron

2、配置Neutron通用组建

网络通用服务组建的配置包括数据库、认证服务、消息队列、插件。

编辑/etc/neutron/neutron.conf文件,完成如下步骤:

a、注释掉[database]中的connection选项。因为网络节点不需要直接连接数据库。


b、配置[default]区、[oslo_messaging_rabbit],配置消息队列的访问

[DEFAULT]
...
rpc_backend = rabbit
 
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

将RABBIT_PASS替换为自己的数据库密码

c、配置[DEFAULT]、[keystone_authtoken]区,配置认证服务的访问:

[DEFAULT]
...
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

将NEUTRON_PASS替换为自己的密码

d、配置[DEFAULT]区,使能ml2插件、路由服务、浮动IP

[DEFAULT]
...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True

e、配置verbose 与log_path

[DEFAULT]
...
verbose = True
...
log_dir = /var/log/neutron

3、配置二层插件ML2

ML2插件使用OpenVswitch、代理操作虚拟网络架构的网络。在controller节点中,一般不用操作实例的网络,所有不需要OVS。

编辑/etc/neutron/neutron/plugins/ml2/ml2_conf.ini,完成如下步骤:

 a、在[ml2]区,使得flat、VLAN、GRE、VXLAN网络类型的驱动,租户网络类型为GRE,采用OpenVswitch机制

[ml2]
...
type_drivers = flat,vlan,gre,vxlan
tenant_network_types = gre
mechanism_drivers = openvswitch

b、在[ml2_type_flat]区,配置外部的扁平ip

[ml2_type_flat]
...
flat_networks = external

c、在[ml2_type_gre]区配置隧道id的范围:

[ml2_type_gre]
...
tunnel_id_ranges = 1:1000

d、在[securitygroup]配置如下,使能ipset、配置OVS防火墙驱动

[securitygroup]
...
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

e、在[ovs]区,使能隧道,配置本地隧道端点,映射外部扁平网络到br-ex网桥

[ovs]
...
local_ip = INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS
bridge_mappings = external:br-ex

使用网络节点的隧道网口的IP替换INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS

f、在[agent]区,使能GRE隧道

[agent]
...
tunnel_types = gre

4、配置三层代理L3

三层L3代理为虚拟网络提供路由服务。

编辑/etc/neutron/l3_agent.ini,完成如下步骤:

a、在[DEFAULT]区,配置接口驱动,外部网桥,启动删除已经失效的路由命名空间

[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
external_network_bridge =
router_delete_namespaces = True

external_network_bridge为空值表示在一个代理上可以使用多个外部网络。

b、(选项)配置verbose 与log_path

[DEFAULT]
...
verbose = True
...
log_dir = /var/log/neutron

若没有/var/log/neutron,请执行如下操作

mkdir /var/log/neutron
chown -R neutron:neutron /var/log/neutron


5、配置DHCP代理

DHCP代理为虚拟网络提供dhcp服务。

编辑/etc/neutron/dhcp_agent.ini,完成如下步骤:

a、在[DEFAULT]区,配置接口驱动,DHCP驱动,启动删除已经失效的DHCP命名空间

[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
dhcp_delete_namespaces = True


b、(选项)配置verbose 与log_path

[DEFAULT]
...
verbose = True
...
log_dir = /var/log/neutron

若没有/var/log/neutron,请执行如下操作

mkdir /var/log/neutron
chown -R neutron:neutron /var/log/neutron



6、配置metadata代理

metadata代理提供配置信息服务,如实例的认证信息。

编辑 /etc/neutron/metadata_agent.ini,完成如下步骤:

a、在[DEFAULT]配置访问参数

[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

将NEUTRON_PASS替换为你的密码。



b、在[DEFAULT]配置metadata主机

[DEFAULT]
...
nova_metadata_ip = controller


c、在[DEFAULT]配置metadata代理密码

[DEFAULT]
...
metadata_proxy_shared_secret = METADATA_SECRET

将METADATA_SECRET替换为你的密码。



d、(选项)配置verbose 与log_path

[DEFAULT]
...
verbose = True
...
log_dir = /var/log/neutron

若没有/var/log/neutron,请执行如下操作

mkdir /var/log/neutron
chown -R neutron:neutron /var/log/neutron

控制节点,编辑/etc/nova/nova.conf,完成如下步骤:

a、在[neutron]区,使能metadata代理与配置其共享密码

[neutron]
...
service_metadata_proxy = True
metadata_proxy_shared_secret = METADATA_SECRET

将METADATA_SECRET替换为你的密码。

b、在控制节点重启nova-api服务

$systemctl restart nova-api.service

7、配置Open vSwitch(OVS)服务

OVS服务为虚拟主机提供整个虚拟网络的架构,其中br-int为内部虚拟机提供网络连接,br-ext提供外部网络连接服务。外部网桥需要一个物理网口来提供外部网络的访问,这个物理网口在我们的网络环境中,连接着虚拟与现实网络。

a、启动、设置OVS服务开机自启动

$ systemctl start openvswitch.service
$ systemctl enable openvswitch.service

b、添加外部网桥

$ ovs-vsctl add-br br-ex

c、添加一个物理网口到外部网桥

$ ovs-vsctl add-port br-ex INTERFACE_NAME

将INTERFACE_NAME替换为你的物理网口

注意:需要禁用网卡驱动的generic receive offload (GRO)来获得较大的内部与外部网络流量。GRO有点类似于Nagle算法,其尝试将小包累积成大包发送。

使用如下命令,临时的禁用gro

ethtool -K INTERFACE_NAME gro off

8、完成安装

a、创建服务脚本

创建并编辑 /usr/lib/systemd/system/neutron-openvswitch-agent.service 

[Unit]
Description=OpenStack Neutron Open vSwitch Agent
After=syslog.target network.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/neutron-openvswitch-agent --config-file /etc/neutron/plugin.ini --log-file /var/log/neutron/openvswitch-agent.log 
PrivateTmp=true
KillMode=process

[Install]
WantedBy=multi-user.target

创建并编辑    /usr/lib/systemd/system/neutron-l3-agent.service

[Unit]
Description=OpenStack Neutron Layer 3 Agent
After=syslog.target network.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/neutron-l3-agent --config-file /etc/neutron/l3_agent.ini
PrivateTmp=false
KillMode=process

[Install]
WantedBy=multi-user.target

创建并编辑    /usr/lib/systemd/system/neutron-dhcp-agent.service

[Unit]
Description=OpenStack Neutron DHCP Agent
After=syslog.target network.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/neutron-dhcp-agent --config-file /etc/neutron/dhcp_agent.ini  --log-file /var/log/neutron/dhcp-agent.log
PrivateTmp=false
KillMode=process

[Install]
WantedBy=multi-user.target


创建并编辑    /usr/lib/systemd/system/neutron-metadata-agent.service

[Unit]
Description=OpenStack Neutron Metadata Agent
After=syslog.target network.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/neutron-metadata-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/metadata_agent.ini --log-file /var/log/neutron/metadata-agent.log
PrivateTmp=false
KillMode=process

[Install]
WantedBy=multi-user.target

b、网络服务的初始化脚本包含了一个指向/etc/neutron/neutron/plugins/ml2/ml2_conf.ini的 /etc/neutron/plugin.ini文件,所以使用如下命令生产软链接

ln -s /etc/neutron/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

c、由于一个bug,Open vSwitch代理初始化时需要显示地去寻找其配置文件,并且不能使用软连接,所有执行如下命令,修复他

# cp /usr/lib/systemd/system/neutron-openvswitch-agent.service \
  /usr/lib/systemd/system/neutron-openvswitch-agent.service.orig
# sed -i 's,plugins/openvswitch/ovs_neutron_plugin.ini,plugin.ini,g' \
  /usr/lib/systemd/system/neutron-openvswitch-agent.service

d、启动并设置开机启动服务

$ systemctl start  neutron-openvswitch-agent.service neutron-l3-agent.service \
  neutron-dhcp-agent.service neutron-metadata-agent.service \
  neutron-ovs-cleanup.service
$ systemctl enable neutron-openvswitch-agent.service neutron-l3-agent.service \
  neutron-dhcp-agent.service neutron-metadata-agent.service

9、验证安装

a、加载admin-openrc.sh,设置全局变量

$ source admin-openrc.sh

b、显示agents验证成功启动的neutron agents

$ neutron agent-list
+--------------------------------------+--------------------+---------+-------+----------------+---------------------------+
| id                                   | agent_type         | host    | alive | admin_state_up | binary                    |
+--------------------------------------+--------------------+---------+-------+----------------+---------------------------+
| 30275801-e17a-41e4-8f53-9db63544f689 | Metadata agent     | network | 🙂   | True           | neutron-metadata-agent    |
| 4bd8c50e-7bad-4f3b-955d-67658a491a15 | Open vSwitch agent | network | 🙂   | True           | neutron-openvswitch-agent |
| 756e5bba-b70f-4715-b80e-e37f59803d20 | L3 agent           | network | 🙂   | True           | neutron-l3-agent          |
| 9c45473c-6d6d-4f94-8df1-ebd0b6838d5f | DHCP agent         | network | 🙂   | True           | neutron-dhcp-agent        |
+--------------------------------------+--------------------+---------+-------+----------------+---------------------------+




Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
永久连接: http://www.nfvschool.cn/?p=405
标签:

发表评论