十九、neutron-compute安装与配置 compute上root用户进行

概述:

    neutron主要负责为openstack提供网络服务功能,即Network as a Service(NaaS)网络即服务功能,neutron起初nova-network提供,随着网络功能越来越强大,后来发展成为一个独立的项目叫quamtum,由于版权的问题,后来改名为neutronneutron支持插件,如Cisco PluginBrocade PluginOpenvSwitch等插件,由插件组成一个虚拟的大网络(类似于vSphere的分布式交换机),在这基础之上,租户可以定义自己的网络,如虚拟交换机,虚拟机路由器,虚拟机网络,虚拟防火墙(FWaaS)VPN服务(VPNaaS)等功能,即所谓的软件定义网络SDN

    每个tenant都会有自己的一个单独的网络,即内部网络,相关的ip地址成为fix-ip,租户之间的网络隔离有多种隔离技术,常见的包括vlanGREvxlanVLAN通过vlan-id号区分不同tenant的流量,一般只支持4096vlanGRE通过tunnel的方式建立隧道,tenant的流量运行在隧道之上,每个租户拥有自己的一条隧道,相互不可见;vxlan则通过vni的方式构建网络头部,compue之间构建tunnel,每个租户都有自己的隧道,用于网络流量之间的隔离。

 

neutron包括如下组件

 1. neutron-server:负责接收用户发送的请求,转发至后端处理

2. neutron-l3-agent:负责instance和外部网络交互,即DNATSNAT 

3. neutron-dhcp-agent:负责云网络中的动态地址分配

4. neutron-metadata-agent:网络元数据服务

5. neutron-openvswitch-agent :负责二层网络的构建

6. openvswitch二层的OVS插件

 

(1)配置核心网络参数
# vi /etc/sysctl.conf
添加
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
#使配置生效
# sysctl -p

(2)安装neutron网络组件
# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch -y

(3)配置Neutron Keystone 认证
# openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_uri http://controller0:5000
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_host controller0
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_protocol http
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_port 35357
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken admin_tenant_name service
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken admin_user neutron
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken admin_password NEUTRON_PASS

(4)配置rabbitmq连接
# openstack-config --set /etc/neutron/neutron.conf DEFAULT rpc_backend neutron.openstack.common.rpc.impl_kombu
# openstack-config --set /etc/neutron/neutron.conf DEFAULT rabbit_host controller0
# openstack-config --set /etc/neutron/neutron.conf DEFAULT rabbit_port 5672
# openstack-config --set /etc/neutron/neutron.conf DEFAULT rabbit_userid neutron
# openstack-config --set /etc/neutron/neutron.conf DEFAULT rabbit_password NEUTRON_MQPASS
# openstack-config --set /etc/neutron/neutron.conf DEFAULT rabbit_virtual_host /

(5)配置Neutron 使用 ml2 for ovs and gre
# openstack-config --set /etc/neutron/neutron.conf DEFAULT core_plugin neutron.plugins.ml2.plugin.Ml2Plugin
# openstack-config --set /etc/neutron/neutron.conf DEFAULT service_plugins neutron.services.l3_router.l3_router_plugin.L3RouterPlugin
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers gre
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types gre
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers openvswitch
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_gre tunnel_id_ranges 1:1000
#实例隧道接口ip:计算节点ip
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ovs local_ip 192.168.4.30
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ovs tunnel_type gre
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ovs enable_tunneling True
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_security_group True

Networking 服务初始化脚本需要一个象征性的链接/etc/neutron/plugin.ini 指向 ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini。如果这个象征性的链接不存在,请用以下命令创建它:

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

由于一个包的缺陷,Open vSwitch 代理初始化脚本会寻找 Open vSwitch 插件的配置文件,而不是指向 ML2 配置文件的象征性链接 /etc/neutron/plugin.ini。执行以下命令来解决这个问题:

# 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

(6) 配置 Nova 使用Neutron 提供网络服务

# openstack-config --set /etc/nova/nova.conf DEFAULT network_api_class nova.network.neutronv2.api.API
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_url http://controller0:9696
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_auth_strategy keystone
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_admin_tenant_name service
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_admin_username neutron
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_admin_password NEUTRON_PASS
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_admin_auth_url http://controller0:35357/v2.0
# openstack-config --set /etc/nova/nova.conf DEFAULT linuxnet_interface_driver nova.network.linux_net.LinuxOVSInterfaceDriver
# openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver

默认情况下,Compute 使用内部的防火墙服务。由于 Networking 包含了一个防火墙服务,您必须使用nova.virt.firewall.NoopFirewallDriver防火墙驱动来禁用 Compute 的防火墙服务。

# openstack-config --set /etc/nova/nova.conf DEFAULT security_group_api neutron
# openstack-config --set /etc/nova/nova.conf DEFAULT service_neutron_metadata_proxy true
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_metadata_proxy_shared_secret METADATA_SECRET
#以上是访问参数配置,使得nova可以访问neutron网络
备注:配置计算组件使用网络,发布包默认计算组件使用 legacy网络,我们要使用neutron网络的话必须手动配置

(7) 启动服务openvswitch

# service openvswitch start
# chkconfig openvswitch on
#添加网桥br-int
# ovs-vsctl add-br br-int
# service openstack-nova-compute restart
# service neutron-openvswitch-agent restart
# chkconfig neutron-openvswitch-agent on

 

(8)检查agent 是否启动正常

#在compute0节点上检查,查看所有服务的状态
# openstack-service status

#在controller0节点上检查
# source admin-openrc.sh
# neutron agent-list
# openstack-status