在OpenStack里怎样配置Neutron,让虚拟机访问外网

在OpenStack里怎样配置Neutron,让虚拟机访问外网,第1张

OpenStack里虚机(或者叫instance)只有在分配floating IP后才能访问外网,那么需要怎样做配置才能达到目的呢看

1. 需要在网络节点上确定一个可以访问外网的物理网卡,这个网卡可以和管理网卡是一个。这里我们假定外网网卡和管理网卡是独立的,且外网网卡的名字叫做eth2。

2. 添加一个新的bridge br-ex,并将eth2作为port绑定到br-ex

[plain] view plain copy

# ovs-vsctl add-br br-ex

# ovs-vsctl add-port br-ex eth2

3. 创建/etc/sysconfig/network-scripts/ifcfg-eth2文件,并输入如下内容:

[plain] view plain copy

TYPE=OVSPort

BOOTPROTO=none

DEVICETYPE=ovs

OVS_BRIDGE=br-ex

DEVICE=eth2

ONBOOT=yes

4. 创建/etc/sysconfig/network-scripts/ifcfg-br-ex文件,并输入如下内容:

[plain] view plain copy

TYPE=OVSBridge

BOOTPROTO=none

DEVICETYPE=ovs

NAME=br-ex

DEVICE=br-ex

ONBOOT=yes

5. 重新启动网络服务让配置生效

[plain] view plain copy

# systemctl restart network.service

6. 用具有admin role的用户在Openstack Controller节点创建外网(external network)和相应子网,这里的外网是所谓的provider network,是不允许普通权限的租户创建的,普通的租户只能创建租户网络。注意"--router:external=true"选项表示这是一个外网,网络类型选的是flat(如果外网是VLAN,就选VLAN),子网的CIDR是192.168.100.0/24。

[plain] view plain copy

# neutron net-create --provider:network_type flat --provider:physical_network default --router:external=true public

# neutron subnet-create public --name public_subnet --allocation-pool start=192.168.100.100,end=192.168.100.150 192.168.100.0/24

创建完成后显示结果如下:

7. 如果要让租户的虚机访问外网,还需要创建一个router,用普通租户用户创建router,命令如下:

[plain] view plain copy

# neutron router-create router01

8. 将租户的私有子网(private_sub)作为interface加入router01,并将外网(public)设置为网关:

[plain] view plain copy

# neutron router-interface-add router01 private_sub

# neutron router-gateway-set router01 public

9. 然后就可以为虚拟机分配floating IP了。分配完成后虚拟机就可以访问外网了。

[plain] view plain copy

# neutron floatingip-create public

# neutron floatingip-list

[plain] view plain copy

# neutron floatingip-associate e12a6c2b-fc5e-4448-a6bb-3047638b850e 164f410e-6961-422d-b256-0609bfe6e9ff

