摘要: 本文介绍了 Kolla 项目在容器化 OpenStack 部署和管理方面的应用,以及与 Ceph 集群的集成。Kolla 项目通过容器技术提供了一种简化和自动化的 OpenStack 部署方法,同时实现了易于升级和回滚的特点。本文还探讨了 Kolla 在实现零宕机升级方面的进展,并分析了其对 OpenStack 用户和社区的重要意义。
- 引言 OpenStack 作为一种开源的云计算平台,其部署和运维的复杂性一直是用户和运维人员面临的主要挑战。Kolla 项目通过将 OpenStack 服务容器化,提供了一种简化的部署和管理方法。本文将介绍 Kolla 的主要组件,包括 Kolla、Kolla-ansible 和 Kolla-kubernetes,并探讨其在 OpenStack 高可用性和 Ceph 集群集成方面的应用。
- Kolla 容器镜像构建 Kolla 项目的核心是为每个 OpenStack 服务构建容器镜像。这些镜像包含了服务所需的全部依赖,使得部署和升级过程变得更加简单和可靠。通过将升级/回滚的粒度降低到服务级别,Kolla 实现了操作的原子性。升级过程只需三个步骤:拉取新 Docker 镜像、停止旧 Docker 容器、启动新 Docker 容器。即使升级失败,也能够立即回滚到旧版本。
- Kolla-ansible 容器部署 Kolla-ansible 是 Kolla 项目的部署工具,它使用 Ansible playbook 来自动化 OpenStack 的部署过程。通过预定义的角色和任务,Kolla-ansible 可以在多个节点上快速部署 OpenStack 服务。本文将介绍如何使用 Kolla-ansible 部署 OpenStack 控制节点、计算节点和存储节点。
- Kolla-kubernetes 容器部署与管理 Kolla-kubernetes 是 Kolla 项目的一部分,它支持在 Kubernetes 环境中部署和管理 OpenStack 服务。通过 Kubernetes 的编排能力,Kolla-kubernetes 可以实现更加灵活和高效的 OpenStack 服务管理。
- 高可用性设计与 Ceph 集群集成 本文将介绍如何使用 Kolla 实现 OpenStack 的高可用性,包括使用 Keepalived 和 HAProxy 实现虚拟 IP 地址的高可用性,以及使用 Ceph 集群作为 OpenStack 的存储后端。Ceph 提供了高性能、可靠和可扩展的存储解决方案,与 Kolla 的集成使得 OpenStack 部署更加完善。
- 节点规划与网络规划 本文将详细介绍如何规划 OpenStack 集群的节点和网络。包括控制节点、计算节点和存储节点的角色分配,以及不同网卡的 IP 地址规划和用途。
- 结论 Kolla 项目通过容器化 OpenStack 服务,提供了一种简化和自动化的部署和管理方法。通过与 Ceph 集群的集成,Kolla 能够提供高性能和可靠的存储服务。未来,Kolla 项目将继续致力于实现零宕机升级,为 OpenStack 用户和社区带来更大的价值。
参考文献 [1] Kolla Project Documentation. https://docs.openstack.org/kolla/latest/ [2] Ceph Documentation. https://docs.ceph.com/docs/master/ [3] Ansible Documentation. https://docs.ansible.com/ [4] Kubernetes Documentation. https://kubernetes.io/docs/
系统要求
- 操作系统:CentOS
- OpenStack版本:Train
- Kolla版本:与OpenStack Train版本兼容(9.0)
节点规划
host |
service |
remark |
ha01-03 |
1.haproxy |
1.高可用 vip:10.201.0.200 |
controller01-03 |
1. keystone |
1.控制节点: keystone, glance, horizon, nova&neutron管理组件; |
compute01-03 |
1. nova-compute |
1.计算节点:hypervisor(kvm); |
ceph01-03 |
1. ceph-mon, ceph-mgr |
1.存储节点:调度,监控(ceph)等组件; |
IP规划
IP |
角色 |
服务 |
10.201.0.154 |
ansible-kolla harbor |
ansible harbor |
10.201.0.156 |
controller01 compute01 ceph01 |
openstack基础服务:nova glance,mariadb,rabbitmq,placement,neutron,cinder,heat,ceph集群,haroxy和keepalives |
10.201.0.157 |
controller02 compute02 ceph02 |
openstack基础服务:nova glance,mariadb,rabbitmq,placement,neutron,cinder,heat,ceph集群,haroxy和keepalives |
10.201.0.159 |
controller03 compute03 ceph03 |
openstack基础服务:nova glance,mariadb,rabbitmq,placement,neutron,cinder,heat,ceph集群,haroxy和keepalives |
网络规划
主机名 |
网卡名称 |
IP地址 |
网卡用途 |
controller01 |
ens192 |
10.201.0.156/24 |
业务网卡 |
ens224 |
192.168.1.10/24 |
管理网卡 |
|
ens256 |
192.168.20.10/24 |
存储网卡 |
|
controller02 |
ens192 |
10.201.0.157/24 |
业务网卡 |
ens224 |
192.168.1.20/24 |
管理网卡 |
|
ens256 |
192.168.20.20/24 |
存储网卡 |
|
controller03 |
ens192 |
10.201.0.159/24 |
业务网卡 |
ens224 |
192.168.1.30/24 |
管理网卡 |
|
ens256 |
192.168.20.30/24 |
存储网卡 |
配置规划
主机名 |
网卡配置 |
硬盘配置 |
内存 |
control01 |
3块 |
100G |
8G |
control02 |
3块 |
100G |
8G |
control03 |
3块 |
100G |
8G |
ansible配置
这一步可以把ansible放在三台contorller其中之一,也可以单独拿出来,我这里是单独拿出来
切记这里使用xshell或者crt连接时一定要选择管理网络的IP连接,不然后面刷网卡会导致连接不上
基础环境配置
修改主机名
[root@ansible-kolla ~]# hostnamectl set-hostname ansible-kolla
[root@ansible-kolla ~]# exec bash
[root@ansible-kolla ~]#
配置hosts文件 (所有节点)
[root@ansible-kolla ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.10 controller01
192.168.1.20 controller02
192.168.1.30 controller03
配置ssh无密钥
ssh-keygen
ssh-copy-id controller01
ssh-copy-id controller02
ssh-copy-id controller03
网络配置(controller01)
<