Openstack 之 使用flat网络

 

上面左边是我的个人微信,如需进一步沟通,请加微信。  右边是我的公众号“Openstack私有云”,如有兴趣,请关注。

原来写过一遍文章“Openstack 之 kolla 新增flat网络”是在部署完成之后在物理机上新增网卡并作为flat网络使用的情况下的解决方法,昨天给一个朋友远程支持了一下另外一个需求,在只有2块网卡的情况下,第1块作为内部网路vxlan使用,第2块直接作为flat网络而非external flat网络,直接桥接到外部网络使虚拟机能够直接连接flat网络到外部网络,而不是像默认安装后通过openstack的内部路由分配floating ip映射外网地址。

对于这个需求我可能需要多啰嗦几句,openstack最初是为公有云设计的,对于外网IP资源在它看来是稀有的,因此,“外部网络”使用floating ip提供外网资源。但是我们实际使用过程中,我们所说的“外部网络”只是相对于openstack私有云本身网络来说的,并不是公有云里面的外部网络概念,而且一般都是需要虚拟机能够直接连接到这个“外部网络”,同时,另一个需求是能够分配静态IP地址。

openstack一般部署完成之后运行的init-runonce 初始化脚本新建2个网络,一个网络是vxlan网络,一个是网络是external flat网络,

vxlan网络和子网,对应的命令是:

openstack network create --provider-network-type vxlan demo-net
openstack subnet create --subnet-range 10.0.0.0/24 --network demo-net     --gateway 10.0.0.1 --dns-nameserver 8.8.8.8 demo-subnet

external flat网络和子网,注意这个--external属性,对应的命令是:

openstack network create --external --provider-physical-network physnet1     --provider-network-type flat public1
openstack subnet create --no-dhcp     --allocation-pool ${EXT_NET_RANGE} --network public1     --subnet-range ${EXT_NET_CIDR} --gateway ${EXT_NET_GATEWAY} public1-subnet

另外就是创建路由:

openstack router create demo-router
openstack router add subnet demo-router demo-subnet
openstack router set --external-gateway public1 demo-router

并且设置了上面创建的vxlan网络需要通过这个路由到达external flat网络。

最终的结果就是,运行这个init-runonce初始化脚本之后,你的虚拟机只能配置内部的vxlan网络地址,比如10.0.0.10,并且需要在openstack内部路由上生成floating ip 绑定到虚拟机上才能被外部网络访问以及访问外部网络。

如果需要使虚拟机直接连接第二块网卡的flat网络和外部网络互通,要怎么操作呢?我昨天采用了自己手工创建网络的方式,等会儿记录一下,其实事后我才发现还有更加简单的办法,那就是,执行完init-runonce之后,进web管理界面,直接将脚本创建的public1这个外部网络的external属性取消掉就可以了!使用手工创建的方式能更好的帮助理解这个过程,下面记录一下不执行init-runonce脚本,而是使用手工创建的方式的过程:

1、kolla部署完成后,执行 kolla-ansible post-deploy 生成 /etc/kolla/admin-openrc.sh 环境变量文件,并执行生效

    kolla-ansible post-deploy
    source /etc/kolla/admin-openrc.sh

2、通过web管理界面创建vxlan网络及子网,或者通过下面的命令创建(实际过程我是通过web方式,过程略):

openstack network create --provider-network-type vxlan demo-net      //网络名称可以自己定义
openstack subnet create --subnet-range 10.0.0.0/24 --network demo-net \   
    --gateway 10.0.0.1 --dns-nameserver 8.8.8.8 demo-subnet        //子网名称可以自己定义

3、通过web管理界面创建flat网络及子网,或者通过下面的命令创建(实际过程我是通过web方式,过程略):

openstack network create  --provider-physical-network physnet1 \      //“physnet1”这个名称需要参考文件/etc/kolla/neutron-server/ml2_conf.ini中的 “flat_networks = physnet1”
    --provider-network-type flat public1      //网络名称可以自己定义
openstack subnet create --no-dhcp     --allocation-pool 192.168.1.100,192.168.1.200 --network public1 \   //网络池可以自己定义
    --subnet-range 192.168.1.0/24 --gateway 192.168.1.1 public1-subnet   //子网范围、网关、子网名称可以自己定义

