端午节之前,一时兴起,想参考官方文档搭建一个openstack最新版本Ussuri的实验环境,没想到失败了,遇到很多故障点,排除了这个,那个又来了,让人应接不暇。
openstack的Ussuri是今年5月13日发行,目前到了Maintained状态。最新的还有Victoria,还处于研发阶段。所以最新的就是Ussuri版本。Ussuri对可支持的linux操作系统提出了更高的要求,在CentOS底层操作系统这块,需要匹配CentOS8版本。如下所示:
而对于Python模块的支持,也相应升级到了Python3,虽然官方文档里面没有明说,在安装Ussuri各组件的时候能看出来。
总而言之,言而总之,抱着尝鲜的态度去搭建openstack Ussuri版本以失败告终,最后老老实实跟着官方文档搭建了另一个版本,即Stein,这次就比较成功。在搭建Stein版本之前,还搭建了五节点的Rocky版本,实验环境能满足各项测试。这次搭建Stein单纯只是把官方文档的搭建步骤再熟悉一下,有了前几次搭建的经验教训,这次搭建过程更为顺利一些,时间比之前缩短了两倍都不止。
网上有很多网友自己搭建openstack各版本的教程分享,动不动就十篇二十篇左右的规模。看得多了,会发现他们都是跟着官方文档依葫芦画瓢,所以最为行之有效的方法还是跟着官方文档走一遍。对于各组件概念的介绍以及细节部分的补充都很详尽。
不管openstack的版本如何变化,核心的组件是基本保持不变的,即用于认证的keystone,用于网络服务的neutron,用于镜像服务的glance,用于资源使用情况跟踪的placement,用于计算的nova,用于web前段展示的dashboard,用于存储服务的cinder。
把架构图搞懂了,再跟着官方文档一步步的部署各组件,对于理解openstack的整体架构是一个递进的关系。
和Rocky版本一样,这次的openstack实验过程仍然用到了五个节点,一个控制节点,一个计算节点,一个块存储节点,两个对象存储节点,虚拟机规划基本如下图所示:
其中控制节点和计算节点各分配了8GB内存,块存储节点以及对象存储节点各分配了4GB内存,并额外配比了两块独立的硬盘。每个虚拟机配置了两块网卡,其中192.168.18.x用于外网环境,10.0.0.x用于内网环境。分别对应于openstack网络部分的provider network(外网)和management network(内网)网络接口服务。所有虚拟机操作系统都使用CentOS7.4版本。
官方文档建议如下:
对于任何版本的openstack来说,在安装各组件之前,统一安装的内容如下:
1,时间同步;
2,资源包源的更新;
3,数据库配置;
4,消息队列配置;
5,Etcd配置。
之后才是开始进行各组件的安装:
计算了一下时间,我从端午节中午1点开始动工,到4点收工,一共耗费3小时时间,时间上算是比较快的了。但相比K8S的一键部署,openstack还是显得要繁琐得多,尤其每安装一个组件,就需要到keystone配置文件里面去进行大批量的设置。
当然,除了目前通用的安装配置方法,openstack也提供了更快速的部署方法,如文档所述:
这个只有在今后的实验过程中慢慢体会了。
Stein版本搭建完成之后,可以通过几个方面来验证实验是否成功。首先是web前段展示部分,在这里以图形化界面的方式展示openstack云服务器的整体框架:
计算节点部署完毕之后,可以通过在控制节点执行openstack network agent list来查看和计算节点的联动:
块存储节点部署完毕之后,可以通过在控制节点上执行openstack volume service list来查看和块存储节点的联动:
网络组件和存储服务组件部署完毕之后,可以通过在公网和私网分别启动实例的方式来验证是否成功:
虚拟机重启之后,实例处于shutoff状态,可以通过nova start instance-name的方式来启动实例。
参考官网安装Stein版本的openstack过程中,对于官网没有提到或者提到了并不能正确执行的地方如下:
问题1,安装placement组件的第一步,需要通过pip来安装,但系统默认没有安装pip,会提示操作失败。
解决办法:
1,yum -y install epel-release
2,yum -y install python-pip
问题2,执行systemctl enable openstack-xxx的时候报错。因为在高版本的Stein中,openstack-nova-consoleauth服务已默认不可用。
解决办法:
除去openstack-nova-consoleauth之外,其他所有服务单独启动以及设置开机自启动。
问题3,执行命令的时候报错。
报错如下:
解决方法:
[root@controller ~]# vim /etc/httpd/conf.d/00-placement-api.conf
添加内容如下:
然后systemctl restart httpd.service即可。
问题4,无法将参数设置为1。
这里openstack官方文档没有给出解决方法,通过百度能解决。
解决方法(控制节点和计算节点都要编辑):
编辑/etc/sysctl.conf文档添加内容如下:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
[root@localhost ~]# modprobe br_netfilter
[root@localhost ~]# sysctl -p
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
除去这些故障点之外,其他任何故障点都跟修改配置文件相关,只要在修改配置文件的过程中小心仔细,就能成功搭建起openstack的Stein版本。
接下来就是充分利用实验环境好好玩。