在 CentOS 系统上部署 OpenStack 一直是企业级应用的主流选择,而 Kolla 项目通过容器化的方式极大地简化了这一过程,Kolla 将 OpenStack 的每一个服务都打包在 Docker 容器中,实现了服务的快速部署、升级和隔离,本文将详细介绍如何在 CentOS 7 系统上,通过 Kolla 部署 Pike 版本的 OpenStack,整个过程清晰明了,旨在为读者提供一份可靠的实践指南。
环境准备与前置条件
在开始安装之前,确保你的服务器满足以下基本要求,一个干净、配置正确的环境是成功部署的关键。
硬件要求
对于测试或 All-in-One(单节点)部署,硬件配置可以相对较低,但生产环境则需要更强大的资源。
硬件 | 最低配置 | 推荐配置 |
---|---|---|
CPU | 2 核 | 8 核或更多 |
内存 | 8 GB | 32 GB 或更多 |
磁盘 | 100 GB 可用空间 | 1 TB 或更多(使用 SSD 更佳) |
网络 | 1 块网卡 | 2 块或更多网卡(管理网络与业务网络分离) |
软件与系统配置
- 操作系统:本文以 CentOS 7.9 为例,确保系统是全新安装的最小化版本。
- 系统更新:执行以下命令,将系统更新至最新状态。
sudo yum update -y
- 网络配置:服务器必须配置静态 IP 地址,并且能够访问互联网,确保主机名和
/etc/hosts
文件配置正确,如果主机名是kolla
,IP 是168.1.100
,则应在/etc/hosts
中添加:0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.100 kolla
- 禁用防火墙和 SELinux:为了简化配置,避免网络策略对容器通信造成干扰,建议在测试环境中禁用它们,生产环境则应配置相应的防火墙规则。
sudo systemctl stop firewalld sudo systemctl disable firewalld sudo setenforce 0 sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
详细安装步骤
准备工作完成后,我们正式进入 Kolla 的安装与配置阶段。
安装 Python 依赖与 Kolla Ansible
Kolla Ansible 是基于 Python 的工具,我们需要安装 pip
和相关依赖。
# 安装 EPEL 源和 Python pip sudo yum install -y epel-release python-pip python-devel libffi-devel gcc openssl-devel git # 升级 pip 到最新版本 sudo pip install -U pip # 安装 Pike 版本的 Kolla Ansible # Pike 对应的 Kolla Ansible 版本为 7.x sudo pip install kolla-ansible==7.0.1
创建 Kolla 配置目录
Kolla 的所有配置文件都将存放在 /etc/kolla
目录下。
# 创建配置目录 sudo mkdir -p /etc/kolla # 复制 globals.yml 和 passwords.yml 的模板文件 sudo cp -r /usr/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/ # 复制 all-in-one inventory 文件 sudo cp /usr/share/kolla-ansible/ansible/inventory/all-in-one /etc/kolla/inventory
配置全局变量
编辑 /etc/kolla/globals.yml
文件,这是 Kolla 部署的核心配置文件,以下是一些关键配置项的说明:
# 基础配置 kolla_base_distro: "centos" kolla_install_type: "binary" # binary 或 source,binary 更快 openstack_release: "pike" # 网络配置,这是最重要的部分 # network_interface 是管理网络接口,用于节点间通信 network_interface: "eth0" # 替换为你的实际网卡名 # 如果有外部网络,需要配置以下项 kolla_external_vip_interface: "eth0" # 通常与 network_interface 相同 kolla_external_vip_address: "192.168.1.150" # 一个未被占用的浮动 IP,用于访问 Horizon kolla_internal_vip_address: "192.168.1.151" # 内部高可用虚拟 IP,用于内部服务通信 # 启用核心服务 enable_cinder: "yes" enable_cinder_backend_lvm: "yes" enable_neutron: "yes" enable_haproxy: "yes"
注意:请务必将 network_interface
、kolla_external_vip_address
等网络相关配置替换为你自己的实际环境配置。
生成随机密码
Kolla 为 OpenStack 的各个服务使用独立的密码,使用 kolla-genpwd
命令可以自动生成一组高强度随机密码,并保存到 /etc/kolla/passwords.yml
文件中。
sudo kolla-genpwd
引导服务器
此步骤会在目标节点上安装 Docker 等依赖,并为容器化部署做好准备。
# 使用 all-in-one inventory 文件 sudo kolla-ansible -i /etc/kolla/inventory bootstrap-servers
部署前预检查
这是一个至关重要的步骤,它会检查你的配置和环境是否满足部署要求,强烈建议在执行部署前运行此命令,并根据提示修复所有错误。
sudo kolla-ansible -i /etc/kolla/inventory prechecks
执行部署
当预检查通过后,就可以开始真正的部署过程了,这个过程会拉取所需的 Docker 镜像并启动所有 OpenStack 服务容器,耗时较长,请耐心等待。
sudo kolla-ansible -i /etc/kolla/inventory deploy
部署后配置
部署成功后,运行以下命令,它会生成 admin-openrc.sh
文件,包含访问 OpenStack 的环境变量。
sudo kolla-ansible -i /etc/kolla/inventory post-deploy
验证与访问
部署完成后,我们需要验证 OpenStack 是否正常运行,并访问其 Web 界面。
加载环境变量:
source /etc/kolla/admin-openrc.sh
使用 CLI 验证:执行以下命令,查看 OpenStack 的服务列表,如果都能正常显示,说明核心服务已启动。
openstack service list
访问 Horizon Dashboard:
打开浏览器,访问在globals.yml
中配置的kolla_external_vip_address
。- URL:
http://192.168.1.150
(请替换为你的 VIP) - 用户名:
admin
- 密码: 查看
/etc/kolla/passwords.yml
文件中keystone_admin_password
对应的值。
- URL:
如果能够成功登录并看到 Horizon 的仪表盘,那么恭喜你,你已经成功在 CentOS 上通过 Kolla 部署了 Pike 版本的 OpenStack。
相关问答 (FAQs)
问题 1:安装过程中预检查失败,常见的排查思路是什么?
解答:预检查失败通常是由于环境配置不满足要求导致的,请仔细阅读预检查命令输出的错误信息,它会明确指出哪个检查项未通过,常见的原因包括:
- 网络问题:检查
/etc/kolla/globals.yml
中的网卡名称和 IP 地址是否正确配置,主机名和/etc/hosts
是否能正确解析。 - 资源不足:检查服务器的内存、磁盘空间是否满足最低要求。
- 防火墙或 SELinux:确认防火墙和 SELinux 已按前置条件禁用。
- 依赖包缺失:检查 Python 依赖和系统工具是否已全部安装。
排查时,可以登录到目标节点,手动执行检查失败的命令,查看具体的错误日志,从而定位问题根源。
问题 2:Pike 版本已经比较老了,为什么还要学习安装它?
解答:学习安装一个较旧的版本如 Pike,依然具有其价值,对于许多企业而言,生产环境中可能仍在运行着像 Pike 这样的稳定版本,掌握其部署和维护是必要的技能,Pike 版本包含了 OpenStack 的核心组件(Nova, Neutron, Cinder, Glance, Horizon 等),通过部署它,可以完整地学习和理解 OpenStack 的基本架构、服务交互和容器化部署的原理,这些基础知识和经验是通用的,能够帮助你更快地学习和掌握更新版本的 OpenStack,对于全新的生产项目,建议始终选择受社区支持的、更现代的稳定版本(如 Yoga 或更新的版本)。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复