(1)官方的解释相信大家都已经了解了,不了解也没有关系。现在从常识的角度来给大家解释和说明。OpenStack是一个云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作。OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目,OpenStack被公认作为基础设施即服务(简称IaaS)资源的通用前端。如果这些还不明白,那么从另外的角度给大家介绍:首先让大家看下面两个图就很简单明了了:此图为openstack的登录界面下面是openstack的一个管理界面从这两个图,相信有一定开发经验,就能看出openstack是什么了。可以说他是一个框架,甚至可以从软件的角度来理解它。如果不明白,就从传统开发来讲解。不知道你是否了解oa,erp等系统,如果不了解可以到网上去找,资料一大把。他和oa,erp有什么不同。很简单就是openstack是用做云计算的一个平台,或则一个解决方案。它是云计算一个重要组成部分。上面对openstack有了一个感性的认识。(2)openstack能干什么。大家都知道阿里云平台,百度云平台,而阿里云平台据传说就是对openstack的二次开发。对于二次开发相信只要接触过软件的都会明白这个概念。不明白的自己网上去查一下。也就是说openstack,可以搭建云平台,什么云平台,公有云,私有云。现在百度在招聘的私有云工程师,应该就是这方面的人才。(3)openstack自身都包含什么以下是5个OpenStack的重要构成部分:lNova–计算服务lSwift–存储服务lGlance–镜像服务lKeystone–认证服务lHorizon–UI服务图1OpenStack基本构架下图展示了Keystone、Dashboard二者与其它OpenStack部分的交互。下面详细介绍每一个服务:(一)OpenStack计算设施—-NovaNova是OpenStack计算的d性控制器。OpenStack云实例生命期所需的各种动作都将由Nova进行处理和支撑,这就意味着Nova以管理平台的身份登场,负责管理整个云的计算资源、网络、授权及测度。虽然Nova本身并不提供任何虚拟能力,但是它将使用libvirtAPI与虚拟机的宿主机进行交互。Nova通过Web服务API来对外提供处理接口,而且这些接口与Amazon的Web服务接口是兼容的。功能及特点l实例生命周期管理l计算资源管理l网络与授权管理l基于REST的APIl异步连续通信l支持各种宿主:Xen、XenServer/XCP、KVM、UML、VMwarevSphere及Hyper-VOpenStack计算部件lNovad性云包含以下主要部分:lAPIServer(nova-api)l消息队列(rabbit-mqserver)l运算工作站(nova-compute)l网络控制器(nova-network)l卷管理(nova-volume)l调度器(nova-scheduler)API服务器(nova-api)API服务器提供了云设施与外界交互的接口,它是外界用户对云实施管理的唯一通道。通过使用web服务来调用各种EC2的API,接着API服务器便通过消息队列把请求送达至云内目标设施进行处理。作为对EC2-api的替代,用户也可以使用OpenStack的原生API,我们把它叫做“OpenStackAPI”。消息队列(RabbitMQServer)OpenStack内部在遵循AMQP(高级消息队列协议)的基础上采用消息队列进行通信。Nova对请求应答进行异步调用,当请求接收后便则立即触发一个回调。由于使用了异步通信,不会有用户的动作被长置于等待状态。例如,启动一个实例或上传一份镜像的过程较为耗时,API调用就将等待返回结果而不影响其它 *** 作,在此异步通信起到了很大作用,使整个系统变得更加高效。运算工作站(nova-compute)运算工作站的主要任务是管理实例的整个生命周期。他们通过消息队列接收请求并执行,从而对实例进行各种 *** 作。在典型实际生产环境下,会架设许多运算工作站,根据调度算法,一个实例可以在可用的任意一台运算工作站上部署。网络控制器(nova-network)网络控制器处理主机的网络配置,例如IP地址分配,配置项目VLAN,设定安全群组以及为计算节点配置网络。卷工作站(nova-volume)卷工作站管理基于LVM的实例卷,它能够为一个实例创建、删除、附加卷,也可以从一个实例中分离卷。卷管理为何如此重要?因为它提供了一种保持实例持续存储的手段,比如当结束一个实例后,根分区如果是非持续化的,那么对其的任何改变都将丢失。可是,如果从一个实例中将卷分离出来,或者为这个实例附加上卷的话,即使实例被关闭,数据仍然保存其中。这些数据可以通过将卷附加到原实例或其他实例的方式而重新访问。因此,为了日后访问,重要数据务必要写入卷中。这种应用对于数据服务器实例的存储而言,尤为重要。调度器(nova-scheduler)调度器负责把nova-API调用送达给目标。调度器以名为“nova-schedule”的守护进程方式运行,并根据调度算法从可用资源池中恰当地选择运算服务器。有很多因素都可以影响调度结果,比如负载、内存、子节点的远近、CPU架构等等。强大的是nova调度器采用的是可插入式架构。目前nova调度器使用了几种基本的调度算法:随机化:主机随机选择可用节点;可用化:与随机相似,只是随机选择的范围被指定;简单化:应用这种方式,主机选择负载最小者来运行实例。负载数据可以从别处获得,如负载均衡服务器。(二)OpenStack镜像服务器—-GlanceOpenStack镜像服务器是一套虚拟机镜像发现、注册、检索系统,我们可以将镜像存储到以下任意一种存储中:本地文件系统(默认)lOpenStack对象存储lS3直接存储lS3对象存储(作为S3访问的中间渠道)lHTTP(只读)功能及特点提供镜像相关服务Glance构件lGlance控制器lGlance注册器(三)OpenStack存储设施—-SwiftSwift为OpenStack提供一种分布式、持续虚拟对象存储,它类似于AmazonWebService的S3简单存储服务。Swift具有跨节点百级对象的存储能力。Swift内建冗余和失效备援管理,也能够处理归档和媒体流,特别是对大数据(千兆字节)和大容量(多对象数量)的测度非常高效。功能及特点l海量对象存储l大文件(对象)存储l数据冗余管理l归档能力—–处理大数据集l为虚拟机和云应用提供数据容器l处理流媒体l对象安全存储l备份与归档l良好的可伸缩性Swift组件lSwift账户lSwift容器lSwift对象lSwift代理lSwiftRINGSwift代理服务器用户都是通过Swift-API与代理服务器进行交互,代理服务器正是接收外界请求的门卫,它检测合法的实体位置并路由它们的请求。此外,代理服务器也同时处理实体失效而转移时,故障切换的实体重复路由请求。Swift对象服务器对象服务器是一种二进制存储,它负责处理本地存储中的对象数据的存储、检索和删除。对象都是文件系统中存放的典型的二进制文件,具有扩展文件属性的元数据(xattr)。注意:xattr格式被Linux中的ext3/4,XFS,Btrfs,JFS和ReiserFS所支持,但是并没有有效测试证明在XFS,JFS,ReiserFS,Reiser4和ZFS下也同样能运行良好。不过,XFS被认为是当前最好的选择。Swift容器服务器容器服务器将列出一个容器中的所有对象,默认对象列表将存储为SQLite文件(译者注:也可以修改为MySQL,安装中就是以MySQL为例)。容器服务器也会统计容器中包含的对象数量及容器的存储空间耗费。Swift账户服务器账户服务器与容器服务器类似,将列出容器中的对象。Ring(索引环)Ring容器记录着Swift中物理存储对象的位置信息,它是真实物理存储位置的实体名的虚拟映射,类似于查找及定位不同集群的实体真实物理位置的索引服务。这里所谓的实体指账户、容器、对象,它们都拥有属于自己的不同的Rings。(四)OpenStack认证服务(Keystone)Keystone为所有的OpenStack组件提供认证和访问策略服务,它依赖自身REST(基于IdentityAPI)系统进行工作,主要对(但不限于)Swift、Glance、Nova等进行认证与授权。事实上,授权通过对动作消息来源者请求的合法性进行鉴定。如下图所示:Keystone采用两种授权方式,一种基于用户名/密码,另一种基于令牌(Token)。除此之外,Keystone提供以下三种服务:l令牌服务:含有授权用户的授权信息l目录服务:含有用户合法 *** 作的可用服务列表l策略服务:利用Keystone具体指定用户或群组某些访问权限认证服务组件服务入口:如Nova、Swift和Glance一样每个OpenStack服务都拥有一个指定的端口和专属的URL,我们称其为入口(endpoints)。l区位:在某个数据中心,一个区位具体指定了一处物理位置。在典型的云架构中,如果不是所有的服务都访问分布式数据中心或服务器的话,则也称其为区位。l用户:Keystone授权使用者译者注:代表一个个体,OpenStack以用户的形式来授权服务给它们。用户拥有证书(credentials),且可能分配给一个或多个租户。经过验证后,会为每个单独的租户提供一个特定的令牌。[来源:]l服务:总体而言,任何通过Keystone进行连接或管理的组件都被称为服务。举个例子,我们可以称Glance为Keystone的服务。l角色:为了维护安全限定,就云内特定用户可执行的 *** 作而言,该用户关联的角色是非常重要的。译者注:一个角色是应用于某个租户的使用权限集合,以允许某个指定用户访问或使用特定 *** 作。角色是使用权限的逻辑分组,它使得通用的权限可以简单地分组并绑定到与某个指定租户相关的用户。l租间:租间指的是具有全部服务入口并配有特定成员角色的一个项目。译者注:一个租间映射到一个Nova的“project-id”,在对象存储中,一个租间可以有多个容器。根据不同的安装方式,一个租间可以代表一个客户、帐号、组织或项目。(五)OpenStack管理的Web接口—-HorizonHorizon是一个用以管理、控制OpenStack服务的Web控制面板,它可以管理实例、镜像、创建密匙对,对实例添加卷、 *** 作Swift容器等。除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例。总之,Horizon具有如下一些特点:l实例管理:创建、终止实例,查看终端日志,VNC连接,添加卷等l访问与安全管理:创建安全群组,管理密匙对,设置浮动IP等l偏好设定:对虚拟硬件模板可以进行不同偏好设定l镜像管理:编辑或删除镜像l查看服务目录l管理用户、配额及项目用途l用户管理:创建用户等l卷管理:创建卷和快照l对象存储处理:创建、删除容器和对象l为项目下载环境变量

