OpenStack Kolla 源码分析 --Ansible

OpenStack Kolla 源码分析 –Ansible

Kolla介绍

Kolla项目利用Docker、Docker-Compose、Ansible来完成部署OpenStack,目前Kolla已经能够完成一个all-in-one的开发环境的部署。从Kolla项目spec中的描述来看,主要是利用Docker容器的隔离性来达到OpenStack的原子升级、回退在升级。整个升级、回退的过程更容易控制影响范围,降低整个OpenStack的运维复杂度。Kolla 提供了生产级别的 OpenStack Service Containers。基于社区的最佳实践,提供了更好,更快,更可靠的 , 操作 OpenStack 的部署工具。
解决的问题:
平滑的升级 / 回滚 OpenStack
隔离 OpenStack 的不同组件的依赖环境。尤其是那些使用同一模块不同版本的情况。
保证环境的一致性。解决由于安装时间不同,造成的包版本不一致的情况。
支持多种安装源:源代码安装,CentOS binary 安装等。可以替代掉 devstack。
其实这些问题只要是由 Docker 来解决的。这也是 Kolla 使用 Docker 的原因。
Kolla定义了容器集合及容器两个概念

容器集合具有以下属性

容器集由一个或多个容器子集或者一个或多个容器组成;
一个容器集提供一个逻辑上的的服务;
启动、停止和版本的控制以容器集为粒度;
以容器集的粒度来完成安装;
包含容器子集的容器集也以一个独立单元启动,包含所有的容器子集及容器子集内的所有容器;
容器集合并不是原子的管理单位;
容器集必须提供进行服务状态监控的钩子;

容器具有以下属性

容器集能够原子的升级和回退;
容器包含一个单调增长的计数器,用来标志容器的存活时间;
容器的职责是单一的;
只赋予容器刚刚好的权限;
需要包含检查容器健康状态的脚本;
必须包含pid为1的进程用来回收推出的子进程;
Kolla的容器集集包含的容器有以下OpenStack组件:
Database control:
galera
mariadb
mongodb

Messaging control:
rabbitmq

High availability control:
HAProxy keepalived

OpenStack interface:
keystone
glance-api
nova-api
ceilometer-api
heat-api

OpenStack control:
glance-controller
glance-registry
nova-controller
nova-conductor
nova-scheduler
metadata-service
cinder-controller
neutron-controller
neutron-server
ceilometer-controller
ceilometer-alarm
ceilometer-base
ceilometer-central
ceilometer-collector
ceilometer-notification
heat-controller
heat-engine

OpenStack compute operation:
nova-compute
nova-libvirt
neutron-agents-linux-bridge
neutron-agents-ovs

OpenStack network operation:
dhcp-agent
l3-agent
metadata-agent
lbaas-agent
fwaas-agent

OpenStack storage operation:
Cinder
Swift
swift-account
swift-base
swift-container
swift-object
swift-proxy-server

现在 Kolla 主要分成两个部分。
1.Docker Images Build
2.Ansible 部署 ( 这部分将来会迁移到 kolla-ansible 项目 )

Docker Image Build

主要使用 Jinja2 模板生成 Dockerfile 文件。如果是源代码安装,还会把代码下载好。之后会通过Docker-py驱动Docker进行镜像构建。构建完成,还可以根据配置将镜像推送的指定的 Registry 服务器。
现在支持的不同的 Linux 发行版本 (Redhat 系和 Debian 系 ) 和不同的 OpenStack 安装包 ( 源代码和二进制包 )
下图是现在所有镜像的依赖关系。

这里写图片描述

Ansible 部署

提供一个完整的Ansible Playbook,来部署Docker的镜像。并提供all-in-one和multihost的环境
使用到的技术Docker/LXC、Ansible、Python(docker-py、Jinja2)

源码目录概要:

ansible – Contains Ansible playbooks to deploy Kolla in Docker containers.
demos – Contains a few demos to use with Kolla.
dev/heat – Contains an OpenStack-Heat based development environment.
dev/vagrant – Contains a vagrant VirtualBox/Libvirt based development environment.
doc – Contains documentation.
etc – Contains a reference etc directory structure which requires configuration of a small number of configuration variables to achieve a working All-in-One (AIO) deployment.
docker – Contains jinja2 templates for the docker build system.
tools – Contains tools for interacting with Kolla.
specs – Contains the Kolla communities key arguments about architectural shifts in the code base.
tests – Contains functional testing tools.

setup.cfg入口文件


