十六、neutron的配置与安装(在controller上root用户进行)
(1)neutron概述
neutron主要负责为openstack提供网络服务功能,即Network as a Service(NaaS)网络即服务功能,neutron起初由nova-network提供,随着网络功能越来越强大,后来发展成为一个独立的项目叫quamtum,由于版权的问题,后来改名为neutron。neutron支持不同的插件,如Cisco Plugin,Brocade Plugin,OpenvSwitch等插件,由插件组成一个虚拟的大网络(类似于vSphere的分布式交换机),在这基础之上,租户可以定义自己的网络,如虚拟交换机,虚拟机路由器,虚拟机网络,虚拟防火墙(FWaaS),VPN服务(VPNaaS)等功能,即所谓的软件定义网络SDN。
每个tenant都会有自己的一个单独的网络,即内部网络,相关的ip地址成为fix-ip,租户之间的网络隔离有多种隔离技术,常见的包括vlan、GRE和vxlan,VLAN通过vlan-id号区分不同tenant的流量,一般只支持4096个vlan;GRE则通过tunnel的方式建立隧道,tenant的流量运行在隧道之上,每个租户拥有自己的一条隧道,相互不可见;vxlan则通过vni的方式构建网络头部,compue之间构建tunnel,每个租户都有自己的隧道,用于网络流量之间的隔离。
neutron包括如下组件:
1. neutron-server:负责接收用户发送的请求,转发至后端处理
2. neutron-l3-agent:负责instance和外部网络交互,即DNAT和SNAT
3. neutron-dhcp-agent :负责云网络中的动态地址分配
4. neutron-metadata-agent:网络元数据服务
5. neutron-openvswitch-agent:负责二层网络的构建
6. openvswitch:二层的OVS插件
注意: neutron的配置比较复杂,需要在controller上配置,需要在network和所有的compute上配置。
(2)neutron的安装与配置
#创建数据库并授权
# mysql -uroot -popenstack
> CREATE DATABASE neutron;
> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';
> quit
# mysql -uneutron -pNEUTRON_DBPASS -e "show databases;"
#配置keystone用户
#配置keystone用户并授权
# source /root/admin-openrc.sh
# keystone user-list
#创建neutron用户
# keystone user-create --name neutron --pass NEUTRON_PASS
#连接admin角色和neuron用户
# keystone user-role-add --user neutron --tenant service --role admin
# keystone user-role-list --user neutron --tenant service
#配置service并注册endpoint
#创建neutron服务实体
# keystone service-create --name neutron --type network --description "OpenStack Networking"
#查询keystone服务列表
# keystone service-list
#创建网络服务的api端口,这里XXX部分即是上条命令执行结果显示的ID
# keystone endpoint-create --service XXX --publicurl http://controller0:9696 --adminurl http://controller0:9696 --internalurl http://controller0:9696 --region regionOne
#安装neutron所需的软件包
# yum -y install openstack-neutron openstack-neutron-ml2 python-neutronclient
#配置neutron,neutron的配置包括:数据库连接,keystone认证,rabbitmq,拓扑状态和插件的配置
#配置数据库连接
# openstack-config --set /etc/neutron/neutron.conf database connection mysql://neutron:NEUTRON_DBPASS@controller0/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/v2.0
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken identity_uri http://controller0: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
#查看是否修改成功
# cat /etc/neutron/neutron.conf |more
#配置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 /
# cat /etc/neutron/neutron.conf|more
#neutron使用二层插件
# 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/neutron.conf DEFAULT allow_overlapping_ips True
# cat /etc/neutron/neutron.conf|more
#配置neutron和nova状态变更
# openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_status_changes True
# openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_data_changes True
# openstack-config --set /etc/neutron/neutron.conf DEFAULT nova_url http://controller0:8774/v2
# openstack-config --set /etc/neutron/neutron.conf DEFAULT nova_admin_auth_url http://controller0:35357/v2.0
# openstack-config --set /etc/neutron/neutron.conf DEFAULT nova_region_name regionOne
# openstack-config --set /etc/neutron/neutron.conf DEFAULT nova_admin_username nova
#以上是网络拓扑改变设置
# cat /etc/neutron/neutron.conf|more
#查看service租户的id号码
# keystone tenant-list |grep service
#这里XXX部分即是上条命令执行结果显示的ID
# openstack-config --set /etc/neutron/neutron.conf DEFAULT nova_admin_tenant_id XXX
# openstack-config --set /etc/neutron/neutron.conf DEFAULT nova_admin_password NOVA_PASS
#以上是网络拓扑改变设置
配置OVS二层插件
ml2使用OVS机制建立实例的虚拟网络框架.因为控制节点不需要处理实例的网络流量,所以控制节点不用安装OVS 。
OVS有关配置:
OVS.integration_bridge:br-int
OVS.tunnel_bridge:br-tun
OVS.local_ip:GRE网络使用:就是内部的IP,这里就是eth1上的IP地址
OVS.tunnel_id_ranges:1:1000,就是ID的范围,GRE网络的隧道数量。
OVS.bridge_mappings :physnet1:br-eth1,vlan模式使用该参数
OVS.network_vlan_ranges:physnet1:10:20,vlan模式使用该参数
#网络类型:flat和gre(通用路由封装),从网络类型驱动命名空间加载网络类型列表
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers flat,gre
#租户网络类型
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types gre
#ml2采用ovs机制
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers openvswitch
#可用于租户网络配置的隧道id范围
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_gre tunnel_id_ranges 1:1000
#使用安全组
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_security_group True
#使用ipset加速iptables安全组,使ipset支持ipset安装在L2代理节点上
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_ipset True
#防火墙设置
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
#配置nova支持neutron (注意,修改的是nova的配置文件)
# openstack-config --set /etc/nova/nova.conf DEFAULT network_api_class nova.network.neutronv2.api.API
# openstack-config --set /etc/nova/nova.conf DEFAULT security_group_api neutron
# 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
# openstack-config --set /etc/nova/nova.conf neutron url http://controller0:9696
# openstack-config --set /etc/nova/nova.conf neutron auth_strategy keystone
# openstack-config --set /etc/nova/nova.conf neutron admin_auth_url http://controller0:35357/v2.0
# openstack-config --set /etc/nova/nova.conf neutron admin_tenant_name service
# openstack-config --set /etc/nova/nova.conf neutron admin_username neutron
# openstack-config --set /etc/nova/nova.conf neutron admin_password NEUTRON_PASS
#以上是访问参数配置,使得nova可以访问neutron网络
备注:
此项操作是配置计算组件使用网络 ,发布包默认计算组件使用 legacy网络,我们要使用neutron网络的话必须手动配置
#启动neutron-server服务
# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
#数据库同步
# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
# mysql -uneutron -pNEUTRON_DBPASS -e 'show tables from neutron;'
#重启nova服务,和neutron联动
# service openstack-nova-api restart
# service openstack-nova-scheduler restart
# service openstack-nova-conductor restart
#重启neutron-server
# service neutron-server start
# chkconfig neutron-server on
#controller0上校验neutron的配置
# source admin-openrc.sh
#列出创建的加载扩展的neutron-server进程
# neutron ext-list
#查看所有服务的状态
# openstack-service status
# openstack-status
日志文件路径:/var/log/neutron