OpenStack 部署实践与原理解析 - Ubuntu 22.04 部署 (DevStack)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • [OpenStack 原理详解](#OpenStack 原理详解)
    • [1. OpenStack 的架构](#1. OpenStack 的架构)
    • [2. OpenStack 的工作原理](#2. OpenStack 的工作原理)
    • [3. OpenStack 的 API](#3. OpenStack 的 API)
    • [4. 扩展性和模块化](#4. 扩展性和模块化)
  • [OpenStack 安装方式比较](#OpenStack 安装方式比较)
    • [1. DevStack](#1. DevStack)
    • [2. Kolla](#2. Kolla)
    • [3. OpenStack-Ansible](#3. OpenStack-Ansible)
    • [4. Manual Installation](#4. Manual Installation)
  • [具体实践:使用 DevStack 部署 OpenStack](#具体实践:使用 DevStack 部署 OpenStack)
    • [1. 环境准备](#1. 环境准备)
    • [2. 克隆 DevStack 仓库](#2. 克隆 DevStack 仓库)
    • [3. 创建配置文件](#3. 创建配置文件)
    • [4. 启动安装](#4. 启动安装)
    • [5. 访问 OpenStack](#5. 访问 OpenStack)
    • [5. 退出 OpenStack](#5. 退出 OpenStack)
  • 生产与测试环境建议
  • 总结
  • 其他

前言

OpenStack 是一个强大的开源云计算平台,广泛应用于构建和管理公共与私有云。本文将详细探讨 OpenStack 的原理、不同的安装方式及其适用场景,以帮助读者理解如何高效部署 OpenStack。


OpenStack 原理详解

1. OpenStack 的架构

OpenStack 的架构由多个相互协作的服务组成,主要包括以下核心组件:

Nova(计算):管理虚拟机生命周期,包括启动、停止、重启和迁移。

Neutron(网络):提供网络服务,支持虚拟网络和 IP 地址管理。

Cinder(块存储):提供持久性块存储服务,用户可创建和管理存储卷。

Swift(对象存储):提供分布式对象存储服务,适合存储大量非结构化数据。

Keystone(身份认证):负责用户身份认证和服务目录管理,确保组件间的安全访问。

Glance(镜像服务):管理虚拟机镜像,包括镜像的上传和存储。

Horizon(仪表板):提供图形用户界面,方便用户管理 OpenStack 资源。

2. OpenStack 的工作原理

用户请求:用户通过 API 或 Horizon 界面发送请求,管理资源。

服务协调:组件通过消息队列(如 RabbitMQ)进行通信,处理请求流转。

资源调度:Nova 调度器根据策略选择适合的计算节点部署虚拟机。

虚拟化:结合 KVM、Xen、VMware 等虚拟化技术,创建和管理虚拟机。

数据存储:通过 Cinder 管理块存储,通过 Swift 管理对象存储。

3. OpenStack 的 API

OpenStack 提供 RESTful API,用户和管理员可以通过 API 进行各种操作。这种设计使得 OpenStack 的扩展性和灵活性得到了极大的提升。

4. 扩展性和模块化

OpenStack 的模块化设计允许用户根据需求选择不同组件进行部署,实现灵活的云环境管理。


OpenStack 安装方式比较

根据不同的使用场景和需求,OpenStack 的安装方式可以分为以下几种:

1. DevStack

适用场景:学习、开发和测试环境。

特点:快速、简单,适合用于本地环境的部署,便于试验新功能。

安装方法:只需克隆 DevStack 仓库并运行 ./stack.sh。

2. Kolla

适用场景:生产环境和大规模部署。

特点:使用 Docker 容器化的方式,便于管理和扩展。

安装方法:通过 Ansible 和 Docker 来部署和管理 OpenStack 服务。

3. OpenStack-Ansible

适用场景:中大型生产环境。

特点:基于 Ansible 的部署方式,提供高度可定制的环境,适合复杂的网络和存储配置。

安装方法:通过 Ansible Playbook 来实现部署。

4. Manual Installation

适用场景:有特定需求的自定义部署。

特点:灵活性高,可以根据具体环境配置各个组件。

安装方法:手动安装各个组件,配置相应的服务。


具体实践:使用 DevStack 部署 OpenStack

1. 环境准备

在 22.04.4 LTS live-server 上进行 DevStack 部署:
PS:其他 Ubuntu 版本操作都差不多。

确保系统更新:

bash 复制代码
sudo apt update && sudo apt upgrade -y

安装必要的依赖:

bash 复制代码
sudo apt install git -y

创建stack用户:

bash 复制代码
sudo useradd -s /bin/bash -d /opt/stack -m stack
sudo chmod +x /opt/stack
# 配置免密
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
# 切换用户
sudo -u stack -i

2. 克隆 DevStack 仓库

bash 复制代码
git clone https://git.openstack.org/openstack-dev/devstack.git
cd devstack

3. 创建配置文件

创建一个 local.conf 文件,定义管理员用户名和密码等配置:

yaml 复制代码
[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

4. 启动安装

运行安装脚本:

bash 复制代码
./stack.sh

注意

安装过程中可能会因为某些包、库,国内网不能访问出现问题,执行./ stack.sh 过程中报错会有说明。

解决方法:

1、多执行几次,说不定就下下来了

2、若是 pip 和 apt ,参考清华源官方换源

3、etcd、novnc、cirros 等下载问题,单独下载再放到报错提示目录 即可

例如:

提示 etcd-v3.4.27-linux-amd64.tar.gz 有 timeout/not found之类的报错,就网上找它下载地址,按提示

wget https://storage.googleapis.com/etcd/v3.4.27/etcd-v3.4.27-linux-amd64.tar.gz 到 /opt/stack/devstack/files 路径下,重新执行 ./stack.sh 就好

提示 git clone https://github.com/novnc/novnc.git timeout ,就使用代理或能访问 github 的网络下了放到 /opt/stack 路径下,重新执行 ./stack.sh 就好

5. 访问 OpenStack

安装完成后,可以通过访问 http://<你的IP>/dashboard 进入 Horizon 管理界面,使用上方配置的管理员账户登录。

5. 退出 OpenStack

bash 复制代码
./unstack.sh
# 清楚环境(如要)
./clean.sh

生产与测试环境建议

生产环境:建议使用 Kolla 或 OpenStack-Ansible,能够提供更好的稳定性和可扩展性。

测试环境:DevStack 是一个很好的选择,快速简单,适合快速迭代和学习。

单机部署:可以使用 DevStack,便于在个人机器上进行实验。

多机部署:Kolla 或 OpenStack-Ansible 更加适合,能够有效管理复杂的多节点环境。


总结

OpenStack 是一个灵活且强大的云计算平台,理解其原理和架构对于成功部署至关重要。根据不同的需求选择合适的安装方式,可以更有效地管理云资源。希望本文能为你的 OpenStack 部署实践提供有价值的参考。


其他

安装或操作过程中遇到的一些问题:
嵌套虚拟化与 OpenStack:我为什么能在虚拟机中再创建虚拟机?

相关推荐
woshilys9 分钟前
sql server 查询对象的修改时间
运维·数据库·sqlserver
疯狂飙车的蜗牛39 分钟前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
恩爸编程2 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
Michaelwubo3 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
远游客07133 小时前
centos stream 8下载安装遇到的坑
linux·服务器·centos
马甲是掉不了一点的<.<3 小时前
本地电脑使用命令行上传文件至远程服务器
linux·scp·cmd·远程文件上传
jingyu飞鸟3 小时前
centos-stream9系统安装docker
linux·docker·centos
好像是个likun3 小时前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器
超爱吃士力架3 小时前
邀请逻辑
java·linux·后端
White_Mountain4 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu