在云中,基本的概念就是租户和用户,例如X公司买了某公司的公有云,那以X公司为例,就是一个租户,而这个公司买了N多云主机给公司的员工使用,这些员工就是用户。那角色又是什么呢,这个租户中有N多云主机,总有人来管理和分配的,那这个管理员就是admin角色,而其他的用户就是普通用户,也可以适当的赋权给他们,这个角色可以理解为一系列权限的合集。

    这个租户、用户和角色的创建分配,我就不演示了,相信做IT的基本都应该了解。我们默认的OpenStack环境是有一个admin的租户,有一个admin的用户,拥有admin的权限,咱们就是用默认的做实验即可。


其一:创建云主机,并可以SSH登录


  在部署完成后,Fuel Master就可以关机,或者放在一边了,完全不影响openstack的环境使用了。但是如果整个openstack环境都关机了,那么开机也有个顺序,我们先打开controller,等开机后再打开compute主机,这样各个服务才能找到他的服务器通信。

  为了演示,我把controller内存调整为1.5G,compute内存调整为3G,以便于创建虚机,如果计算节点内存分配过小,那么创建云主机的时候就会报错。

wKioL1TDO-OjeeMPAAK3PJtttxQ686.jpg

wKiom1TDOwqCLIQEAALFVj2ReXQ774.jpg

  首先开启controller主机,然后再开启compute主机

wKioL1TDO-Sz1tkpAAEkU93PXiE355.jpg

  还记的之前部署环境的openstack的UI地址吧:172.16.0.2,用户密码同为admin

wKiom1TDOwqB1m-xAABNRISQwKs313.jpg

wKioL1TDO-TTB2kNAACxYxn3NRo838.jpg

  这里提示cookies问题,刷新浏览器或重启浏览器后可以解决

wKiom1TDOwvAd4jPAADrhIeIaks203.jpg

  进入到咱们工作平台啦

wKioL1TDO-WCBOExAAKDXkyNWyw246.jpg

  咱们首先看看这个网络,还记得Fuel UI的如下网络嘛,相信很多朋友不理解这是干什么的。这里解释下这个192.168.111.0网段是给云主机内部使用的,但是仅限于虚拟机内部通信,不能和这个网络之外通信或者上网。那这个172.16.0.0网段就是外部网络了,也是咱们可以分配给云主机做floating IP使用的地址段,这两部分都可以调整,在下面继续介绍。

wKiom1TDOwvy7mVoAAG9IBG6808296.jpg

  在openstack UI界面,打开“network topology”,看一下我们使用的网络拓扑,未来云主机都会接在“net04”这个网络上,分配的IP地址也是192.168.111.0这个网段的,网关指向中间的路由器,网关地址是192.168.111.1,这个路由链接的就是咱们的公开网络“net04_ext”这是我们的外部网络,也就是跟咱们的PC机在一个网段或者互通了。

wKioL1TDO-Whl_TJAAE_YcpdmPs282.jpg

    接下来就开始创建云主机(虚机),我们打开instances界面,单击右上角的“launch instance”开始创建

wKiom1TDOwzwPBP_AAIBqAkhsRU395.jpg

  在弹出的窗口内,“details”是云主机的相关信息,“access&security”是选择安全组,默认是defaults安全组,“networking”是选择管理的网络,“post-creation”是创建云主机后需要运行的脚本信息,需要自己添加,这几个是必须的

wKioL1TDO-axWaquAAIj1bSzyuY191.jpg

  在“details”选项内,填写新建云主机名字“test01”,flavor类型可以查看flavor菜单,里面有很多类型,针对默认的一个迷你操作系统,定义了CPU,内存和硬盘灯资源,咱们也可以收到修改,很容易理解,我就不再演示,咱们这里选择“m1.tiny”,也就是如右边所展示的包含1个vCPU、一个1G的磁盘和512M的内存,创建数量选择1,如果是批量创建,就选择你要创建的数量,例如20,当然你要计算好这个计算节点可以承受的虚机数量,包含CPU\RAM\DISK等资源,“instance boot source”选择“boot from image”,“image name”选择“testVM(12.6MB)”,这是个迷你操作系统。

wKiom1TDOwzQWQJ1AAJR2urduP8226.jpg

  “access&security”选择默认的default即可,networking则是选择net04,也可以手动创建多个不同网段的内网,只要你需要,我们这里选择关联net04,当然这里不能直接关联公共网络。

wKiom1TDOwzjCAHMAAFoOfDpeHk728.jpg

  后面选择默认即可。点击右下角的“launch”后开始创建虚机,根据磁盘等资源的大小,等待一段时间后创建完成,下图显示正在创建

wKioL1TDO-azzr4cAAGpVnfmlVg049.jpg

  如下是已经创建完成的云主机,“status”显示active,IP地址是192.168.111.3,这里应该明白点了吧

wKiom1TDOwyAb3XAAAF99thIjro119.jpg

  现在的云主机只能使用VNC来访问,这个VNC的效果真是不敢恭维,所以我习惯使用CRT来访问,那么按照前面说的,这个虚机现在只有192.168.111.3这个私有IP,这个IP只能是多个云主机之前通信,需要外部通信的话,还需要分配一个172.16.0.0的IP地址,直接在云主机内存添加网卡手动配置可不可以,当然不行,在openstack中floating IP也是一种资源,需要从IP地址池中拿出一个IP来跟云主机做关联。这里演示下。

  在该云主机的嘴右边“actions”下有一个下拉菜单,单击,然后选择“associate floating ip”

wKioL1TDO-ez4L-0AAI5JpIZRNg147.jpg

  在新弹出窗口内,我们还没看到公开网络,单击中间的+号,在下面的新窗口内选择“net04_ext”网络,单击右下角的associate进行关联

wKioL1TDO-eBNpIHAAFT0tjezIQ508.jpg






wKiom1TDOw2g_VP0AAEXMePgvpk980.jpg

  这时,回到floating ip管理页,可以看到公开网络的网段了,默认分配的172.16.0.131,当然也可以手动选择,单击右下角的associate

wKioL1TDO-ewoDXUAAG5N8ttDXc259.jpg

  好了,回到instance界面,看到此时已经分配了floating ip了

wKiom1TDOw7RjWRBAAGSwmJK2BY521.jpg

  那现在可以ping或者SSH了吗,当然不可以,这是由于安全策略的缘故,我们得修改下策略来放行ICMP和SHH

wKiom1TDOxHjo_d7AAKGqyg-m2Y048.jpg

  打开“access & security”菜单,这里默认只有default一组安全组,我们也可以创建,但是新创建的话还是得手动再跟云主机管理,而默认组已经默认关联了,我们只要修改策略就可以了,所这里我们直接修改,不再添加安全组了。

  单击default安全组左边的“manage rules”

wKioL1TDO-uyPQIKAAG1XCB_GgY783.jpg

  在新窗口,单击右上角的“add rule”

wKiom1TDOxLym_x-AAH0rLmSu5I380.jpg

  先添加ICMP,在“rule”栏选择“ALL ICMP”,下面默认全部放行即可

wKioL1TDO-3AhxjGAAMw0t8ncDE379.jpg

  看看,是不是可以ping通了

wKioL1TDO-3hc34FAAFvTm6NM08740.jpg

  接下来如上方法,添加SSH规则

wKiom1TDOxPQtZOrAACOKt9U5Tk901.jpg

  添加完毕,规则如下

wKioL1TDO-6QJ4AcAAKkHoIUD58098.jpg

  放行了SSH就可以远程登陆了,但是用户名和密码呢。如是自己上传的镜像,相信自己都晓得,也别担心,这openstack自带的镜像用户名和密码在这里。

  回到instances菜单,单击云主机名称“test01”

wKiom1TDOxTBukDxAAKCW6FBSEk945.jpg

  “overview”可以看到云主机的信息概览,在“log”里面可以看此云主机的log

wKioL1TDO-6wgI9JAANGk9G3xDs947.jpg

  拉到最低如下,可以看到用户名cirros和密码cubswin:)

