最近一直在使用DevStack来安装OpenStack,注意一直二字,部署了一遍又一遍,操作系统怕是安装了不下上百次,有时是为了验证新的方案,有时是安装出错,还有时是运行过程中出错。总之是碰到了一系列的问题,有些解决了,有些终未能解决。近几日,消瘦了那么几斤,皮带眼都往回移了一格——要想瘦装OpenStack。折腾了无数遍之后,幸得CLOUDMAN提醒,可以使用Fuel来进行实际生产环境的安装部署,于是改换方案采用Fuel进行安装,本文记述其中的一些注意事项、细节以及我自己的理解。
Fuel是OpenStack自动化、工业级部署方案,详细可以查阅https://wiki.openstack.org/wiki/Fuel。其简介如下:
Fuel is an open source deployment and management tool for OpenStack. Developed as an OpenStack community effort, it provides an intuitive, GUI-driven experience for deployment and management of OpenStack, related community projects and plug-ins.
大意为Fuel是一款开源的、方便的、可视的管理和部署OpenStack的工具。
整个部署过程较简单,大家可以参考https://www.youtube.com/watch?v=5Ga28Rp7K_I,此视频一步步的详细介绍了安装方法。总体流程为:1、配置相关网络;2、安装Fuel服务器(Fuel Master);3、安装OpenStack。下面逐步介绍些其中细节。
Fuel要求整个服务器机房要有三套网络:一套用于PXE、一套用于外网(一般为互联网)、一套用于管理、存储以及虚拟机之间的通信。其总体网络需求如下图:
PXE网络主要用于Fuel主节点为其他节点安装Ubuntu系统,由此可知使用Fuel安装OpenStack除主节点外其他节点无需事先安装任何系统,也无需任何操作,只要把装上需要的网卡即可,有三个网络当然是装三块网卡,如果考虑主备可以是六块(其实网络个数可以减少一个,后面会具体介绍)。
外网简单明了,就是使得主机和虚拟机能够访问外部以及外部能够访问主机和虚拟机,否则系统将无法安装、外部也无法访问你的虚拟机。
管理、存储以及虚拟机之间的通信网络(以下简称私网),从上图中可以看出理论上这是三套网络,但是可以通过VLAN分割的方式将其划分成三个子网络。
由于PXE网络只是在部署的时候使用,所以可以将其与私网合并,当然如果不合并也可以。PXE网络与外网不能合并成一个网络,因为PXE为DHCP方式已经占掉了整个网段,如果合并将导致无法通过Fuel的网络检测。PXE网络和外网对带宽要求不高,一般千兆即可。而私网用于内部的数据传输和交换、通信等,当然带宽越宽越好,建议万兆网,并且由于此网络的网卡需要通过多种VLAN的数据包,所以交换机的所有接口需要设置成Trunk。
私网的交换机配置方式如下(以h3c s6300为例):
# 创建vlan 1 - 100
vlan 1 to 100
# 端口设一个组
port-group manual 1
# 将相应的端口加入组中
group-member GigabitEthernet 1/0/1 to GigabitEthernet 1/0/32
# 设置端口模式
port link-type trunk
# permit vlan 1 - 100
port trunk permit vlan 1 to 100
save
此步骤较简单,傻瓜化操作。
首先下载Fuel的ISO镜像,并制作成安装盘。11.0版地址为seed.fuel-infra.org/fuelweb-community-release/fuel-community-11.0.iso.torrent。
安装完成后会弹出配置界面,可以根据Fuel master节点的网络情况设置网络以及PXE等,配置完后即可通过浏览器打开管理界面,地址一般为http://hostname:8000。
Fuel主节点安装完毕后,就可以开始部署OpenStack了。
首先确保各个子节点的网络已经按照要求部署好。之后重启咯子节点,各子节点便会自动进入PXE模式被Fuel主节点发现。
在上述的管理界面中添加新的OpenStack环境,点击添加节点便会看到各个子节点,根据实际情况将其划分成控制节点、存储节点、计算节点,然后为每一个节点修改网卡对应的网络,如下图所示:
PXE网卡的无法修改,主要是修改其他两个网络,如果选择两套网络,可以将最下面的三个拖拽到PXE所在网卡中。之后按照实际需求配置网络等。点击部署便可开始部署OpenStack,坐等安装完毕。
在部署的过程中当系统安装完毕后会执行node_reboot重启子节点,重启后观察屏幕为黑屏状态,其实并不是安装错误,只是需要按下ALT+F1,即可看到登陆界面。并且经常会出现超时Eoor,系统默认的timeout值为180s,我的服务器启动一下基本要5分钟左右,所以就需要修改timeout值,折腾一番之后在fuel主节点的postgre数据库中找到了该值。(当然如果有更好的方法可以留言相告)
Fuel将各种配置写在数据库中。部署的配置信息写在nailgun库中的deployment_graph_tasks表中,找到task_name为node_reboot的项,将parameters项中的180改成你需要的值。
当然每台机器的配置、网络环境等不同,相应的超时时间也不一致,如果在安装过程中碰到其他错误,查因无果的,也可以考虑更改相应的超时时间。
此为时间同步错误,原因在于fuel主节点没有合适的时间同步,所以子节点时间同步当然无法通过。通过以下方法修改:
vim /etc/ntp.conf
添加
server asia.pool.ntp.org iburst minpoll 3 maxpoll 9
并注释掉其他的server行,之后重启ntp。
systemctl restart ntpdate.service
systemctl restart ntpd.service
必须要打开防火墙,否则会出现setup_repositories的错误。当然为了远程连接,可以打开22端口。
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
过程中也会遇到种种其他的问题,有些是网速和国内的网络造成的,可以直接重新部署。
建议先执行provision部署基本操作系统,而后再执行Deployment安装openstack,当然如果带宽不够也可以分批部署子节点。
虽然Fuel安装OpenStack很方便,但是万事都有一个过程,只有在使用DevStack安装多遍对OpenStack整个框架有了大概了解之后使用Fuel才能得心应手,否则稍微碰到些许问题就会不知所措,反而使自己失去了信心。虽然题目是第二步,其实还是第一步,离真正的使用和维护OpenStack还相差甚远。