很多人都反馈学习OpenStack困难重重,本文作者也经历了从部署到运维OpenStack的一路艰辛,为此,作者将自己学习OpenStack中的难点和关注点与读者分享,介绍了OpenStack要着重学习的重点领域和知识,希望对大家有所帮助。
前言
随着云计算技术的发展,技术的不断成熟,越来越多的企业开始在公司内部部署私有云计算平台。处于成本考虑,开源的云计算管理平台OpenStack也正在被更多的技术人员所学习及部署。云计算虽然具备很多好处,比如灵活性、伸缩性和按需分配等特性,但是在部署上却需要一个对开源研究颇深的团队来进行部署和管理。OpenStack组件众多,部署较为困难,出了问题,排错较难。由于其每半年更新一次版本,较为频繁。企业不太可能每半年就更新一次云平台版本,所以会造成版本间隙过大。
图片来自包图网
虽然其发展势头强劲,但是无可避免的问题就是部署OpenStack需要较为资深的开源技术能力和团队。学习OpenStack和掌握OpenStack中的难点也就成为了IT技术人员较为关心的话题了。
概念回顾
为了让读者更好的学习OpenStack,我们简单的回顾一下它的基本概念。OpenStack是一个开源的具有高可用性及扩展性的云计算平台。支持管理大部分主流的hypervisors,如KVM,XenServer,VMware,Oracle VM,Xen等。同时OpenStack是一个开源云计算解决方案。可以加速高伸缩性的公共和私有云(IaaS)的部署、管理、配置。使用OpenStack作为基础,数据中心操作者可以快速方便的通过现存基础架构创建云服务。让IT管理人员使用计算资源像使用电力水利那样,按需随时获得,并对使用量进行付费,完全颠覆了传统数据中心建设和运维模式。通过上面的简单介绍,我们知道OpenStack可以建立私有云、公有云以及混合云,是一个提供IAAS层服务的基础设施云计算管理平台。OpenStack本身是由多个功能组件组成,来共同完成以上功能。由于OpenStack处于社区维护,各个组件功能也在各大企业和社区的支持下不断的完善,新的功能组件也在不断的涌现。目前OpenStack常用的组件主要有以下几类:
认证模块(Keystone)
代号为Keystone,在OpenStack框架中主要负责管理身份验证、服务规则和服务令牌功能的模块。用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过Keystone 来处理。Keystone类似一个服务总线, 或者说是整个OpenStack框架的注册表,其他服务通过keystone来注册其服务的Endpoint(服务访问的URL),任何服务之间相互的调用, 需要经过Keystone的身份验证,来获得目标服务的Endpoint来找到目标服务。
计算模块(Nova)
代号为Nova,主要负责管理计算资源、网络资源、存储资源等可扩展性的平台,是OpenStack中的计算资源控制模块。Nova自身并没有提供任何虚拟化能力,需要通过相关受支持的驱动与各种Hypervisors交互,比如KVM、PowerVM、VMware等。
镜像模块(Glance)
代号为Glance,主要负责管理OpenStack镜像服务,用来注册、登陆和检索虚拟机镜像。服务提供了一个RESTAPI,能够查询虚拟机镜像元数据和检索的实际镜像。通过镜像服务提供的虚拟机镜像可以存储在不同的位置,从简单的文件系统对象存储到类似OpenStack对象存储系统。
Dashboard模块(Horizon)
代号为Horizon,是OpenStack的Dashboard,提供了一个基于web图形的用户操作界面,大多数针对对象的操作都可以通过其来完成。通过此界面,管理员可以较快的上手OpenStack,执行常规的操作。
块存储模块(Cinder)
代号为Cinder,主要负责OpenStack中块存储的管理。为VM提供持久化的存储服务。在F版之后,从Nova-volume中分离出来,立项名为Cinder,独立提供块存储服务。
网络模块(Neutron)
代号为Neutron,主要负责OpenStack中的网络管理,也是所有组件中最为复杂的模块。它管理OpenStack中的所有虚拟网络和物理网络接入与转发行为,提供防火墙及隔离等方面的高级网络管理能力。
对象存储模块(Swift)
代号为Swift,是OpenStack中提供的一个对象存储系统,也是所有组件内名气相对较小的一个,为什么会这样呢,估计是因为采用RestfulHttp接口,主要为互联网提供服务的原因吧,还没有大规模的被众多的企业所接受。
学习难点
很多人都反馈学习OpenStack困难重重,部署过程中,“坑”不是一般的多,实在是繁琐。而且出了问题还需要很强的排查错误的能力,对Linux自身的技能要求颇高。由于OpenStack是开源产品,企业可以根据自身实际需求进行定制化,所以也要求技术人员具备编程基础,有助于环境的搭建和后期的运维。前面已经谈过,网络模块应该算是OpenStack中最为复杂的模块了,结构复杂,概念较多,没有一定的网络基础还真不能玩转OpenStack。
我本身从事OpenStack工作虽然不是太久,但是也经历了从部署到运维OpenStack的一路艰辛。学习的过程中,更是从一个坑跳到了另一个坑,感觉就从没有上岸过。大家都知道OpenStack就是一整套云计算的解决方案的框架,里面集合了包括存储、计算、网络、Web、数据库等多种技术,这种方式即保证了服务的灵活性,能够适应不同的应用场景,同时也加大了学习的难度。借着TWT的优秀平台,将自己学习OpenStack中的难点和关注点与各位分享,希望可以对大家有帮助,同时让自己学习更多。
1、自动化知识的储备
要想学习好OpenStack就必须具备自动化脚本或者简单开发的知识。众所周知OpenStack的部署和运维过程中,需要用到很多的开源技术支持。比如高可用方面需要用到keepalived、pacemaker、HAproxy等软件。运维中需要用到puppet、ansible或者saltstack等软件。OpenStack的部署很复杂,如果手动部署那绝对是灾难的,而且也容易出错。所以一般都会采用自动化部署脚本方式进行自动部署,减少人为的干预,降低错误率。在这方面,建议搭建可以主要学习一下python和bashshell,毕竟OpenStack很多代码是用python所写。在业余时间【一天一次】,建议多阅读一下OpenStack的源码,不懂不要紧,边学边读,这样有助于后期的知识消化和理解。
2、数据库知识的储备
OpenStack中除了Dashboard意外,其他的组件都需要数据库的支持。无论是MySQL还是MariaDB,或者其他数据库。很多情况下,用户通过界面对OpenStack进行操作,如果出现需要修改数据库的问题,就必须要具备数据库的排错能力了,至少具备熟练的操作能力。举个例子,有个时候我们在界面上发出删除主机的指令,但是由于某种情况不能被成功操作。这时候就需要在后台的Nova数据库中找到相关的记录,将其通过update语句改为已删除,避免统计错误。当然这只是一个普通的实例,大家在学习OpenStack的路上估计会经常与数据库打交道,不要嫌烦,要建立开源理念。
3、网络知识的储备
OpenStack中最为复杂、恼人等组件就是网络模块【Neutron】了。不夸张的说,你如果跨过了网络模块这个大坑,你就算是学会了OpenStack的60%了。很多人都在OpenStack的学习道路上,折在网络大坑的不在少数。从网络的物理设备到网络的逻辑配置,甚至架构都要熟悉。比如要知道简单的VLAN、Flat、DHCP、Bridge(Linuxbridge或者ovs)、NAT以路由,甚至是SDN等技术。OpenStack中关于网络的指令很多,功能异常复杂。要学会常用的一些指令,比如neutronnet-list用于查看当前租户的所有网络信息,加上—all-tenant就可以list出所有的。Neutron net-showNETID查看某个网络的详细信息。Neutronnet-create创建网络,net-delete删除玩了过等等。更多的指令,建议大家去OpenStack官网看一下。
4、存储知识的储备
OpenStack经过近10年的发展已经对业界常用的存储类型进行了支持。无论是NFS、SAN还是local方式。从功能上OpenStack常用的存储有Swift对象存储,类似于AWS的S3服务,不过Swift具备更强的扩展性、冗余和持久性,当然了,也兼容S3API。Cinder块存储,提供类似于AWS的EBS块存储服务,可以通过界面操作挂载到虚拟机上,提供持久化的数据存储。存储知识的存储有利于我们合理的规划OpenStack的存储用途。分布式存储已经占据了OpenStack的大部分市场,比如Ceph、GPFS等。熟悉哪些存储的配置和备份技能,来从侧面保障OpenStack存储方面的稳定和数据可靠。
5、虚拟化知识的储备
OpenStack支持KVM、Hyper-V、VMWare、Xen、Docker等主流虚拟化技术。可以看到,OpenStack主要是利用Libvirt进行的虚拟机操作,但是也支持直接调用原生的API进行操作。要理解虚拟化的功能是什么?Hypervisor可以对下层(HostOS)硬件资源(物理CPU、内存、磁盘、网卡、显卡等)进行封装、隔离,抽象为另一种形式的逻辑资源,再提供给上层(GuestOS)使用。所以你可以理解Hypervisor其实就是联系Host OS和GuestOS的一个中间件,当然虚拟化可以将一份资源抽象为多份,也可以将多份资源抽象为一份。
典型场景解析
场景一、安装OpenStack之前的基础环境准备
OpenStack是一个开源的架构平台,需要较多的开源软件进行辅助支撑。所以在安装OpenStack之前要提前做好以下准备工作:
1、 下载好相关的开源软件,或者搭建解决依赖关系的YUM本地源。依据个人经验,建议大家提前准备YUM源,便于顺利安装开源软件,无需人工参与。
2、 DNS上提前注册好相关管理节点的FQDN名
3、 确保网络环境畅通,通过网络隔离出管理VLAN和虚拟机VLAN
4、 提前准备群集IP
5、 系统环境准备,比如关闭防火墙及Selinux功能
场景二、自动化配置工具的准备
目前部署OpenStack都是采用自动化的方式部署,简单不易出错,比如Mirantis的Fuel工具,或者其他IT厂商自研的工具。但是后期具体的配置变更,就要需要使用方根据自身习惯自行决定了。我们采用的是SaltStack作为批量配置工具。
1、 在一个独立虚拟机中安装Salt Stack主控节点
2、 所有的管理及计算节点安装Salt Stack客户端
3、 配置客户端Salt Stack配置文件,指向主控服务器
4、 通过Salt ‘’ –A命令接受所有客户端管理
5、 发布Salt ‘’ test.ping确定环境正常
场景三、OpenStack的联调测试
安装好OpenStack之后,需要验证其环境是否可以正常工作。一般可以通过以下步骤逐级查看。
1、 查看所有组件的日志,查看是否有错误信息
2、 登陆Dashboard,对所有组件进行浏览
3、 创建一台虚拟机,并针对虚拟机执行各种常规操作,如删除、修改配置、冷热迁移等
4、 物理将某台计算节点down掉,查看是否可以在另外的节点启动VM(如果做了高可用的话)
5、 所有计算节点之间模拟传输大文件
总结
以上是对OpenStack学习中的关注点的说明,指出了OpenStack要着重学习的重点领域和知识。通过以上的介绍,读者可以认识到OpenStack的由来和功能,部署需要做哪些准备,最常见的疑难问题发生在哪个部分。当然我自己也在学习OpenStack的路上,也是按照这个思路来学习。遇到问题也会经常在TWT寻找大咖的支持和解答。大家可以多浏览TWT和OpenStack官方网站,学习新的知识点,解决更多的难点。再次希望这篇文章可以对大家在学习OpenStack的道路上有所帮助。
作者:张志强,多年的云计算、虚拟化架构设计、企业信息化建设、自动化运维经验。熟练掌握X86、Power、存储、虚拟化等硬件设备调优与配置。拥有丰富的混合元架构及管理经验,信息安全及网络架构的设计与运维。
本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://jmbhsh.com/zixun/34595.html