[files]
packages =      //包名
kolla
data_files =     //pbr指定的数据文件
share/kolla/ansible = ansible/*
share/kolla/devenv = devenv/*
share/kolla/docker = docker/*
share/kolla/doc = doc/*
share/kolla/etc_examples = etc/*
share/kolla/vagrant = vagrant/*
share/kolla = tools/init-runonce
share/kolla = tools/openrc-example
share/kolla = setup.cfg

scripts =
tools/kolla-ansible  //该脚本通过ansible与koll进行交互。使用命令为:ansible-playbook -i $INVENTORY $EXTRA_OPTS 

$PLAYBOOK
[entry_points]
console_scripts =
kolla-build = kolla.cmd.build:main   //kolla程序的main主函数
oslo.config.opts =                  //oslo.config通用库用于解析命令行和配置文件中的配置选项
kolla = kolla.opts:list_opts    //字符串列表类型

[global]
setup-hooks =
pbr.hooks.setup_hook

ansible包

ansible简介

ansible是个什么东西呢?官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具。这个工具的目标有这么几项:
自动化部署APP;自动化管理配置项;自动化的持续交互;自动化的(AWS)云服务管理。
所有的这几个目标从本质上来说都是在一个台或者几台服务器上,

<think>好的,我现在需要帮助用户在Ubuntu 22.04上使用Kolla-Ansible部署OpenStack高可用集群。首先,我需要回顾一下Kolla-Ansible的基本概念和部署流程。根据用户提供的引用,特别是引用[1]、[2]、[3],Kolla-Ansible是一个自动化部署OpenStack的工具,可以简化安装和配置过程。 首先,用户的环境是Ubuntu 22.04,而引用中提到的例子是Ubuntu 20.04和openEuler系统。虽然版本不同,但步骤应该类似,但需要注意依赖包和可能的版本差异。比如,引用[2]提到在openEuler上安装特定版本的kolla-ansible,可能需要调整仓库或依赖。 接下来,用户需要的是高可用集群,而不是单机部署。引用[1]提到在阿里云搭建10节点高可用集群,这可能涉及多节点配置、负载均衡、数据库集群(如Galera)和消息队列(如RabbitMQ或Qpid)的高可用设置。需要确保这些组件在部署时正确配置。 然后,用户提到的教程需求。根据引用[3],部署步骤包括拉取镜像和执行部署命令,但高可用环境可能需要更多的前期配置,比如Inventory文件的详细设置,网络配置,存储后端(如Ceph)的集成,以及HAProxy或Keepalived的设置。 需要检查Kolla-Ansible的版本是否支持Ubuntu 22.04。引用[2]中安装的是kolla-ansible 17.5.0对应OpenStack 2023.2,但可能需要确认该版本是否适配Ubuntu 22.04。可能需要参考官方文档中的版本兼容性表格。 可能的步骤包括:安装依赖、配置Python环境、安装AnsibleKolla-Ansible、准备Inventory文件(定义控制节点、计算节点、网络节点等)、生成密码、配置globals.yml(设置网络、存储、高可用选项)、拉取镜像、部署、验证。 同时,需要注意高可用集群的常见问题,比如虚拟IP配置、数据库复制、服务的冗余部署。可能需要使用HAProxy来负载均衡API服务,MariaDB Galera集群,以及RabbitMQ的镜像队列。 另外,用户可能需要配置Ceph作为存储后端,引用[1]和[3]提到了Ceph的部署,这需要额外的步骤,比如准备OSD节点,配置Ceph相关的globals.yml选项。 潜在的问题可能包括网络配置错误、服务启动失败、镜像拉取超时等。需要建议用户检查日志,如/var/log/kolla/中的日志文件,以及使用kolla-ansible post-deploy命令生成环境变量。 最后,生成相关问题时要围绕高可用部署的扩展,比如如何添加节点,监控集群健康,升级步骤,故障排除等。</think>### 在Ubuntu 22.04上使用Kolla-Ansible部署OpenStack高可用集群的步骤 #### 1. **环境准备** - **系统要求**:至少3个物理节点(1个控制节点+2个计算节点)或虚拟机,每个节点安装Ubuntu 22.04。 - **网络配置**:确保节点间网络互通,建议配置管理网络、存储网络和公共网络。 - **依赖安装**: ```bash sudo apt update sudo apt install python3-dev libffi-dev gcc libssl-dev python3-pip ``` #### 2. **安装Kolla-Ansible** - **选择版本**:根据OpenStack版本选择兼容的Kolla-Ansible版本。例如,若部署2023.2(Antelope),需使用`kolla-ansible==17.5.0`[^2]: ```bash pip3 install 'ansible>=6,<8' docker pip3 install kolla-ansible==17.5.0 ``` - **配置文件复制**: ```bash sudo mkdir -p /etc/kolla sudo cp -r /usr/local/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/ ``` #### 3. **配置Inventory文件** - 编辑`/usr/local/share/kolla-ansible/ansible/inventory/multinode`,定义节点角色: ```ini [control] node1 node2 node3 [network] node1 node2 [compute] node4 node5 [monitoring] node1 [storage] node6 node7 ``` #### 4. **配置globals.yml** - 修改`/etc/kolla/globals.yml`,关键参数示例: ```yaml kolla_base_distro: "ubuntu" kolla_install_type: "source" openstack_release: "2023.2" network_interface: "ens3" neutron_external_interface: "ens4" enable_haproxy: "yes" enable_keepalived: "yes" keepalived_virtual_router_id: "51" ``` #### 5. **生成密码文件** ```bash kolla-genpwd ``` #### 6. **部署前检查** ```bash kolla-ansible -i multinode prechecks ``` #### 7. **拉取镜像** ```bash kolla-ansible -i multinode pull ``` #### 8. **执行部署** ```bash kolla-ansible -i multinode deploy ``` #### 9. **验证集群** ```bash kolla-ansible post-deploy source /etc/kolla/admin-openrc.sh openstack service list # 检查服务状态 ``` #### 10. **配置高可用组件** - **HAProxy**:自动部署,需确保虚拟IP(VIP)配置正确。 - **MariaDB Galera**:通过`enable_galera: "yes"`启用[^3]。 - **RabbitMQ集群**:默认启用镜像队列。 --- ### 注意事项 1. **存储高可用**:若使用Ceph,需单独部署Ceph集群并配置`glance_backend_ceph: "yes"`[^1]。 2. **网络隔离**:管理网络与公共网络需物理隔离,避免性能瓶颈。 3. **日志排查**:部署失败时检查`/var/log/kolla/{service_name}/`下的日志。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值