这里最关键的就是创建flat网络的时候,不要加--external参数,以及“physnet1”这个名称需要参考文件/etc/kolla/neutron-server/ml2_conf.ini中的 “flat_networks = physnet1” ,在web管理界面上面配置这个参数的时候也同样需要找到这个flat_networks 名称,很多人在这里就迷茫了,都卡在这个地方。

至于--external参数,如果有这个参数,那么创建的flat网络不能为虚拟机直接连接,只能跟openstack内部的路由器连接,所以不能加这个参数。

4、完成测试镜像cirros的下载和上传、默认安全组的创建、秘钥的生成等等初始化操作:

    IMAGE_URL=http://download.cirros-cloud.net/0.3.4/    
    IMAGE=cirros-0.3.4-x86_64-disk.img
    IMAGE_NAME=cirros
    if ! [ -f "${IMAGE}" ]; then
        curl -L -o ./${IMAGE} ${IMAGE_URL}/${IMAGE}
    fi
    echo Creating glance image.
    openstack image create --disk-format qcow2 --container-format bare --public         --file ./${IMAGE} ${IMAGE_NAME}
    # Get admin user and tenant IDs
    ADMIN_USER_ID=$(openstack user list | awk '/ admin / {print $2}')
    ADMIN_PROJECT_ID=$(openstack project list | awk '/ admin / {print $2}')
    ADMIN_SEC_GROUP=$(openstack security group list --project ${ADMIN_PROJECT_ID} | awk '/ default / {print $2}')
    # Sec Group Config
    openstack security group rule create --ingress --ethertype IPv4         --protocol icmp ${ADMIN_SEC_GROUP} 
    openstack security group rule create --ingress --ethertype IPv4         --protocol tcp --dst-port 22 ${ADMIN_SEC_GROUP}
    # Open heat-cfn so it can run on a different host
    openstack security group rule create --ingress --ethertype IPv4         --protocol tcp --dst-port 8000 ${ADMIN_SEC_GROUP}
    openstack security group rule create --ingress --ethertype IPv4         --protocol tcp --dst-port 8080 ${ADMIN_SEC_GROUP}
    if [ ! -f ~/.ssh/id_rsa.pub ]; then
        echo Generating ssh key.
        ssh-keygen -t rsa -f ~/.ssh/id_rsa
    fi
    if [ -r ~/.ssh/id_rsa.pub ]; then
        echo Configuring nova public key and quotas.
        openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
    fi

大家可以看到,其实上面都是从init-runonce里面摘取出来的,可以直接复制粘贴到命令窗口执行。

5、最后就是验证测试了,最简单的验证方法就是,在web管理界面上创建实例,选择测试镜像cirros,在选择网络这一块的时候,直接选择flat网络public1,这时候系统会自动分配一个flat地址,比如192.168.1.110 (上面的子网自动分配地址池是192.168.1.100-192.168.1.200),生成之后直接测试看看虚拟机是不是能够与192.168.1.0/24网络互访。现实情况下面,更多的是会使用静态分配IP的方式,过程如下:

1)进入web管理界面,管理员->网络->public1->端口->创建端口 ,输入“名称”比如cirros-1,选择“指定IP或子网”为“固定的IP地址”,输入“固定的IP地址”比如192.168.1.101,点击“创建端口”;

2)进入web管理界面,项目->实例->创建实例 ,输入“实例名称”比如cirros1,镜像选择cirros,“实例类型”选择tiny,“网络”跳过,“安全组”选择default,“秘钥对”选择mykey,点击“创建实例”;

3)等cirros1实例生成完成之后,进入web管理界面,项目->实例,点击cirros1虚拟机->控制台,登录cirros1虚拟机,执行命令:

    ifconfig eth0 192.168.1.189/24

登录进在192.168.1.0/24网段的主机对192.168.1.189镜像ping和ssh测试成功:

    ping 192.168.1.189
    ssh [email protected]   //密码  cubswin:)

原文地址:http://blog.51cto.com/yuweibing/2097409

时间: 2024-10-31 14:42:12

Openstack 之 使用flat网络的相关文章

openstack M 版 neutron网络组件基础入门

