关于OpenStack云平台部署的研究和优化

2019-12-17 08:10秦宇
科技视界 2019年33期
关键词:云平台部署

秦宇

【摘 要】在当前的云计算平台中,OpenStack占据了重要的地位。OpenStack云平台的部署过程相当复杂。本文对比研究了OpenStack部署的多套方案,并提出了优化措施。

【关键词】OpenStack;云平台;部署

中图分类号: TP393.09文献标识码: A文章编号: 2095-2457(2019)33-0192-002

DOI:10.19694/j.cnki.issn2095-2457.2019.33.094

Research and Optimization of OpenStack Cloud Platform Deployment

QIN Yu

(Guangdong vocational college of foreign languages and arts, Guangzhou Guangdong 510640, China)

【Abstract】In the current cloud computing platform, openstack occupies an important position. The deployment of openstack cloud platform is quite complex. In this paper, we compare and study several schemes of openstack deployment, and propose optimization measures.

【Key words】OpenStack; Cloud computing; Deployment

0 前言

OpenStack是眾多云平台中较为重要的一个,但其部署十分复杂,给学习,科研和生产人员造成了较大的困难,为了提高OpenStack部署的效率,本文对比研究了一些OpenStack部署的常用方法,提出了优化措施。

1 分析和设计

OpenStack的部署方式可以基于使用者分为两类:

个人使用用到以下方式:

(1)DevStack,执行shell脚本来安装一个OpenStack的开发环境。

(2)Rdo,Red Hat开源的一款部署OpenStack的工具。

(3)手动部署。

团体使用用到以下方式:

(1)Puppet,Puppet由Ruby语言编写。

(2)Ansible,是新近出现的自动化运维工具,已被Red Hat收购。

(3)SaltStack。

(4)Kolla,走的是docker容器部署路线。

(5)Fuel,大量采用了Python、Ruby和JavaScript等语言。

虽然,OpenStack的部署方式众多,但最基本的部署方式还是参考OpenStack官网的Installation Guides进行安装。由于OpenStack的版本基本上每半年都会更新一次,所以要选择合适版本的Installation Guides进行安装,建议不要每次都安装最新的版本,安装发行过一段时间的版本比较稳定,但也不要安装太旧的版本,因为有些旧版本已经不被OpenStack支持了。基于不同的linux系统会有不同的安装手册,比如如果要基于centos进行安装,就可以用如下命令查询可以使用yum在线安装的OpenStack版本:

yum list | grep release-openstack

查询结果如下:

centos-release-openstack-queens

centos-release-openstack-rocky

centos-release-openstack-stein

centos-release-openstack-train

可见当前还可以支持queens和高于此版本的OpenStack的安装,然后可以参考queens版本的安装手册进行安装。

由于参考官方手册进行在线安装时,有大量的软件包要从国外网站下载,网速较慢,为了克服这个缺点,可以一次下载好所有软件包后,自行制作yum仓库,然后把yum的安装源指向本地的服务器,这样不仅可以大大加快下载软件包的速度,也可以对于旧版本的OpenStack进行部署,方便学习和研究。

在生产环境中,还可以编写bash脚本,把OpenStack的的各个组件快速安装到各自的节点上,提高生产效率。

除了手动部署,还可以利用packstack工具进行OpenStack的快速部署。要注意主机内存最好在8G左右,因为packstack的all-in-noe安装会部署较多组件到一台节点上,如果内存不够,到了安装快结束时候,会提示内存不够,组件无法启动的错误。准备好硬件资源后,就可以开始安装了。具体的安装步骤可以参考以下网址:

https://www.rdoproject.org/install/packstack/

由于部署过程中,会在线安装很多软件包,而这些软件包又有些会有互相依赖的关系,所以即使按照以上安装手册安装,也可能会出现关于urllib3软件包的错误,而这个urllib3又是进行网络通信的关键软件包,所以会导致整个OpenStack安装失败。经过分析和实验,发现应该先用如下命令删除urllib3 软件包:

pip uninstall urllib3

然后再使用命令重新安装urllib3:

pip install urllib3

由于在部署OpenStack的过程中,被此错误中断,所以要重新运行以下命令:

packstack-allinone-answer-file packstack-answers-20191022-153728.txt

此次命令带上了参数“-answer-file”,此参数所配置的文件“packstack-answers-20191022-153728.txt”是第一次部署时候所产生的配置文件。经过大概半个小时的下载文件以及安装,可以通过如下的地址成功访问OpenStack的web管理界面:

经过统计发现大部分的部署工具都在其部署过程中利用了puppet工具。Puppet是由Puppet公司开发的系统管理框架和工具集,被用于IT服务的自动化管理。掌握puppet对于快速部署OpenStack有着重要的作用。Puppet中,一切皆资源,puppet通过module来管理系统的安装配置等流程。为了使用puppet来部署OpenStack,OpenStack推出了PuppetOpenstack项目,此项目推出了Identity(Keystone)等几十个module,这些module大部分使用了puppet官方推出的puppet-apache等基础模块,而且还自定义了很多资源,例如用于创建操作数据库的mysql_database资源。具体部署步骤可以参考官方网址:

https://github.com/openstack/puppet-openstack-integr-

ation#all-in-one

只需要执行以下三行语句:

(1)git clone https://opendev.org/openstack/puppet-openstack-integration

(2)cd puppet-openstack-integration

(3)./all-in-one.sh

Bash脚本的调用关系如下:

all-in-one.sh->run_tests.sh-> install_modules.sh

在使用install_modules.sh安装完modules后,run_tests.sh会执行puppet apply语句运行scenario-aio场景里面指定的各个class,也就是自动安装OpenStack的各个组件。整个安装完成后,会运行tempest类,来对安装好的OpenStack平台进行测试,主要是针对horizon和cinder组件。

在“Install r10k”这个过程中,会停留较长时间,在“install_modules”这个过程完成之前会耗费大量的时间,较快网速也需要大约20多分钟,前面这些前期工作完成后,就开始通过运行class真正进入到OpenStack的安装过程中了,但在接下来的安装中,经常会由于软件包的版本不一致或者缺少某个文件,比如出现“No module named queue”的错误导致安装失败,此时只好又从最开始的前期准备工作重新运行,浪费了时间。经过分析发现,可以从“run_tests.sh”脚本里面的

print_header "Running Puppet Scenario: ${SCENARIO} (1st time)"

这一行开始重新运行,在前面加上环境变量的设置等基本脚本,把这些脚本单独抽离出来形成一个新的脚本“run_class_openstack.sh”,这样在以后的每次运行class安装OpenStack出错时,可以不用再重头开始运行,节约了大量的时间。

2 结论

本文对于OpenStack的部署进行了研究分析,提出了优化措施。OpenStack的部署方式可以基于學习,研究和生产等不同的目的采用不同的部署方式。OpenStack云平台是一个每年都在不断更新的框架,所以在以后的部署中难免还会遇到新的问题,掌握好基本工具的使用和在以往的部署中积累经验,才能更好地应对新出现的问题。

【参考文献】

[1]侯圣宝.部署OpenStack生成环境实战[J].网络安全和信息化,2018,8.

[2]魏迎.OpenStack云计算平台的研究与实现[J].电子设计工程,2019,3.

[3]openstack/puppet-openstack-integration: Collection of scripts and manifests for module testing https://github.com/openstack/puppet-openstack-integration.

猜你喜欢
云平台部署
一种基于Kubernetes的Web应用部署与配置系统
晋城:安排部署 统防统治
省委安排部署下半年和今后一个时期任务
部署
省妇联部署2019年五项重点工作
企业云平台建设研究
部署“萨德”意欲何为?