wKiom1TDOxSDfC47AADMqoqcaVM267.jpg

  那现在可以使用CRT登陆了,如下。

wKioL1TDO-7wjB-CAAFwP4BWrAk372.jpg

    创建云主机完毕,也可以SSH登陆了,当然大家也可以批量创建,省心不少,也可以上传自己的镜像,比较这个自带的镜像只是用来测试的,甚至大家可以上传IOS镜像,这个如有时间,以后再做介绍。


其二:给云主机附加磁盘volume


  上面已经跟大家介绍了怎么创建和访问云主机,接下来介绍怎么给虚机附加磁盘。

  那么为什么要给云主机增加额外的磁盘呢。

  这就看需求了,一是虚机时创建在本地,还是共享存储;二是很多客户习惯本地只有OS信息,而数据则保存在其他地方以保护数据。

  总之有需求就有市场,每个客户都有自己的需求和架构,如果是需要额外磁盘,那么openstack的cinder可以提供块存储。

  接下来开始动手实践。


  我的所有虚机都已关机,接下来按照顺序依次打开Master->controller->compute主机,如图FUEL UI可以正常访问

wKiom1TDZOjTKdJ5AANQuRopZfE065.jpg

  openstack UI可以正常访问了

wKioL1TDZcKByDkTAAErCBuyX7k479.jpg

  要想使用volume得安装和配置cinder服务,我之前没有配置此服务,所以这里需要再创建一个虚机来作为cinder使用,同时也是compute主机,以后做迁移的实验来用,当然其实在第一次部署的时候,我们就可以把cinder功能同controller或者compute主机一同部署在同一台主机上这样这个功能就直接可用了,我这里是考虑以后的实验和演示效果,所以单独创建了一台虚机,如下图的cinder主机,跟之前的虚机设定是一样的,为了节省资源我给了大概800M内存,怎么开机

wKiom1TDZOiTSr_GAAKpyV-IOPM487.jpg

  已经自动从PXE启动

wKioL1TDZcPDlPhnAAFvEW-z8o8714.jpg

  启动过程中咱们进入darshboard,看一下instance,他还在,只是我上次实验完成就关机了

wKiom1TDZOngnB7AAAFkI7-BS1c747.jpg

  cinder主机马上引导完成

wKioL1TDZcOCE1kRAAKYZo-cC5E786.jpg

  FUEL已经检测到了主机

wKiom1TDZOrDlhkVAAD1BIBwEs0592.jpg

  如之前,选择新增主机,我们选中主机,然后分配compute和storage-cinder两个角色

wKioL1TDZcbBBhlSAAQlQP_mlIY570.jpg

  选择如下

wKioL1TDZcegPqg_AAM9rj4q4cY979.jpg

  应用变更

wKiom1TDZO3jUhWeAAFlywczDWs848.jpg

  然后跟之前虚机相同更改网络接口如下

wKioL1TDZcnjl0E3AAOUEUZcdYU170.jpg

  选中该主机

wKiom1TDZO_Q0VttAAEEgytgQ8E684.jpg

  单击右上角的部署变更

wKioL1TDZcvAbVVPAAMHSu3tEGs139.jpg

  确认变更信息

wKiom1TDZPHBMHVWAADxcAlCXfA895.jpg

  开始部署了,这就是FUEL的方便性,而且我们已经在生产环境部署了,效果还可以。

wKioL1TDZcziqYwWAAMgLAGEsxA113.jpg

  奇怪的是,这里提示启动失败,于是随意按键重新引导

wKiom1TDZPOSF5I3AATVFkxYEHE870.jpg

  正常引导安装,没有其他意外

wKioL1TDZc6gwTYaAAQyuzI3nNw806.jpg

  centos安装完成,接下来开始安装部署openstack的cinder和nova组件

wKiom1TDZPWgMstSAALOD7cozpY391.jpg

  这个时间不长,完成了。

wKioL1TDZdChS7PFAAD_vEq08h0470.jpg

  咱们看一下三台虚机安装的服务,可以看到controller的服务最多,有cinder的api和schedule,而volume服务在cinder主机上,compute主机上没有cinder服务,这下我们可以理解部署了cinder的volume服务才可以使用云磁盘

