一年之前就开始接触OpenStack,但是还没入门就放弃了,因为实验环境实在是太难装了,尝试了很多次均以失败告终,大多教程中都是安装devstack的方式进行部署,但是作为一个刚入门的小白,个人觉得这种方式可能并不是太友好。最近看了一份教程,了解到fuel openstack的部署方式,决定再尝试一下,据说这也是企业生产环境中经常用到的方式。
由于自己的电脑配置比较低,在笔记本上安装虚拟环境体验不是很好,正好身边有一套ESXI环境,所以尝试在ESXI环境中进行部署,尝试了很多次之后终于成功,在此记录一下部署过程,以供参考。
准备工作
首先下载fuel openstack镜像文件,主要有两个途径可以获取到fuel的镜像,第一个是fuel的官网,目前可以下载到9.0的版本。第二个是OpenStack的wiki,目前提供的最新版本是11.0:
https://www.mirantis.com/software/openstack/
https://wiki.openstack.org/wiki/Fuel#Where_to_get_Fuel
规划网络
我的esxi主机所在网络为192.168.100.0/24网段,此网段对OpenStack来说也就是公网(Public),此外还需要有一个PXE网段,用于fuel部署系统,此外还有management、storage、private等网段,我们使用三块网卡来连接这三个网段。
在ESXI中部署网络
首先是创建两个新的虚拟交换机,选中esxi主机,点击配置,网络,添加网络:
连接类型选择虚拟机:
选择创建vSphere标准交换机,将下面的网卡取消勾选:
网络标签可以自行修改,vlan id选择全部:
编辑vSwitch属性,开启混杂模式:
要注意左边列表中的两项都要开启
用相同的方法再创建一个vSwitch,我这里分别是fuel_pxe和fuel_private:
最后再修改以下vSwitch0的属性,修改如下两项:
创建节点
fuel的架构如下图所示:
这里我没有部署单独的Storage节点,只部署三个节点:master、controller和compute,三个节点的配置及网卡连接情况如下:
master节点:
8核 8G内存 100G存储 fuel_pxe vmnet vmnet
controller节点:
8核 8G内存 100G存储 fuel_pxe vmnet fuel_private
compute节点
8核 16G内存 200G存储 fuel_pxe vmnet fuel_private
master节点配置
新建名称为fuel_master的虚拟机,网卡配置如下图所示:
开机并挂载fuel镜像:
选择第一项直接开始安装,安装时间较长,耐心等待其安装完成。
安装完成后登录master节点,修改一些配置,首先是配置一个我们可以连接的ip,默认情况下eth0的ip地址已经设置为10.20.0.2,我这里选择使用eth1进行修改:
vim /etc/sysconfig/network-scrips/eth1
将配置文件中的ONBOOT=no改为yes,ip地址我这里使用的是dhcp分配的方式,当然你也可以手工指定。
修改完成后保存退出并重启网络:
service network restart
然后允许ssh登录,默认情况下是只允许10.20.0.0/24这个网段登录的:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
service iptables save
service iptables restart
查看eth1的ip地址,这时我们就可以使用eth1的ip访问mater的web界面了(浏览器通常会阻止访问,点击继续访问或添加例外即可):
使用默认用户名/密码:admin/admin登录,登录进去之后会提示修改密码,暂时先不修改。此外因为安装时master节点并没有连接外网,所以这时会有如下提示信息:
有以下两种解决方式:
联网方式
根据提示信息执行命令:
fuel-bootstrap build --activate
这种方式的前提是master节点可以连接到外网,而且根据网络环境的不同可能时间会比较长。另外这条命令在11.0的版本可以正常使用,而在9.0版本中貌似有些源已经访问不到了,所以推荐使用本地源。
本地方式
下载以下两个文件(如果失效可以自己google):
mirrors.zip:密码:j0yk
bootstraps.zip:密码:miwf
解压bootstrap.zip,上传“bootstrap”文件夹至master节点的/var/www/nailgun/目录下,覆盖原有bootstrap目录,然后执行如下命令:
fuel-bootstrap activate d01c72e6-83f4-4a19-bb86-6085e40416e6 #激活bootstrap
fuel-bootstrap list #查看处于活动状态的bootstrap
解压mirrors.zip,上传解压的“mirrors”文件夹至master节点的/var/www/nailgun/目录,
fuel-createmirror #在处于离线状态的master节点运行命令(会报错,直接忽略)
注意以上两个解压文件不要出现同名嵌套的文件夹,比如bootstrap文件夹下还有一个bootstrap文件夹。
controller和compute节点
新建两台虚拟机,配置可以自行设置,我这里按上面预先规划的配置进行设置,重点是两个节点的网卡配置,如下分别是我的controller节点和compute节点配置:
启动controller和compute两个节点,两个节点会自动从pxe完成启动进入bootstrap,登录fuel的web界面,mater节点已经获取到两个节点的基本信息:
创建OpenStack环境
点击“New OpenStack Enviroment”创建一个OpenStack环境:
相关选项根据需要自己修改,我这里全部保持默认,点击create完成创建。
修改网络配置
点击Networks进入网络配置页面,修改Public网段,即连接外网的网段:
同时需要修改L3的网络配置,L3需要跟Public处在同一网段且地址块不能重叠:
修改DNS:
其它配置,建议勾选此选项,并将两个server地址设置为master节点的地址:10.20.0.2
添加节点
进入Nodes页面,点击Add Nodes添加已经发现到的两个节点并选择相应的角色:
上图是我第一遍操作时截的图,没有选择cinder角色,后来重新部署的时候遵从建议选择了cinder角色(fuel建议至少有一个cinder节点),这里也推荐大家部署cinder角色。在controller节点安装了cinder角色,补一个部署之后的截图:
点击节点右侧的齿轮按钮,设置一下接口配置,我的两个节点接口配置:
开始部署
以上操作完成后到Network页面检查一下网络配置是否正确:
检查通过就可以开始部署了,回到Dashboard页面,点击Deploy Changes开始部署:
经过漫长的等待,最后部署成功:
点击Horizon即可访问dashboard,输入用户名/密码:admin/admin登录:
错误汇总
sync_time error
时间同步错误,原因在于fuel主节点没有合适的时间同步,所以子节点无法完成时间同步,修改fuel主节点的ntp配置即可解决:
vim /etc/ntp.conf
在server段添加如下内容,并将原来的server注释掉。
server asia.pool.ntp.org iburst minpoll 3 maxpoll 9
重启ntp服务:
systemctl restart ntpdate.service
systemctl restart ntpd.service
build_deploy_image error
错误提示信息:
All nodes are finished. Failed tasks: Task[build_deploy_image/master] Stopping the deployment process!
原因是master节点无法连接外网,修改相关网络配置即可,我这里是启用eth1网卡连接外网。
参考链接
https://blog.51cto.com/goome/1916247
https://www.cnblogs.com/shoufengwei/p/6901173.html
https://blog.csdn.net/qq_35180983/article/details/82181496