Bootstrap

OpenStack之虚拟网络管理

一)基础知识

1.虚拟网络管理
a-网络管理

OpenStack的网络是一个用虚拟设备构成的OSI二层网络。
命令格式如下:

openstack network <操作>[选项][<网络名>]

网络管理命令的常用操作:

常用操作功能说明
create创建网络
delete删除网络
list列出已有的网络列表
set设置网络参数
unset取消网络参数设置
show显示网络的详细信息

网络管理命令的常用选项:

常用选项功能说明
–h显示帮助信息
–enable启用网络
–disable禁用网络
–enable-port-security启用端口安全
–disable-port-security禁用端口安全
–share设置网络为共享网络
–no-share设置网络为非共享网络
–external设置网络为外部网络
–internal设置网络为内部网络
–provider-network-type 网络类型,包括Flat、GRE、Local、VLAN、VXLAN这几类网络
–provider-physical-network实现虚拟网络的物理网络的名称

接下来便是例子:

创建一个”Flat“类型的共享外部网络

命令如下:

openstack network create --share --external --provider-physical-network provider --provider-network-type flat vm-network
查看当前的网络列表
openstack network list

image.png

查看网络的详细信息
openstack network show  6efe6b97-a8dc-4eeb-ad6f-3b4fee8a1c3b 

代码的最后的参数可以是网络的名称或id
image.png

修改网络的名称并将其更改为非共享网络
openstack network set --name new-vnet --no-share vm-network

代码最后的参数可以是网络的名称或id

删除一个网络
openstack network delete new-vnet
b-子网管理

子网是挂载在网络中的一个IP地址段,它的主要功能是当网络中创建新的端口时为其分配IP地址。子网与网络是多对一的关系,一个子网必须属于一个网络,而一个网络可以有多个子网。可使用以下命令对OpenStack的子网进行管理。

openstack subnet <操作>[选项]<子网名>

子网管理命令的常用操作:

常用操作功能说明
create创建新子网
delete删除子网
list列出已有的子网列表
set设置子网参数
unset取消子网参数设置
show显示子网的详细信息

子网管理命令的常用选项:

常用选项功能说明
–h显示帮助信息
–project 当前项目,输入项目名或项目ID
–subnet-range 子网的IP网段
–dhcp启动DHCP为云主机自动分配IP地址
–no-dhcp不使用DHCP
–allocation-pool<start=,end=>DHCP分配IP地址池,用”start“代表起始地址,”end“代表结束地址,如”stat=192.168.20.100,end=192.168.20.200”
–gateway 设置网卡
–dns-nameserver配置DNS服务器地址
–network 子网属于的网络,可以是网络名或网络ID

下面展示几个例子:

为网络“vm-network”创建一个名为“vm-subnetwork”的子网,该子网拥有“192.168.20.0/24”网段,并为云主机自动分配“192.168.20.100”到“192.168.20.200”之间的IP地址,同时设置DNS服务器IP地址为“114.114.114.114”
openstack subnet create --network vm-network --allocation-pool start=192.168.20.100,end=192.168.20.200 --dns-nameserver 114.114.114.114 --subnet-range 192.168.20.0/24 vm-subnetwork

子网必须属于同一网络,如果不存在网络,则需要先创建网络再创建子网

查看子网列表
openstack subnet list

image.png

查看子网的详细信息
openstack subnet show 4de5482d-dab5-4508-934f-6cb6aaf3a270

以上代码最后的参数可以是子网的名称或ID

修改子网的名称并设定网关值为“192.168.20.2”
openstack subnet set --name new-subvnet --gateway 192.168.20.2 vm-subnetwork

以上代码最后的参数可以是子网的名称或id

删除一个子网
openstack subnet delete new-subvnet

如果子网中存在端口,则不允许直接删除子网,需要先删除端口再删除子网

c-端口管理

端口是挂载在子网中的用于连接云主机虚拟网卡的接口。端口上定义了硬件物理地址和独立的IP地址,当云主机的虚拟网卡连接到某个端口时,端口就会将MAC地址和IP地址分配给虚拟网卡。子网与端口是一对多关系,一个端口必须属于某个子网;一个子网可以有多个端口。
对OpenStack的端口进行管理的命令格式:

openstack port <操作>[选项]<子网名>

端口管理命令的常用操作:

常用操作功能说明
create创建端口
delete删除端口
list列出已有的端口列表
set设置端口参数
unset取消端口参数设置
show显示端口的详细信息

端口管理命令的常用选项:

常用选项功能说明
–h显示帮助信息
–network 端口属于的网络
–fixed-ip subnet=,ip-address=为端口绑定IP地址。“subnet”属于子网,“ip-address”表示IP地址
–enable启用端口
–disable禁用端口
–enable-port-security启用端口安全设置
–disable-port-security禁用端口安全设置

下面用几个例子展示:

为网络“vm-network”的“my_subnet”子网创建一个绑定了IP地址“192.168.20.120”的端口,并将其命名为“myport”
openstack port create myport --network vm-network --fixed-ip subnet=my_subnet,ip-address=192.168.20.120

端口必须属于一个子网,如果不存在子网,则需要先创建子网。
因为还没有连接上虚拟机,所以刚创建的端口的状态(Status)为关机(DOWN)。

查看端口列表
openstack port list
删除一个端口
openstack port delete port1

这里可以使用端口的IP或端口名