在我们openstack学习当中,网络组件neutron无疑是令很多人很难理解的,可以说要深入理解 了neutron组件,你基本完成了openstack 60%的学习,存储方面只要不涉及到分布式,剩下的基本都比较简单了 相信很多人第一次看到这种图的时候都会被吓一跳,没错,这就是openstack  neutron组件里面涉及到的数据流程,里面涉及到的知识点很多很多 Openstack网络模型中的几个概念网络: Management Network: 管理网络,连接所有节点. External N

openstack neutron 二/三层网络实现

一.概述 Neutron是openstack中提供网络虚拟化的组件,根据二层网络的实现方式不同(即agent的不同),Linux bridge方式,Openvwitch的方式.而且, lay2 网络分为local.flat.vlan.vxlan等类型(gre与vxlan类似,暂不考虑):本文就分析两者实现方式在这四种实现方式在这四中网络中的具体实现差异.因为vxlan会依赖lay3层网络,所以还会分析下lay3网络的实现. 二.lay2 local型网络 生产环境中,local与flat网络是不

OpenStack云平台的网络模式及其工作机制

网络,是OpenStack的部署中最容易出问题的,也是其结构中难以理清的部分.经常收到关于OneStack部署网络方面问题和OpenStack网络结构问题的邮件.下面根据自己的理解,谈一谈OpenStack的虚拟网络.网络拓扑和网络流.个人理解有限,仅抛砖引玉,有问题请指正,谢谢. 一.相关概念和要点(可跳过) 1.OpenStack中nova-network的作用 OpenStack平台中有两种类型的物理节点,控制节点和计算节点.控制节点包括网络控制.调度管理.api服务.存储卷管理.数据库管

openstack Juno系列之网络节点搭建

openstack Juno系列之网络节点搭建 neutron节点搭建 ------------------ 添加转发 vi  /etc/sysctl.conf net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 刷新下 sysctl -p 安装neutron各模块服务 apt-get install neutron-plugin-ml2 neutron-plugin-open

OpenStack IceHouse 部署 - 5 - 网络节点部署

Neutron网络服务(网络节点) 目录 [隐藏] 1 参考 2 前置工作 2.1 调整内核参数 3 安装 4 配置 4.1 keystone对接 4.2 rabbitmq对接 4.3 metadata服务对接 4.4 ML2插件配置 4.5 L3-agent 4.6 DHCP-agent 5 接口配置 6 服务更新 7 服务验证 8 附加配置 8.1 共享上网 8.1.1 iptables NAT 8.1.2 虚拟路由 参考 由于硬件条件所限并结合实际网络环境,本页并不是完全按照官方给出的指导

openstack flat 网络配置

source admin-openrc.sh neutron net-create public --shared --router:external --provider:physical_network public --provider:network_type flat ####与宿主机的网络配置在同一网段 neutron subnet-create public 192.168.0.0/22 --name public --allocation-pool start=192.168.3

Openstack填坑系列(一)flat网络不通

根据openstack手册部署openstack,部署全部完成,并且没有任何报错信息.部署环境为VMware esxi 主机创建VM后.vm卡在bios界面始终无法启动,vm cpu占用100% (坑一)这种情况需要将计算节点的 (如果无此现象可以不做下面的修改,经测试有的版本的esxi+某些特定的CPU就无此问题)/etc/nova/nova.conf中添加如下设置[libvirt]virt_type= qemu(注意已经在esxi层面为计算机节点启用了cpu虚拟化, grep -E 'svm

[转载]OpenStack OVS GRE/VXLAN网络

  学习或者使用OpenStack普遍有这样的现象:50%的时间花费在了网络部分:30%的时间花费在了存储方面:20%的时间花费在了计算方面.OpenStack网络是不得不逾越的鸿沟,接下来我们一起尝试努力穿越这个沟壑吧……J 主要参考: RDO官网对GRE网络的分析: http://openstack.redhat.com/Networking_in_too_much_detail OpenStack网络出错处理的一般步骤: http://docs.openstack.org/trunk/op

openstack Q版部署-----网络服务(neutron)安装部署(7)

一.数据库配置 控制节点创建数据库 CREATE DATABASE neutron;GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron2018';GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron2018'; 二.创建认证信息(控制节点) 先生效一下环境变量 创建neutron用户: ope