从源码安装配置 Neutron 开发环境 - 文章教程

从源码安装配置 Neutron 开发环境

发布于 2021-03-15 字数 7204 浏览 1058 评论 0

安装配置 havana 版本 nova/glance/keystone 服务

安装配置过程略

修改 nova.conf 中与 neutron 相关的配置

network_api_class=nova.network.neutronv2.api.API
neutron_url=http://%neutron_host%:9696
neutron_admin_auth_url=http://%neutron_admin_host%:5000/v2.0
neutron_admin_username=%neutron_admin_user%
neutron_admin_password=%neutron_admin_pw%
neutron_admin_tenant_name=service=%neutron_admin_tenant%
neutron_region_name=neutron=%neutron_region%
neutron_auth_strategy=keystone
neutron_ovs_bridge=br-int

libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtOpenVswitchDriver

编译安装 Open vSwitch

确认内核版本

确认kernel版本 =3.8, kernel在3.8版本以后才支持vxlan

安装依赖

请根据源码目录下的INSTALL文件确认build-essential, libc, libssl, clang, iproute2, linux-headers, autoconf, automake, python, perl等包正确安装并且版本符合要求.

获得源代码

% git clone git://git.openvswitch.org/openvswitch

通过制作deb安装包安装openvswitch(推荐)

将 openvswitch 源码编译成 deb 安装包

% cd openvswitch

% dpkg-buildpackage -b -rfakeroot

打包完成后, 生成的 openvswitch deb 安装包默认存放在上一级目录下

安装 openvswitch 安装包

% dpkg -i openvswitch-common_1.12.90-1_amd64.deb
% dpkg -i openvswitch-controller_1.12.90-1_amd64.deb
% dpkg -i openvswitch-datapath-dkms_1.12.90-1_all.deb
% dpkg -i openvswitch-pki_1.12.90-1_all.deb
% dpkg -i openvswitch-switch_1.12.90-1_amd64.deb
% dpkg -i openvswitch-test_1.12.90-1_all.deb

启动openvswitch服务

% sudo service openvswitch-switch restart

通过编译源代码手动安装openvswitch

configure

% ./boot.sh
% ./configure --prefix=/usr --with-linux=/lib/modules/`uname -r`/build

make & install

% make
% make install
% make modules_install
% modprobe openvswitch

启动openvswitch服务

% mkdir -p /usr/local/etc/openvswitch
% ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
% ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock
               --remote=db:Open_vSwitch,Open_vSwitch,manager_options
               --private-key=db:Open_vSwitch,SSL,private_key
               --certificate=db:Open_vSwitch,SSL,certificate
               --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert
               --pidfile --detach
% ovs-vsctl --no-wait init
% ovs-vswitchd --pidfile --detach

确认openvswitch正常运行

  • ovsdb-server, ovs-vswitchd两个进程正常运行
  • sudo ovs-vsctl show命令无错误输出

编译安装 Neutron 服务

获得源代码

% git clone https://github.com/openstack/neutron.git

安装 neutron

请根据需要选择neutron的版本, 这里使用的是master分支的最新代码

% cd neutron

% git checkout master

% python setup.py build

% sudo python setup.py install

修改 neutron.conf 中的相关选项

常规选项请自行修改, 这里列举一些关键选项的配置

ML2 configs

[ml2]
# ml2 plugin configs
type_drivers = vxlan,gre,vlan,local
tenant_network_types = vxlan,gre,vlan,local

[ml2_type_vxlan]
vni_ranges=1:1000
vxlan_group=239.1.1.1

DHCP agent

[DEFAULT]
# dhcp-agent configs
ovs_use_veth = True
enable_isolated_metadata = True
use_namespaces = True

L3 agent

[DEFAULT]
# l3-agent configs
# OVS based plugins (OVS, Ryu, NEC) that supports L3 agent
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver

Open vSwitch agent

[agent]
# openvswitch plugin configs
tunnel_types = vxlan,gre

[ovs]
# openvswitch plugin configs
local_ip = 10.120.120.31
#bridge_mappings = physnet1:br-eth1.301
tenant_network_type = vxlan
# vlan type
#network_vlan_ranges =
enable_tunneling = True
tunnel_type = vxlan
tunnel_id_ranges = 1:1000

启动 neutron 服务

主节点

  • neutron-server
  • neutron-dhcp-agent
  • neutron-openvswitch-agent

从节点

  • neutron-openvswitch-agent

建立 L2 网络

建立 vxlan 隧道网络

% neutron net-create --provider:network_type vxlan
                     --provider:segmentation_id 10
                     --tenant-id TENANT_ID --shared
                     net1

建立 gre 隧道网络

% neutron net-create --provider:network_type gre
                     --provider:segmentation_id 20
                     --tenant-id TENANT_ID --shared
                     net2

建立 L3 网络

% neutron subnet-create net1 10.0.10.0/24

% neutron subnet-create net2 10.0.20.0/24

建立虚拟机 使用 neutron 的网络

% nova boot --image debian-6.0.4-amd64-standard
            --flavor 2
            --nic net-id=NETWORK_ID
            test_neutron

如果可以正常创建虚拟机, 说明nova和neutron已经可以正常工作了

常见问题

neutron 服务提示 br-int 不存在 无法启动

手工创建 br-int

% ovs-vsctl add-br br-int

neutron 配置文件不生效

neutron默认只读取/etc/neutron/neutron.conf中的配置项, 对于/etc/neutron/plugins 和/etc/neutron目录下的其他配置文件, 需要在启动neutron服务时手工指定配置文件才可 生效.

推荐将所有配置项都写入到/etc/neutron/neutron.conf中, 这样启动服务时所有配置 不许要指定配置文件就可生效, 比较省事.

openvswitch 网络跨节点无法互通

曾经发现 openvswitch 隧道不通的问题, 原因是内核的 ip_gre 模块和 openvswitch 模块冲突. 将 ip_gre 模块卸载后, 手工加载gre模块和openvswitch模块可以解决这个问题.

使用 neutron 网络后, 如何连接虚拟机

方法一: 配置 L3 agent, 给虚拟机绑定floating ip, 通过floating ip访问虚拟机

方法二: 通过 dhcp 的 net namespace 访问

在 dhcp agent 运行的宿主机上查找虚拟机所在的 net namespace, 并切换到相应的 net namespace 内

% ip netns list
% ip netns exec NETNS_NAME bash

在net namespace内, 可以直接通过虚拟机分配到的IP访问虚拟机.

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

2583 文章
29 评论
84935 人气
更多

推荐作者

佚名

文章 0 评论 0

文江

文章 0 评论 0

2012013325

文章 0 评论 0

女中豪杰

文章 2 评论 0