二十、neutron-network的安装与配置(在 network上root用户进行)
Openstack的网络一共有5种,其实对于租户网络来说,应该就是4种。所谓Flat模式,并不是租户的网络,而是把虚拟机直接放在 provider networks,就是管理员创建一个网络,让所有的租户直接连接到外网,获得的是公网的IP,不需要经过NAT。
local模式:这主要是给测试使用,只能是all in one,不能再添加节点
GRE模式:隧道数量没有限制,性能有点问题。
Vlan模式:vlan数量有4096的限制
VXlan模式:vlan数量没有限制,性能比GRE好。
网络配置有两种方式:provider网络或者self-service网络
(1) 配置核心网络参数,允许ip forward,允许转发
# vi /etc/sysctl.conf
新增:
net.ipv4.ip_forward=1
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 keysone 认证
# 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 使用ml + openvswitch +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
#GRE网络配置就是内部的IP
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ovs local_ip 192.168.4.20
#启用隧道,配置本地隧道服务,和映射外部 flat 私有网络到 br-ex 外部网桥
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ovs bridge_mappings external:br-ex
#代理隧道类型采用gre
# 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) 配置L3
# openstack-config --set /etc/neutron/l3_agent.ini DEFAULT verbose True
#L3接口驱动程序设置,我们在这儿使用ovs接口驱动
# openstack-config --set /etc/neutron/l3_agent.ini DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver
# openstack-config --set /etc/neutron/l3_agent.ini DEFAULT use_namespaces True
# openstack-config --set /etc/neutron/l3_agent.ini DEFAULT external_network_bridge br-ex
#启用删除路由命名空间失效
# openstack-config --set /etc/neutron/l3_agent.ini DEFAULT router_delete_namespaces True
(7) 配置dhcp agent
# openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT verbose True
# openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver
# openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT dhcp_driver neutron.agent.linux.dhcp.Dnsmasq
# openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT use_namespaces True
#启用失效删除 DHCP 命令空间
# openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT dhcp_delete_namespaces True
(8) 因为采用GRE网络,你需要把MTU设置为1400,默认的是1500
#创建/etc/neutron/dnsmasq-neutron.conf并添加下面配置
# vi /etc/neutron/dnsmasq-neutron.conf
新建并加入以下内容:
dhcp-option-force=26,1454
#写入配置
# openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT dnsmasq_config_file /etc/neutron/dnsmasq-neutron.conf
#kill掉正在run的dnsmasq进程
# pkill dnsmasq
(9) 配置metadata agent,元数据代理提供配置信息,像实例凭证
# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT auth_url http://controller0:5000/v2.0
# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT auth_region regionOne
# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT admin_tenant_name service
# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT admin_user neutron
# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT admin_password NEUTRON_PASS
#实例访问参数和元数据代理ip
# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT nova_metadata_ip controller0
#元数据代理共享密钥 METADATA_SECRET,你可以用自己独特的字符串进行加密,我们这里设置为METADATA_SECRET
# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT metadata_proxy_shared_secret METADATA_SECRET
# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT verbose True
(10) 在控制节点controller0上配置元数据代理共享
注: 本步骤第10操作步骤需要在controller0节点进行。
# openstack-config --set /etc/nova/nova.conf neutron service_metadata_proxy True
#此处的METADATA_SECRET必须与网络节点的一模一样
# openstack-config --set /etc/nova/nova.conf neutron metadata_proxy_shared_secret METADATA_SECRET
#在控制节点重启计算服务
# service openstack-nova-api restart
(11) 回到网络节点继续配置,启动服务openvswitch
# service openvswitch start
# chkconfig openvswitch on
#配置OVS
OVS服务提供实例底层虚拟网络框架;
集成网桥 br-int 处理实例内部网络流量;
外部网桥 br-ex 处理外部网络流量。
#添加网桥br-int
# ovs-vsctl add-br br-int
#添加OVS外部桥
# ovs-vsctl add-br br-ex
#将网络接口enp0s8挂接到网桥br-ex上,添加混杂模式网卡到 br-ex,enp0s8是自己上外网的网卡
# ovs-vsctl add-port br-ex enp0s8
# service openvswitch restart
(12) 修改enp0s8和br-ext 网络配置
#enp0s8是自己上外网的网卡
# mv /etc/sysconfig/network-scripts/ifcfg-enp0s8 /etc/sysconfig/network-scripts/ifcfg-enp0s8.bak
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
#把原来的ifcfg-enp0s8修改名字为*.bak,新建填下部分
DEVICE=enp0s8
ONBOOT=yes
BOOTPROTO=none
PROMISC=yes
# vi /etc/sysconfig/network-scripts/ifcfg-br-ex
#新建填入下部分
DEVICE=br-ex
TYPE=Bridge
ONBOOT=no
BOOTPROTO=none
# service network restart
#启动br-ex 网桥设备
# ip link set br-ex up
#为br-ext 添加ip
# ip addr add 172.16.0.20/24 dev br-ex
(13) 启动Neutron 服务
# service neutron-openvswitch-agent start
# service neutron-dhcp-agent start
# service neutron-l3-agent start
# service neutron-metadata-agent start
# chkconfig neutron-openvswitch-agent on
# chkconfig neutron-dhcp-agent on
# chkconfig neutron-l3-agent on
# chkconfig neutron-metadata-agent on
(14)验证
#在controller0节点上,查看neutron服务状态
# source admin-openrc.sh
# neutron agent-list
#添加controller0的enp0s8网卡测试用,如果已存在则忽略:
# cp ifcfg-eth0 ifcfg-enp0s8
# vi ifcfg-enp0s8
DEVICE=enp0s8
#HWADDR=08:00:27:xx:xx:xx
TYPE=Ethernet
UUID=c53f6a39-8410-42de-91c6-18bb8ab183e5
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=172.16.0.10
NETMASK=255.255.255.0
GATEWAY=172.16.0.1
# service network restart
#Network0节点上
每次重启虚拟机,都要重新加一次IP地址
# ip link set br-ex up
# ip addr add 172.16.0.20/24 dev br-ex
查看网络:
# ifconfig 或ip addr
# br-ex br-int br-tun eth0 eth1 eth2
分别检查:
在controller0虚拟机中ping172.16.0.20和ping 172.16.0.30
在network0虚拟机中ping 172.16.0.10和ping 172.16.0.30
在compute0虚拟机中ping172.16.0.10和ping 172.16.0.20
#如果不通,检查对应主机对应网卡的MAC和IP是否正确。