2.虚拟网桥管理

网桥属于OSI参考模型的二层设备,类似于交换机,负责连接在它上面的云主机之间的通信。可以采用网桥管理工具包“bridge-utils”中的brctl命令来管理虚拟网桥。在用YUM安装好“bridege-utils”工具包以后,该命令才可以使用。用法如下:

brctl <操作>

网桥管理命令的常用操作:

常用操作功能说明
addbr增加网桥
delbr删除网桥
addif<bridge将网卡接入网桥
delif将网卡从网桥上删除
show []显示网桥信息

下面是一些例子:

创建一个网桥
brctl addbr br1
#创建了一个名为“br1”的网桥
将网卡接入网桥
brctl addif br1 ens34
#以上代码将ens34网卡连接到了br1网桥上
查看网桥信息
brctl show br1

image.png
名为br1的网桥上连接了ens34网卡。
只有当物理网卡ens34和云主机的网络接口都连接在同一个网桥时,才可以实现云主机和物理机的直接通信

二)项目实施

1.项目准备
a-卸载系统网络管理软件包

CentOS自带的“NetworkManager"网络管理软件包和OpenStack用到的虚拟网关服务又冲突,所以我们需要将其卸载从所有节点。
在控制和计算两个节点上运行下面的命令以卸载系统自带的网络管理软件包:

yum -y remove NetworkManager
b-关闭VM虚拟网络的DHCP服务

Neutron提供了DHCP服务,且其DHCP服务器和VMware Workstation提供的DHCP服务器处于同一个网段,两台DHCP服务器将使云主机获取不到Neutron分配的正确的IP地址,因此需要关闭。
在弹出的VMware Workstation的【虚拟网络编辑器】对话框中作此操作:
image.png
取消使用本地DHCP服务将IP地址分配给虚拟机。

b-安装网桥管理工具包

在控制节点上使用以下命令,以安装Linux的网桥管理工具包。

yum -y install bridge-utils
2.用Dashboard创建与管理虚拟网络与子网
a-登录Dashboard

在本机浏览器输入”http://192.168.10.20“(Dashboard安装地址),进入登录界面
image.png
【域】输入Default,【用户名】输入admin,【密码】输入000000,点击【登入】。

b-创建虚拟网络

在【概况】选择【管理员】—>【网络】选项,进入【网络】界面。
image.png
点击【创建网络】按钮,进入 【创建网络】对话框。
image.png
【名称】-填写新建网络的名称。
【项目】-下拉列表选择【peoject】选项。
【供应商网络类型】-下拉列表选择【Flat】选项。
【物理网络】-输入”provider“(和”/etc/neutron/plugins/ml2/ml2_conf.ini"中的 “flat_networks=provider"保持一致);选中【共享的】和【外部网络】。
image.png

c-创建子网

在完成创建虚拟网络的操作后点击【下一步】。进入【子网】界面。在【子网】界面中
【子网名称】-输入子网的名称
【网络名称】-输入外网物理网段’192.168.20.0/24”
【网关IP】-输入“192.168.20.2”(在VMware Workstation中设置的NAT的网关)
image.png
在【子网详情】中选中【激活DHCP】复选框,在【分配地址池】文本框中输入两个IP地址,表示DHCP服务分配的IP地址范围,第一个IP地址是起始IP地址,第二个IP地址是结束IP地址,二者以逗号隔开。在【DNS服务器】文本框中输入中国电信的国内DNS服务器IP地址“114.114.114.114”。
最后单击【创建】,完成。
image.png

d-查看虚拟网络列表

完成创建后可以返回【网络】界面查看网络列表。
image.png

3.用命令模式创建与管理虚拟网络与子网

由于只能创建一个Flat网络,所以先查看现有的网络情况。如果存在网络,则需要先将其删除。
这次的实验均在控制节点上完成。

a-查看虚拟网络和子网
#模拟登录
source admin-login

#查看现有子网列表
openstack subnet list

#查看现有虚拟网络列表
openstack network list

#查看现有网络接口列表
openstack port list
b-删除虚拟网络

删除虚拟网络和子网时需要先保证其下没有端口的存在,因此需要最先删除端口。

#删除网络端口
openstack port delete <端口ID>

#删除虚拟子网
openstack subnet delete <虚拟子网ID>

#删除虚拟网络
openstack network delete <虚拟网络ID>
c-创建虚拟网络及子网
#创建虚拟网络
openstack network create --share --external --provider-physical-network provider --provider-network-type flat vm-network

#查看虚拟网络获得网络ID
openstack network list

#创建虚拟子网,Flat网络需要子网和外部网络处于同一网段。
openstack subnet create --network vm-network --allocation-pool start=192.168.244.140,end=192.168.244.144 --dns-nameserver 114.114.114.114 --gateway 192.168.244.2 --subnet-range 192.168.244.0/24 vm-subnetwork

#查看虚拟子网信息
openstack subnet list

#重启网络
systemctl restart network
d-网桥管理
#查看网络情况
ip a

OpenStack中的网桥名时以"brq"开头的一串数值。
image.png

#查看网桥情况
brctl show

image.png
可以看到网桥有两个设备连接。
网桥类似于标准的交换机,其将连接在其上的物理机和云主机关联到一起,使题目可以实现相互通信。
只有当云主机创建出来以后,计算节点才会产生网桥。

;