在ESXI环境中部署fuel openstack虚拟环境

一年之前就开始接触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主机,点击配置,网络,添加网络:
01.png
连接类型选择虚拟机:
02.png
选择创建vSphere标准交换机,将下面的网卡取消勾选:
03.png
网络标签可以自行修改,vlan id选择全部:
04.png
编辑vSwitch属性,开启混杂模式:
05.png
要注意左边列表中的两项都要开启
06.png
用相同的方法再创建一个vSwitch,我这里分别是fuel_pxe和fuel_private:
01.png
最后再修改以下vSwitch0的属性,修改如下两项:
31.png
32.png

创建节点

fuel的架构如下图所示:
09.png
这里我没有部署单独的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的虚拟机,网卡配置如下图所示:
07.png
开机并挂载fuel镜像:
08.png
选择第一项直接开始安装,安装时间较长,耐心等待其安装完成。
安装完成后登录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界面了(浏览器通常会阻止访问,点击继续访问或添加例外即可):
11.png
使用默认用户名/密码:admin/admin登录,登录进去之后会提示修改密码,暂时先不修改。此外因为安装时master节点并没有连接外网,所以这时会有如下提示信息:
10.png
有以下两种解决方式:

联网方式

根据提示信息执行命令:

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节点配置:
27.png
26.png
启动controller和compute两个节点,两个节点会自动从pxe完成启动进入bootstrap,登录fuel的web界面,mater节点已经获取到两个节点的基本信息:
14.png

创建OpenStack环境

点击“New OpenStack Enviroment”创建一个OpenStack环境:
12.png
相关选项根据需要自己修改,我这里全部保持默认,点击create完成创建。

修改网络配置

点击Networks进入网络配置页面,修改Public网段,即连接外网的网段:
15.png
同时需要修改L3的网络配置,L3需要跟Public处在同一网段且地址块不能重叠:
16.png
修改DNS:
17.png
其它配置,建议勾选此选项,并将两个server地址设置为master节点的地址:10.20.0.2
28.png

添加节点

进入Nodes页面,点击Add Nodes添加已经发现到的两个节点并选择相应的角色:
20.png
上图是我第一遍操作时截的图,没有选择cinder角色,后来重新部署的时候遵从建议选择了cinder角色(fuel建议至少有一个cinder节点),这里也推荐大家部署cinder角色。在controller节点安装了cinder角色,补一个部署之后的截图:
29.png
点击节点右侧的齿轮按钮,设置一下接口配置,我的两个节点接口配置:
22.png

开始部署

以上操作完成后到Network页面检查一下网络配置是否正确:
21.png
检查通过就可以开始部署了,回到Dashboard页面,点击Deploy Changes开始部署:
24.png
经过漫长的等待,最后部署成功:
30.png
点击Horizon即可访问dashboard,输入用户名/密码:admin/admin登录:
66.png

错误汇总

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!
25.png
原因是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