openstack部署与使用
本例子中演示的是使用redhat开源的packstack在单机上一键部署openstack,安装train版本的openstack
部署openstack
环境准备:
| 系统 | centos7 |
| ip | 192.168.72.137 |
1、禁用NetworkManager和firewalld并停止服务,如下:
systemctl disable NetworkManager --now
systemctl disable firewalld --now
2、禁用slinux,命令如下:
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config #永久
setenforce 0 #临时
3、设置主机名并添加hosts,如下:
4、安装openstack-train源,如下:
yum -y install centos-release-openstack-train
5、安装packstack,命令如下:
yum -y install openstack-packstack
6、安装openstack,执行命令如下:
packstack --allinone
安装完成后,可以看到成功字样,如图:

默认的登录账号和密码就在上面的/root/packstack-answers-2023….文件中,字段如图:

7、使用上图中的账号密码登录openstack,如图:

注:根据需要自行修改密码即可
8、如果要重启openstack,可执行如下命令:
systemctl restart openstack-*
使用openstack
一、配置网桥和网卡
如果不配置网桥,默认情况下通过openstack创建虚拟机是不能与外面通信的,因此需要做一些配置
最终配置后的网卡结果,如图:

上图中的ens33为服务器的主网卡,可以理解为对外网卡,用于ssh连接,br-ex为openstack网桥,用于内部虚拟机与外部通信,ens37为给机器添加的第二块网卡,原来是72.133是ens37的网卡,我们现在将其修改为br-ex的
注:我们此次演示使用两块网卡,一块用于管理端登录,另一块用于给虚拟机分配浮动IP,实际上用一块网卡也可以成功的,如果实际生产环境中,一般两块网卡是不同网段,我这里为了方便,演示为同网段
1、首先查看网桥信息,如图:

- br-ex:连接外部网络的网桥
- br-int:集成网桥,实例的虚拟网卡以及虚拟设备都将连接到此网桥
查看网桥br-ex的端口信息,如图:

从上图看出,并没有网卡连接到网桥br-ex上,因此此时openstack中的实例是不能与外网通信的,下面我们进行配置,将网卡ens37与br-ex关联起来
2、复制网卡ens37,并重命名为ifcfg-br-ex,如下:
cd /etc/sysconf/network-scripts/
cp ifcfg-ens37 ifcfg-br-ex
修改ifcfg-br-ex网卡文件内容如下:

- TYPE:设置了一个Open vSwitch(OVS)网桥接口
- DEVICETYPE:设备类型为ovs
修改ifcfg-ens37网卡配置文件,如图:

- TYPE=”OVSPort”:表示该网卡是一个 Open vSwitch(OVS)端口
- OVS_BRIDGE:指定网桥为br-ex
重启网卡,查看网卡IP情况,br-ex地址已经更改为原ens37地址,如图:

此时再次查看网桥端口关联情况,已经关联到ens37,如图:

二、配置网络和路由
1、通过admin用户登录,删除自带的demo路由,点击管理员-网络-路由-删除路由demo,如图:

2、 删除自带的public网络的子网,点击管理员-网络-网络-public-子网,如图:

3、重新创建一个同名子网,如图:


- 地址池:这个地址池的IP就是下面分配的浮动IP的地址池
注:这个public网络就是让各个租户来连接的,并且是可以访问internet的网络
4、新建一个普通用户guan,并使用guan用户登录openstack,如果想通过普通用户创建虚拟机,那么必须先创建网络并与共享网络连接才行,进入网络界面,此时是可以看到管理员用户创建的共享网络public的,如图:

点击创建网络,如图:


- 网络地址可自定义即可,这个地址就是内部虚拟机的网卡地址

- 地址池的范围就是内部虚拟机的网卡IP范围
5、 再次通过admin用户登录openstack,可以看到用户guan创建的网络,如图:

注:因为创建用户时指定了所在项目为new-project,因此网络项目为new-project
6、切换回用户guan登录,创建路由,实现网络与管理员创建的共享网络关联,如图:

7、创建完路由后,需要将路由连接内网,点击网络拓扑,此时guan-net和public还没连接起来,如图:

鼠标放在路由上,然后点击添加接口,如图:

选择上面创建的子网,IP地址可选,如图:

再次查看网络拓扑,可以看到已经内网已经与外网关联起来,如图:

网络已经规划完毕,接下来可以创建虚拟机了
实战
下面演示下如何通过iso来创建一个系统模板镜像,以后使用此模板创建虚拟机即可,类似exsi中的模板
1、首先通过guan用户登录openstack,点击项目-卷-创建卷,创建一个空白卷作为系统盘使用,如图:

在创建卷页面,输入卷名以及卷的大小,如图:

创建后点击编辑卷,勾选可启动,如图:

2、点击项目-计算-镜像,上传iso镜像文件,如图:

3、登录admin用户,创建实例类型,实例类型可以理解为虚拟机的配置模板,按照此配置创建虚拟机,如图:

注意:实例类型必须通过admin用户创建,其余用户创建不了的
4、创建实例,如图:

源选择Image,不创建新卷,并使用centos-iso,如图:

选择实例类型,实例类型是admin用户创建的,如图:

选择网络,直接选择我们在guan用户下创建的网络即可,如图:

其余功能目前还没配置,因此直接点击创建实例即可,可看到实例状态为运行,如图:

点击实例右侧的工具栏,点击连接卷,如图:

选择我们之前创建的空白卷,目的是将系统安装到此空白卷中,如图:

连接后,进入实例控制台,安装系统即可,如图:

安装完成后,先不用点击Reboot,因为我们是要制作系统模板,此时的系统已经安装到了卷中,注意要记住安装密码,这是模板密码,以后每个系统的默认密码都是此密码
5、先分离卷,点击右侧动作的分离卷,然后把上一步连接的卷分离开
6、关闭实例,点击动作菜单中的关闭实例按钮,关闭即可
7、进入卷页面,点击右侧菜单中的上传镜像,如图:

输入镜像名称,选择类型为QCOW2,如图:

上传后在计算–镜像中可以看到刚创建的镜像,如图:

至此,系统模板已经创建完成
使用模板安装系统
1、使用此模板来创建实例试试,在源位置选择此模板,如图:

其余选项与上面大体相同,不在演示,点击创建即可,此时创建的实例就不是新建机器了,而是直接启动机器,如图:

安装之后的网络拓扑是这样的,如图:

注意:使用模板安装后,就不需要连接卷了,此时内部的机器已经可以上网了(ping www.baidu.com通)
2、给实例分配一个浮动IP,如图:

点击加号分配一个浮动IP,如图:


最后点击关联即可,如图:

绑定后的实例界面可以看到两个IP,一个内网IP,一个浮动IP,如图:

为什么需要浮动IP?
默认情况下创建的虚拟机为内部网路,也就是10.0.0.0网段,此机器虽然可以上网,但是外面无法访问他,因此就需要一个浮动IP,通过浮动IP即可访问到内部的虚拟机,类似腾讯云的公网IP一样的原理,相当于浮动IP与内部网卡绑定到一起的
3、在宿主机ping这个浮动IP,看是否能通,如图:

4、通过ssh,通过浮动IP连接虚拟机,可以看到连接成功,如图:

5、通过内部虚拟机来ping外网,发现也可以ping通,如图:

注:如果无法进行ssh连接或者网络无法进出,可能是安全组规则的限制,默认情况下创建的实例使用的默认安全组规则default,可根据需要修改或者自己创建新的安全组规则

openstack的底层实际是kvm虚拟机,我们安装好后,在宿主机上执行命令virsh list –all,即可看到,如图:



