实现虚拟机实例与外部网络通信

简介: 实现虚拟机实例与外部网络通信

RDO实现虚机实例与外部网络通信

网络是OpenStack极为重要的资源之一,没有网络,虚拟机实例就会被

完全隔离。


1)虚拟网络

OpenStack网络服务,最主要的功能就是为虚拟机实例提供网络连接。

Neutron为整个OpenStack环境提供软件定义网络(Software Defined

Network, SDK)支持。RDO一体化,默认使用开放式虚拟交换机(Open

vSwith,OVS)。为了提升Neutron的性能,推出了开放式虚拟网络

(Open Virtual Network,OVN)项目。OVN为OVS增加了对虚拟网络的

原生支持,大大提高了OVS在实际应用环境中的性能和规模。

OVN对运行平台没有额外的要求,只要能够运行OVS,就可以运行

OVN,所以,从OVS升级到OVN非常容易。在RDO的OpenStack解决方

案中,从OpenStack的Stein版开始,网络控制平台从之前的OVS升级到

OVN。需要注意的是,其二层网络的虚拟化仍然是由OVS实现的。

Netron虚拟网络包括外部网络、内部网络、虚拟路由器。外部网络负责

连接OpenStack项目之外的网络环境,用于外部物理网络接入。内部网

络又称私有网络,是虚拟机实例本身所在的网络,项目自己可以创建自己

的内部网络。虚拟路由器用于将内部网络与外部网络连接起来。

2)浮动IP

OpenStack虚拟机实例可以分配两类地址:私有地址、浮动IP地址。

私有地址,是由DHCP服务自动分配给虚拟机实例网络接口的IP地址。私

有地址是私有网络的一部分,同一广播域内的实例基于私有地址进行通

信。注,也可以通过虚拟路由器从其他私有网络访问私有地址。

浮动IP地址,不使用DHCP服务,由Neutron组件提供服务,直接在客户

端内静态设置即可。事实上,客户端操作系统并不知道自己被分配了一个

浮动IP地址。将数据包发送到分配有浮动IP地址网口的工作由Neutron负

责。分配有浮动IP地址的实例能够通过浮动IP地址被从外部网络访问。

OpenStack的虚拟机网络实例拥有一个私有IP地址,通过该IP地址,它们

可以在内部网络中相互访问。要从外部网络访问这些实例,需要为实例分

配浮动IP地址。


将OpenStack主机网卡添加到br-en网桥上

1)查看主机上的网络接口

ens33是主机网卡,“br”打头的是网桥。


2)查看主机上的网桥

br-ex,是外部网桥

br-int,是集成网桥


3)查看网桥端口

上图,发现br-ex网桥,只有一个连接集成网桥br-int的Patch端口,没有端口连接

到OpenStack主机的外部网络,因此,当前OpenStack云平台上的虚拟机实例无

法与外部网络进行通信。解决的办法是:将OpenStack主机上的网卡作为一个端口

添加到br-ex网桥上,可通过执行“ovs-vsctl add-port br-ex 网卡名”命令实

现。Open vSwitch会生成一个普通端口来处理此网卡的数据包。但,以这种方式

实现的配置,在重启主机后会丢失。下面改用网卡配置文件的方式来持久化实现。


4)复制ifcfg-ens33生成ifcfg-br-ex文件(br-ex网桥配置

文件)


cp ./ifcfg-ens33 ./ifcfg-br-ex

image.png5)修改br-ex网桥配置文件

vim /etc/sysconfig/network-scripts/ifcfg-br-ex

image.png6)修改ens33网卡配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens33

image.png7)重启网络,使上述配置生效,然后,查看主机网络接口image.png上图可见,网桥br-ex获得原ens33网卡的IP配置,而ens33作为该网桥上的一个端

口后,可以没有IP地址。


2. 调整网络配置

RDO一体化OpenStack云平台默认配置一个内部网络、一个外部网络、

和一个路由器。普通用户只能查看属于自己项目的网络,且默认没有权限

管理外部网络。云管理员可以查看所有网络。

以admin用户身份登录,查看网络及路由

Project > Network > Network

Admin > Network > Network

Project > Network > Routers

Admin > Network > Routers

如果有虚拟路由器,则需要先清除掉(默认配置不能用)。


1)清除现有路由网关

点击“route1”进入路由详情,再点击“Interface”。默认配置的路由已经将外

部网络设置为其网关,所以,需要先将网关清除或直接删除该路由,才能删除外部

网络。

删除外部网关类型的接口image.pngimage.png2)配置外部网络

Admin > Network > Networkimage.png点击“public”进入网络详情,在概况选项卡,可以看到网络基本信息

如上图:

External Network: Yes,表示这是一个外部网络;

Provider Network

Network Type: flat,确保OpenStack能访问连通外部物理网络

Physical Network: extnet

Shared: No,表示该网络不可在项目间共享,即其他项目不能直接使用该外部网络为虚拟机实

例设置网络连接,但,仍然可以使用该外部网络作为虚拟路由器的网关。

上述,外部网络,除子网外,其他基本都符合实验环境。虚拟路由器的网关要设置

具体的子网,每个子网需要定义IP地址的范围和掩码。

①外部网络默认的子网地址范围是172.24.4.0/24;