wKiom1TDZPfAYkN9AAZzeTSaXKU257.jpg

  展开“volumes”,单击右上角的“create volume”来创建云磁盘

wKioL1TDZdLS_lCMAAH5UCMfdHg651.jpg

  在新弹出窗口填写磁盘名字和磁盘大小,我这里默认1G来做实验,其他默认即可

wKiom1TDZPjxstR0AAGeR-ktdZA854.jpg

  创建完成,主要看“status”为available即为正常

wKiom1TDZPjiFAzVAAFqYvkWHzM058.jpg

  这时我们需要展开instances,单击“start instance”来启动云主机,以便于附加磁盘

wKioL1TDZdLAGtkWAAJKhmpq0xA580.jpg

  我是I3的CPU和8GB内存,大家可以看看我此时的资源占用情况

wKiom1TDZVODnSOnAALmz2fP28A761.jpg

  主机启动完成,我们看下主机内部分配的IP地址

wKioL1TDZi6CfwoQAAKomuEMLJI177.jpg

  然后展开“network topology”看下网络拓扑,大家应该可以大概了解咱们的虚机、内网、路由和公共网络的关系了

wKiom1TDZVSiLSjSAAE_l0UdScY155.jpg

  再回头看看部署时的这张图

wKioL1TDZi6z_h6jAAIih1ZLZfE577.jpg

  好了,既然volume创建完成,虚机依然开启,那么接下来开始分配磁盘给云主机,展开volumes,在希望分配的磁盘后面单击下拉菜单,选择“edit attachments”

wKiom1TDZVTwuukxAAJvyxVWR4s598.jpg

  在新窗口选择要把此volume附加给哪台虚机,咱们这只有test01

wKioL1TDZi7irK_4AAFxxY2tLNc393.jpg

  此时,再看已经分配出去了,而且可以看到在云主机上此volume是/dev/vdb,要记得这里

wKiom1TDZVSg2CzgAAI0s_uh99s278.jpg

  分配完成了,看看主机是否识别,使用CRT连接到云主机,由于这是mini Ubuntu系统,使用管理命令需要sodu,使用sudo fdisk -l看下是否识别到了vdb

wKioL1TDZi_iPQ51AATHXACxH68944.jpg

  从上面看已经识别到了,然后咱们开始格式化,命令如下

wKioL1TDZi-y9v_lAATuprJNbTI801.jpg

  然后格成文件系统并挂载

wKiom1TDZVXD6O0WAAM9j2OUlps920.jpg

  挂在后可以正常使用喽,是不是很好用啊。

  那怎么卸载呢,是不是直接删除volume就可以了呢,当然不行,反正之前Havana版本直接删除volume会一直卡在删除状态,需要手动再底层删除,UI界面是没办法了,这也是一个BUG,不知道在juno版本有没有修复,你们可以测试下。

  当然那也不是正常的操作流程,那么我们按照正常流程走一遍。

  首先需要我们在云主机上umount该磁盘,如下

wKioL1TDZjCgrK4_AAEPn7_jwhM001.jpg

  然后回到“vilumes”界面,在右侧的下拉菜单依旧选择“edit attachments”

wKiom1TDZVbyvKjqAAJPk-ZhZRs551.jpg

  在新弹出窗口选择detach volume

wKiom1TDZVazwY2xAAD4j1wDQ_I724.jpg

  确认

wKioL1TDZjDA3_CsAAC6nraH6To870.jpg

  现在可以看到volume已经detach了,就是和云主机解除绑定了。

wKiom1TDZVbyyfdFAAI6HcL82xE644.jpg

    以上是关于volume的操作。


    我这实际环境中使用的情形跟大家分享下:

    我这里云主机创建在本地,cinder使用共享存储,数据全部存储在volume上,一旦虚机出现问题或者物理主机故障,会把volume再挂载到其他主机上,这样可以保证数据不丢失,也是针对目前openstack HA功能缺失或者不完善的一种不完美的解决方案。


    接下来如果有时间,我会写一下虚机迁移等实验。