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

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地址。

  1. 将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

在这里插入图片描述

5)修改br-ex网桥配置文件
vim /etc/sysconfig/network-scripts/ifcfg-br-ex

上图,最关键的是红色下划线配置。

6)修改ens33网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述

7)重启网络,使上述配置生效,然后,查看主机网络接口

在这里插入图片描述

上图可见,网桥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”。默认配置的路由已经将外
部网络设置为其网关,所以,需要先将网关清除或直接删除该路由,才能删除外部
网络。
删除外部网关类型的接口
在这里插入图片描述
在这里插入图片描述

2)配置外部网络

Admin > Network > Network
在这里插入图片描述

点击“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”按钮完成子网的创建
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3)调虚拟整路由配置

虚拟路由的操作以各项目为主,每个项目都可以定义自己的路由。下面以
demo用户身份登录OpenStack。
Project > Network > Routers
可见,demo项目有一个自己的路由route1,其,“动作”下拉菜单中的“设置网关”命令可
用,表明该路由目前没有设置网关。
设置demo项目的路由网关,使该项目的虚拟机实例能够内外网通信
从“External Network”下拉列表中选择“public”选项
编辑修改路由名(router-demo),并启用该路由
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4)查看网络拓扑
Project > Network > Network Topology
如上图所示,虚拟路由将内外网连接起来。另,由于名称为“public”的外部网络
未设置“可共享”,因此,这里看不到该外部网络的子网地址信息。将鼠标指针移
动到虚拟路由图标上,可进行一步显示路由的配置信息。
在这里插入图片描述

3. 给云虚拟机实例分配浮动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)
至此,云平台虚拟机实例与外部网络已经连通。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以发现网络通了
在这里插入图片描述
在这里插入图片描述

  • 8
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不良使

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值