在云中,基本的概念就是租户和用户,例如X公司买了某公司的公有云,那以X公司为例,就是一个租户,而这个公司买了N多云主机给公司的员工使用,这些员工就是用户。那角色又是什么呢,这个租户中有N多云主机,总有人来管理和分配的,那这个管理员就是admin角色,而其他的用户就是普通用户,也可以适当的赋权给他们,这个角色可以理解为一系列权限的合集。
这个租户、用户和角色的创建分配,我就不演示了,相信做IT的基本都应该了解。我们默认的OpenStack环境是有一个admin的租户,有一个admin的用户,拥有admin的权限,咱们就是用默认的做实验即可。
其一:创建云主机,并可以SSH登录
在部署完成后,Fuel Master就可以关机,或者放在一边了,完全不影响openstack的环境使用了。但是如果整个openstack环境都关机了,那么开机也有个顺序,我们先打开controller,等开机后再打开compute主机,这样各个服务才能找到他的服务器通信。
为了演示,我把controller内存调整为1.5G,compute内存调整为3G,以便于创建虚机,如果计算节点内存分配过小,那么创建云主机的时候就会报错。
首先开启controller主机,然后再开启compute主机
还记的之前部署环境的openstack的UI地址吧:172.16.0.2,用户密码同为admin
这里提示cookies问题,刷新浏览器或重启浏览器后可以解决
进入到咱们工作平台啦
咱们首先看看这个网络,还记得Fuel UI的如下网络嘛,相信很多朋友不理解这是干什么的。这里解释下这个192.168.111.0网段是给云主机内部使用的,但是仅限于虚拟机内部通信,不能和这个网络之外通信或者上网。那这个172.16.0.0网段就是外部网络了,也是咱们可以分配给云主机做floating IP使用的地址段,这两部分都可以调整,在下面继续介绍。
在openstack UI界面,打开“network topology”,看一下我们使用的网络拓扑,未来云主机都会接在“net04”这个网络上,分配的IP地址也是192.168.111.0这个网段的,网关指向中间的路由器,网关地址是192.168.111.1,这个路由链接的就是咱们的公开网络“net04_ext”这是我们的外部网络,也就是跟咱们的PC机在一个网段或者互通了。
接下来就开始创建云主机(虚机),我们打开instances界面,单击右上角的“launch instance”开始创建
在弹出的窗口内,“details”是云主机的相关信息,“access&security”是选择安全组,默认是defaults安全组,“networking”是选择管理的网络,“post-creation”是创建云主机后需要运行的脚本信息,需要自己添加,这几个是必须的
在“details”选项内,填写新建云主机名字“test01”,flavor类型可以查看flavor菜单,里面有很多类型,针对默认的一个迷你操作系统,定义了CPU,内存和硬盘灯资源,咱们也可以收到修改,很容易理解,我就不再演示,咱们这里选择“m1.tiny”,也就是如右边所展示的包含1个vCPU、一个1G的磁盘和512M的内存,创建数量选择1,如果是批量创建,就选择你要创建的数量,例如20,当然你要计算好这个计算节点可以承受的虚机数量,包含CPU\RAM\DISK等资源,“instance boot source”选择“boot from p_w_picpath”,“p_w_picpath name”选择“testVM(12.6MB)”,这是个迷你操作系统。
“access&security”选择默认的default即可,networking则是选择net04,也可以手动创建多个不同网段的内网,只要你需要,我们这里选择关联net04,当然这里不能直接关联公共网络。
后面选择默认即可。点击右下角的“launch”后开始创建虚机,根据磁盘等资源的大小,等待一段时间后创建完成,下图显示正在创建
如下是已经创建完成的云主机,“status”显示active,IP地址是192.168.111.3,这里应该明白点了吧
现在的云主机只能使用VNC来访问,这个VNC的效果真是不敢恭维,所以我习惯使用CRT来访问,那么按照前面说的,这个虚机现在只有192.168.111.3这个私有IP,这个IP只能是多个云主机之前通信,需要外部通信的话,还需要分配一个172.16.0.0的IP地址,直接在云主机内存添加网卡手动配置可不可以,当然不行,在openstack中floating IP也是一种资源,需要从IP地址池中拿出一个IP来跟云主机做关联。这里演示下。
在该云主机的嘴右边“actions”下有一个下拉菜单,单击,然后选择“associate floating ip”
在新弹出窗口内,我们还没看到公开网络,单击中间的+号,在下面的新窗口内选择“net04_ext”网络,单击右下角的associate进行关联
这时,回到floating ip管理页,可以看到公开网络的网段了,默认分配的172.16.0.131,当然也可以手动选择,单击右下角的associate
好了,回到instance界面,看到此时已经分配了floating ip了
那现在可以ping或者SSH了吗,当然不可以,这是由于安全策略的缘故,我们得修改下策略来放行ICMP和SHH
打开“access & security”菜单,这里默认只有default一组安全组,我们也可以创建,但是新创建的话还是得手动再跟云主机管理,而默认组已经默认关联了,我们只要修改策略就可以了,所这里我们直接修改,不再添加安全组了。
单击default安全组左边的“manage rules”
在新窗口,单击右上角的“add rule”
先添加ICMP,在“rule”栏选择“ALL ICMP”,下面默认全部放行即可
看看,是不是可以ping通了
接下来如上方法,添加SSH规则
添加完毕,规则如下
放行了SSH就可以远程登陆了,但是用户名和密码呢。如是自己上传的镜像,相信自己都晓得,也别担心,这openstack自带的镜像用户名和密码在这里。
回到instances菜单,单击云主机名称“test01”
“overview”可以看到云主机的信息概览,在“log”里面可以看此云主机的log
拉到最低如下,可以看到用户名cirros和密码cubswin:)
那现在可以使用CRT登陆了,如下。
创建云主机完毕,也可以SSH登陆了,当然大家也可以批量创建,省心不少,也可以上传自己的镜像,比较这个自带的镜像只是用来测试的,甚至大家可以上传IOS镜像,这个如有时间,以后再做介绍。
其二:给云主机附加磁盘volume
上面已经跟大家介绍了怎么创建和访问云主机,接下来介绍怎么给虚机附加磁盘。
那么为什么要给云主机增加额外的磁盘呢。
这就看需求了,一是虚机时创建在本地,还是共享存储;二是很多客户习惯本地只有OS信息,而数据则保存在其他地方以保护数据。
总之有需求就有市场,每个客户都有自己的需求和架构,如果是需要额外磁盘,那么openstack的cinder可以提供块存储。
接下来开始动手实践。
我的所有虚机都已关机,接下来按照顺序依次打开Master->controller->compute主机,如图FUEL UI可以正常访问
openstack UI可以正常访问了
要想使用volume得安装和配置cinder服务,我之前没有配置此服务,所以这里需要再创建一个虚机来作为cinder使用,同时也是compute主机,以后做迁移的实验来用,当然其实在第一次部署的时候,我们就可以把cinder功能同controller或者compute主机一同部署在同一台主机上这样这个功能就直接可用了,我这里是考虑以后的实验和演示效果,所以单独创建了一台虚机,如下图的cinder主机,跟之前的虚机设定是一样的,为了节省资源我给了大概800M内存,怎么开机
已经自动从PXE启动
启动过程中咱们进入darshboard,看一下instance,他还在,只是我上次实验完成就关机了
cinder主机马上引导完成
FUEL已经检测到了主机
如之前,选择新增主机,我们选中主机,然后分配compute和storage-cinder两个角色
选择如下
应用变更
然后跟之前虚机相同更改网络接口如下
选中该主机
单击右上角的部署变更
确认变更信息
开始部署了,这就是FUEL的方便性,而且我们已经在生产环境部署了,效果还可以。
奇怪的是,这里提示启动失败,于是随意按键重新引导
正常引导安装,没有其他意外
centos安装完成,接下来开始安装部署openstack的cinder和nova组件
这个时间不长,完成了。
咱们看一下三台虚机安装的服务,可以看到controller的服务最多,有cinder的api和schedule,而volume服务在cinder主机上,compute主机上没有cinder服务,这下我们可以理解部署了cinder的volume服务才可以使用云磁盘
展开“volumes”,单击右上角的“create volume”来创建云磁盘
在新弹出窗口填写磁盘名字和磁盘大小,我这里默认1G来做实验,其他默认即可
创建完成,主要看“status”为available即为正常
这时我们需要展开instances,单击“start instance”来启动云主机,以便于附加磁盘
我是I3的CPU和8GB内存,大家可以看看我此时的资源占用情况
主机启动完成,我们看下主机内部分配的IP地址
然后展开“network topology”看下网络拓扑,大家应该可以大概了解咱们的虚机、内网、路由和公共网络的关系了
再回头看看部署时的这张图
好了,既然volume创建完成,虚机依然开启,那么接下来开始分配磁盘给云主机,展开volumes,在希望分配的磁盘后面单击下拉菜单,选择“edit p_w_uploads”
在新窗口选择要把此volume附加给哪台虚机,咱们这只有test01
此时,再看已经分配出去了,而且可以看到在云主机上此volume是/dev/vdb,要记得这里
分配完成了,看看主机是否识别,使用CRT连接到云主机,由于这是mini Ubuntu系统,使用管理命令需要sodu,使用sudo fdisk -l看下是否识别到了vdb
从上面看已经识别到了,然后咱们开始格式化,命令如下
然后格成文件系统并挂载
挂在后可以正常使用喽,是不是很好用啊。
那怎么卸载呢,是不是直接删除volume就可以了呢,当然不行,反正之前Havana版本直接删除volume会一直卡在删除状态,需要手动再底层删除,UI界面是没办法了,这也是一个BUG,不知道在juno版本有没有修复,你们可以测试下。
当然那也不是正常的操作流程,那么我们按照正常流程走一遍。
首先需要我们在云主机上umount该磁盘,如下
然后回到“vilumes”界面,在右侧的下拉菜单依旧选择“edit p_w_uploads”
在新弹出窗口选择detach volume
确认
现在可以看到volume已经detach了,就是和云主机解除绑定了。
以上是关于volume的操作。
我这实际环境中使用的情形跟大家分享下:
我这里云主机创建在本地,cinder使用共享存储,数据全部存储在volume上,一旦虚机出现问题或者物理主机故障,会把volume再挂载到其他主机上,这样可以保证数据不丢失,也是针对目前openstack HA功能缺失或者不完善的一种不完美的解决方案。
接下来如果有时间,我会写一下虚机迁移等实验。