②当前主机网络地址范围是192.168.233.0/24;

即,需要重设子网(先删除外部网络的子网) Subnets选项卡

再创建一个同名的子网

网络地址设置为与OpenStack主机网段相同,网关设置为与OpenStack主机网关相同

点击“下一步”进入“子网详情”设置界面。外部网络与OpenStack主机同网段,即,

网络有重叠,因此,需要再子网中设置一个专供虚拟机实例使用的地址段,该地址段再

OpenStack中通过分配地址池进行设置。为了便于虚拟机实例通过域名访问外部网络,还要设

置DNS。另,勾选“Enable DHCP”复选框,使用子网提供的DHCP服务,如不勾选则会使用

物理网络(OpenStack主机)中的DHCP服务。

设置完毕后,单击“Create”按钮完成子网的创建image.pngimage.pngimage.pngimage.png3)调虚拟整路由配置

虚拟路由的操作以各项目为主,每个项目都可以定义自己的路由。下面以

demo用户身份登录OpenStack。

Project > Network > Routers

可见,demo项目有一个自己的路由route1,其,“动作”下拉菜单中的“设置网关”命令可

用,表明该路由目前没有设置网关。

设置demo项目的路由网关,使该项目的虚拟机实例能够内外网通信

从“External Network”下拉列表中选择“public”选项

编辑修改路由名(router-demo),并启用该路由image.pngimage.pngimage.pngimage.png4)查看网络拓扑

Project > Network > Network Topology

如上图所示,虚拟路由将内外网连接起来。另,由于名称为“public”的外部网络

未设置“可共享”,因此,这里看不到该外部网络的子网地址信息。将鼠标指针移

动到虚拟路由图标上,可进行一步显示路由的配置信息。image.png3. 给云虚拟机实例分配浮动IP

浮动IP 和 私有IP 能够同时用于一个单独的网络接口。要使

外部网络能够访问云虚拟机实例,就要为这些云虚拟机实例

分配浮动IP。

demo用户登录OpenStack,Project > Compute >

Instances

点击“CirrOS-VM-demo”虚拟机实例右端“动作”下拉菜单中的“绑

定浮动IP”选项

弹出“关联浮动IP”对话框

可见,默认没有分配浮动IP,单击“+”按钮,弹出“分配浮动IP”对话

从“Pool”下拉列表中选择“Public”选项,单击“Allocate IP”按钮,

返回到“关联浮动IP”对话框,此时分配了一个IP地址

单击“关联(Associate)”按钮,将该IP地址分配给实例

上面为处于关闭状态的CirrOS-VM-demo实例成功分配了浮动IP地址。

实际上也可以为正在运行的实例分配浮动IP地址。

至此,可以进行虚拟机实例与外部网络间的通信测试了

1)查看CirrOS-VM-demo实例的网络接口

发现该虚拟机实例的IP地址使内部网络地址,即外部网络的浮动IP地址并

未直接注入虚拟机实例中。

2)CirrOS-VM-demo实例ping外部网关和百度

3)OpenStack主机pingCirrOS-VM-demo实例的浮动

IP(192.168.233.247)

至此,云平台虚拟机实例与外部网络已经连通。image.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png可以发现网络通了image.pngimage.png






目录
相关文章
|
1月前
|
Ubuntu Windows
【Ubuntu/Arm】Ubuntu 系统如何链接有线网络(非虚拟机)?
【Ubuntu/Arm】Ubuntu 系统如何链接有线网络(非虚拟机)?
|
1月前
|
Ubuntu
虚拟机Ubuntu连接不了网络的解决方法
虚拟机Ubuntu连接不了网络的解决方法
|
13天前
|
存储 算法 Windows
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(下)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
|
13天前
|
算法 数据可视化 数据挖掘
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(上)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
|
1天前
|
算法 计算机视觉 网络架构
CVPR 202:擅长处理复杂场景和语言表达,清华&博世提出全新实例分割网络架构MagNet
【5月更文挑战第10天】在CVPR 2024会议上,清华大学与博世团队推出MagNet,一种针对复杂场景和语言表达的实例分割网络。MagNet通过Mask Grounding辅助任务强化视觉-语言对应,缩小模态差距,并结合跨模态对齐损失与模块,提升RIS任务的准确性。在RefCOCO、RefCOCO+和G-Ref基准上取得显著优势,但对罕见表达和复杂场景的处理仍有待优化。[论文链接](https://arxiv.org/abs/2312.12198)
11 5
|
2天前
|
机器学习/深度学习 存储 自然语言处理
【威胁情报挖掘-论文阅读】学习图表绘制 基于多实例学习的网络行为提取 SeqMask: Behavior Extraction Over Cyber Threat Intelligence
【威胁情报挖掘-论文阅读】学习图表绘制 基于多实例学习的网络行为提取 SeqMask: Behavior Extraction Over Cyber Threat Intelligence
6 0
|
6天前
|
机器学习/深度学习 监控 数据可视化
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例2
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例
|
6天前
|
机器学习/深度学习 数据可视化 算法
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例1
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例
|
13天前
|
前端开发 数据挖掘 数据建模
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(中)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
|
14天前
|
机器学习/深度学习 算法 TensorFlow
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)