TripleO
一、TripleO 简介
TripleO 又叫 OpenStack on OpenStack,是一个用 OpenStack 来部署、升级和管理 OpenStack 的工具。 TripleO 里面有两个主要部分:Undercloud 和 Overcloud,使用 TripleO,你需要先创建一个小的 OpenStack 环境,称为:Undercloud,它包含了 Heat、Ironic、Horizen、Keystone、Neutron 等项目,TripleO 使用 Ironic 做裸机管理,Heat 做编排,Keystone 做用户管理等,使用 Undercloud 部署出来的是正式的 OpenStack 环境:Overcloud。
二、TripleO 部署需求
硬件需求
部署 TripleO 至少需要 3 个节点,角色分别如下:
- 一个 Undercloud 节点
- 一个 Overcloud 控制节点
- 一个 Overcloud 计算节点
最小配置:
- 多核 CPU
- 8G 内存
- 60G 硬盘
推荐使用物理机,开发测试也可以使用虚拟机,TripleO 部署目前只支持 RHEL 7.1 x86_64 和 CentOS 7 x86_64。
网络需求
注:此网络需求不包含 Overcloud 中 OpenStack 所需网络。
- Overcloud 服务器需要配置好 IPMI。
- 一个管理网卡,用于管理 Undercloud 和 Overcloud。
- 一块用于 PXE 的网卡,这个网卡在 Overcloud 中需要是同一名称的网卡,如 em2,这个名称将会在安装配置的 LOCAL_INTERFACE 参数中使用,并且不能和管理网络是同一块网卡。
- 在 BIOS 中,把用于 PXE 的网卡放到引导顺序的第一位,并且关闭除了 PXE 网卡之外所有网卡的网络启动选项。
- 收集所有 Overcloud 节点的用于 PXE 引导网卡的 MAC 地址和 IPMI 信息。
网络参考下图:
TripleO 提供了一个工具 tripleo-validations 用于检测 TripleO 部署可能出现的问题,该工具基于 Ansible 和 Python 编写,在 validations 目录下提供了很多检测的内容,如:
- NTP 配置
- DHCP 获取
- Pacemaker 状态
- Undercloud 硬件配置
- MySQL 打开连接数限制
- ……
三、部署 TripleO
由于 TripleO 也是一套小型的 OpenStack 环境,部署起来也较繁琐,于是出现了几个项目用来部署 TripleO,如: Tripleo-Quickstart 和官方推荐项目 Instack-Undercloud 。 其中,Tripleo-Quickstart 主要使用 Ansible 部署、Instack-Undercloud 则混合使用了脚本和 Puppet 来部署,但是使用 Puppet 的时候有些调用模块的时候会出问题,调用的资源改名时 Instack-Undercloud 里没有修改,所以在使用 Instack-Undercloud 部署 TripleO 的时候最好了解一些 Puppet 知识。 另外,由于使用 RDO 的源要下载很多包,网速慢的同学就要痛苦了,可能要部署很长时间。
四、TripleO 部署 OpenStack
1. 生成镜像
TripleO 部署需要如下几个镜像:
ironic-python-agent.initramfs
ironic-python-agent.kernel
overcloud-full.initrd
overcloud-full.qcow2
overcloud-full.vmlinuz
注:如果只是测试的话也可以从 CentOS 网站上 下载
如果使用的是 CentOS 系统,可以直接使用以下命令创建: openstack overcloud image build
,而如果是 RHEL 系统,则需要通过 --config-file
参数进行指定配置文件, openstack overcloud image build --config-file /usr/share/openstack-tripleo-common/image-yaml/overcloud-images.yaml --config-file $OS_YAML
注:image-yaml 目录是在 5.0 版本后才有的,Mitaka 版本装的是 2.1.1 版本,并没有这个目录。
2. 上传镜像
使用如下命令上传镜像 openstack overcloud image upload
,更新镜像使用 openstack overcloud image upload --update-existing
,如果上传的是.initramfs 后缀的镜像,需要执行以下命令重新配置 Ironic 使用这个镜像. openstack overcloud node configure --all-manageable
3. 注册节点
注册节点是注册到 Ironic 里面,我们在前面提过,TripleO 使用 Ironic 管理裸机, openstack overcloud node import instackenv.json
,使用的文件可以是 JSON、YAML 或 CSV 文件,导入时根据后缀名判断,该 JSON 文件模板如下:
{
"nodes": [
{
"pm_type":"pxe_ipmitool",
"mac":[
"fa:16:3e:2a:0e:36"
],
"cpu":"2",
"memory":"4096",
"disk":"40",
"arch":"x86_64",
"pm_user":"admin",
"pm_password":"password",
"pm_addr":"10.0.0.8"
},
……省略两个节点
]
}
该命令只会导入信息,不会进行检查,导入后状态为:manageable,Ironic 中服务器的状态有以下几种:
- enroll,该状态是 Ironic 不会对其进行管理,在 Newton 版本后,支持使用该状态替换 available 状态,即导入时添加
--initial-state=enroll
参数。 - manageable,验证完 IPMI 等可用后,服务器被设置为 manageable 状态,在这个状态时,用户可以进行自检、RAID 配置等操作,但还不能开始部署。
- available,部署前的最后一个状态,此状态时 Ironic 可以随时开始部署。
如果要在导入时进行检查,则执行以下命令: openstack overcloud node import --introspect --provide instackenv.json
4. 节点自检
上节说过,在 manageable 状态时,用户可以执行自检程序,命令如下: Mitaka 版本中则是使用 openstack baremetal introspection bulk start
,之后的版本使用: openstack overcloud node introspect --all-manageable
,如果只需要检查一个节点可以先把该节点置为 manageable 状态,然后执行检查:
ironic node-set-provision-state UUID manage
openstack baremetal introspection start UUID
然后使用以下命令查看这台机器的状态,看其中的 finished 是否为 True : openstack baremetal introspection status UUID
5. 部署节点
使用 openstack overcloud deploy
命令部署,后面使用 —templates
指定的 Heat 模板, -e
指定 Heat 环境文件,给 Heat 传递参数,由于 TripleO 使用 Heat 部署 Overcloud,理所当然,你起码得了解 Heat,知道该怎么用,附录中有 Heat 模板的连接,感兴趣的可以看一下,这里我们就不多做介绍了。 TripleO 支持控制节点 HA 部署,至少需要 3 个节点通过 Pacemaker 实现 HA 功能,通过以下方式添加到 deploy 命令的后面:
# cat << EOF > ~/environment.yaml
parameter_defaults
ControllerCount: 3
EOF
# openstack overcloud deploy -e environment.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/puppet-pacemaker.yaml --ntp-server pool.ntp.org
6. 总结
优点:
- 熟悉 OpenStack 的人使用方便
- 很好的管理物理服务器,完整的生命周期管理
缺点
- 部署麻烦
- 上手较困难
参考
Heat 模板: https://docs.openstack.org/developer/heat/template_guide/index.html
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论