(一)网络服务配置

1、在compute node上面安装nova-network nova-api-metadata,在controller管理机上面安装nova-network服务compute node:# apt-get install nova-api-metadata

controller : # apt-get install nova-network

2、编辑nova.conf定义网络模块,在[DEFAULT]选项下修改添加如下,注意,controller和compute节点都要添加该配置文件

[DEFAULT]

...

network_manager=nova.network.manager.FlatDHCPManager

firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver

network_size=254

allow_same_net_traffic=False

multi_host=True

send_arp_for_ha=True

share_dhcp_address=True

force_dhcp_release=True

flat_network_bridge=br100

flat_interface=eth1

public_interface=eth1

3、重启网络服务

# service nova-network restart

4、现在在controller管理机设置环境变量,运行

# source openrc.sh

然后创建一个可以使用的虚拟机网络

# nova network-create vmnet --fixed-range-v4=10.0.0.0/24 --bridge=br100 --multi-host=T

5、通过nova命令查看创建的虚拟机网络

root@ubuntu:~# nova network-list

+--------------------------------------+-------+-------------+

| ID | Label | Cidr |

+--------------------------------------+-------+-------------+

| f115a713-3411-4ff9-b71e-4fa43bcfda79 | vmnet | 10.0.0.0/24 |

+--------------------------------------+-------+-------------+


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11535133.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存