【OpenStack】本地启动部署OpenStack环境及在其中创建一个VM

2019-09-10T13:11:33+08:00 | 9分钟阅读 | 更新于 2019-09-10T13:11:33+08:00

Macro Zhao

【OpenStack】本地启动部署OpenStack环境及在其中创建一个VM

@TOC

推荐超级课程:

我的第一篇文章 中,我深入探讨了什么是OpenStack ,以及如果正确操作,它如何成为我们云部署策略中强大的盟友。在本文中,我想开始探索如何创建一个应用程序来学习系统的基本知识和组件。

我们在这里将会涵盖许多话题,包括在我们创建的 OpenStack 部署中托管一个可用的 VM。并在这个过程中:

  • 查看 OpenStack 的开发环境
  • 查看通常的一些组件
  • 查看仪表板组件
  • 仪表板管理的组件,包括网络(Neutron)、块存储(Cinder)和计算节点(Nova)
  • 创建我们的第一个实例 等等。

为了做到这一点,我们首先需要一个可以访问和推送的开发环境。这就是DevStack 将会提供帮助。

什么是DevStack?

DevStack是一组脚本,可以“快速”(15-20分钟 vs 2小时)和轻松地在您的环境中部署一个新的OpenStack云。提供的默认设置允许您创建默认组件,以便快速入门,但是可以添加配置选项来定制设置,以满足您的需求。

默认情况下,该环境不包含OpenStack提供的所有组件。而是提供如下组件:

  • Keystone(身份服务)
  • Glance(镜像服务)
  • Nova(计算服务)
  • Placement(放置/HTTP API服务)
  • Cinder(块存储)
  • Neutron(网络)
  • Horizon(仪表板服务)

OpenStack还提供了丰富的其他组件 ,可用于提供额外的资源。有些组件简化基础设施,提供IaaS解决方案,如Trove(数据库即服务)Zaqar(消息/AMQP服务) 。稍后我们将讨论如何自定义我们的环境,因为这需要创建一些配置文件。

先做一些决定

在我们开始安装之前,最好弄清楚要在哪里安装。我总是喜欢为这些目的设置一个虚拟机,因为如果情况变得混乱,轻松删除整个环境并重新开始或者恢复到之前设置中的某个快照。这个决定取决于(但又不完全取决于……使用虚拟机)。如果您考虑在本地计算机上安装,请知道以下3个位置:

  • 用于DevStack脚本和配置的空间(我选择在主目录中的 devstack
  • 用于部署配置的 /opt/stack
  • 用于OpenStack服务的组件的可执行文件的 /

注意:如果您使用Windows(特别是不支持WSL2的版本),则需要使用虚拟机,因为大多数组件都是针对Ubuntu和其他主要发行版构建和测试的。

为了进行这些练习,我已经设置了一个托管我的云的Ubuntu虚拟机,并且大部分时间将遵循DevStack自己的单个VM单个机器 的指示。

设置虚拟机

为了确保所有步骤完成时出现的失败最少,我将使用Ubuntu 20.04设置一个QEMU虚拟机。我不会详细介绍如何做到这一点,因为这在各处都有详细文档。不过,我建议您使用以下一些注意事项:

  • 内存:DevStack建议4GB,但如果您有空间的话,我建议增加内存。
  • CPU:建议使用4个vCPU,但您可以根据系统上可用的vCPU数量将其增加到一半。
  • 磁盘:至少100GB。我最初只用了30GB,但很快就用完了空间,因为您需要在这个空间内加载磁盘映像和虚拟机卷。
  • 网络:使用默认设置,1个接口。
  • 软件包:OpenSSH服务器(建议)。这将使与系统的交互更高效,但仍然可以通过虚拟机的控制台窗口执行所有必要的步骤。

访问虚拟机的控制台或通过SSH登录到您的新环境,运行以下命令以确保您的环境是最新的:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo reboot

安装DevStack

系统重新启动后,重新登录,在用户的主目录中,运行以下命令下载并安装DevStack工具。

注意:由于DevStack(以及所有其他组件)采用分支-发布模型,您需要指定要安装的发行版。截至撰写本文时,“Wallaby”是稳定版本(“Xena”也刚刚发布)。因此,在此练习中,我们将检出分支stable/wallaby

安装DevStack工具

设置DevStack的第一步是在虚拟机上本地克隆存储库。

sudo apt-get install git
git clone https://opendev.org/openstack/devstack -b stable/wallaby
cd devstack

接下来,我们需要配置DevStack如何部署环境。通过这样做,我们可以开始为我们的环境自定义。这并非必要,但强烈建议这样做。设置密码也可以使该过程变为非交互过程。由于我们稍微从默认配置中添加了Swift,因此我们还需要添加一些用于其使用的建议设置。其他配置是我们的方便选项。

cat > local.conf << EOF
[[local|localrc]]
ADMIN_PASSWORD=sUp3rSe(RE7
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
DEST=/opt/stack
API_RATE_LIMIT=False
LOGDAYS=1
LOGFILE=$DEST/logs/stack.sh.log
SWIFT_HASH=$(echo $RANDOM | md5sum | head -c 30; echo;)
SWIFT_REPLICAS=1
enable_service s-account s-container s-object s-proxy
EOF

如果您使用虚拟机,这一步是创建虚拟机的快照的好时机,因为下一步将会安装虚拟机。如果下次想快速重新创建一个新环境,恢复到此快照然后运行安装脚本即可。

启动堆栈

一旦准备好开始安装,我们可以调用DevStack的stack.sh命令,让下载的工具开始设置您的环境,将所有OpenStack组件下载到您的系统并安装其服务。

./stack.sh

此步骤将开始配置系统,以满足运行OpenStack所需的一切。

重启后的步骤

虽然有重建上一个环境的步骤,但DevStack环境并不具有持久性。最好创建一个新环境。 剩下的安装步骤可能需要一段时间,所以可以去吃个小吃或用餐。

安装完成后,您现在应该可以访问一个可工作的OpenStack云环境。在浏览器中打开虚拟机的IP地址,您将看到OpenStack Horizon的登录页面。使用您在 local.conf 文件中设置的管理员用户的密码登录。

剩下的安装步骤可能需要一段时间,所以可以去吃个小吃或用餐。

安装完成后,您现在应该可以访问一个可工作的OpenStack云环境。在浏览器中打开虚拟机的IP地址,您将看到OpenStack Horizon的登录页面。使用您在local.conf文件中为admin用户设置的密码登录。

查看OpenStack安装(Horizon仪表板)

完成安装后,您可以打开浏览器访问您的虚拟机的IP地址,以获取Horizon仪表板的登录页面。使用提供的凭据打开仪表板界面访问您的新云。

Horizon仪表板

在仪表板中,我们可以查看新堆栈的一些最重要的方面:计算/服务器节点、存储卷和虚拟网络。让我们简要回顾一下堆栈及其功能,从底部开始。

对象存储(Swift)

这是我们要求DevStack安装的组件。我们可以使用这个部分来定义应用程序将使用的容器。

Swift仪表板

对于本次审查,我们不会做太多,因为稍后将对此进行配置。

网络(Neutron)

网络仪表板

虽然在我们的第一个示例中,我们不会在这里进行太多更改,但这仍然是一个非常重要的方面。网络组件负责虚拟网络和流量管理,这在以下情况下非常重要:当您想设置多个具有相同进程的服务器节点并进行负载平衡时,或者当您想隔离某些流量并通过另一个网络公开其他流量时。您可以设置一些非常复杂的配置,OpenStack Project Components 页面中提供了一些很好的示例。

Web应用程序示例配置

目前,您只需要知道网络组件进一步细分为4部分:

  • 网络拓扑 - 提供可用网络及其相互关系的视觉参考
  • 网络 - 管理可用网络及其定义(通过子网)
  • 路由器 - 管理逻辑路由器并定义其运行规则,包括端口转发,以及它们操作的网络和子网
  • 安全组 - 可以被认为是项目内服务器和资源的虚拟防火墙
  • 弹性IP - 允许指定静态IP地址,以提供端口转发功能,资源可以被分配。

我们将在下一篇文章中更详细地介绍网络配置。

卷(Cinder)

卷仪表板

这是云的块存储组件。每当您想保留虚拟机的磁盘映像或想要为部署应用程序启动磁盘资源时,您可以在这里。块存储比其他组件更简单,但如果没有它,其他任何东西都无法正常运行。

该领域的部分包括:

  • - 这些是您可以使用的磁盘映像。它们可以分配给服务器节点,也可以是浮动的。
  • 快照 - 这就是您想要的,给定卷的快照。这对于如果磁盘映像损坏会导致问题的关键环境非常有用,您可以还原快照以重新启动服务器以恢复可能的问题或防止问题发生。
  • - 这扩展了快照的概念,您可以在其中定义卷组,这样,当您指定或在定期时间间隔内,它可以为那个时刻创建快照。该区域仅定义组的定义本身,而…
  • 组快照 - 包含从定义收集的快照。

计算(Nova)

计算仪表板

在计算组中创建的服务器可以轻松地看作是虚拟机/服务器,并且是整个操作的基础。每当您想部署应用程序的实例时,通常会选择这些节点之一。想要一个自建的Web API服务,在此处部署。想要一个具有身份验证的流量代理,也在此处部署。想要PostgreSQL/MongoDB/Redis/其他数据库,一个商业服务器端后端服务,它们都会部署在这里。这些服务器是专门为整个应用程序的某个或少数任务而制作的迷你化服务器,这与Docker或Kubernetes部署任何实例的方式非常相似。

这与其他云平台(如Google Cloud、Amazon、Azure等)略有不同,它们会启动一个仅运行您想运行的代码的“计算”节点。实际上,在后台发生的是它们仍然会为该代码片段启动一个通用VM实例(或Docker容器),具有专用的内存和网络存在。

由于这些实例可以完成的任务有点复杂,所以仪表板环境也会涉及到一些复杂性。

  • 概述 - 所有节点的性能仪表板。这还包括来自其他组件如网络的指标。
  • 实例 - 这个组件的核心和灵魂。这是为您的项目创建的配置服务器节点。
  • 镜像 - 就像Docker Hub镜像或预先构建的基础ISO镜像一样,这是您可以引用用于部署新实例的基础镜像。
  • 密钥对 - 您希望插入到新镜像中的 SSH 公钥或证书(只要您不创建自定义配置)。如果您希望快速启动一个使用具有默认用户帐户且无密码的 OS 的新实例,则非常有帮助。这仍然允许您 SSH 进入该实例。
  • 服务器组 - 该部分定义动态规则,自动将服务器分类,并定义这些服务器将遵守的策略。目前,我不会详细介绍策略,因为我在 文档 中简要浏览时,发现我可能会陷入一个需要很长时间才能走出来的兔子洞。

启动您的第一个服务器节点

为了完成这篇文章,让我们创建一个空白镜像服务器,我们可以登录并与其命令行交互。在这个过程中,我们将使用现有的 镜像 来创建一个新的 。幸运的是,OpenStack 在仪表板上做得很好,使这个过程变得简单。

  1. 从仪表板上,我们将转到 计算 部分并选择 实例
  2. 选择 “启动实例” 按钮

    启动实例按钮

  3. 在这里,我们需要填写多个部分以使其运行。从 详细信息 选项卡开始,将 实例名称 设置为 test
  4. 接下来在 选项卡中,选择 cirros- 镜像。Cirros 是 OpenStack 默认使用的基础镜像,但稍后我们将看一下如何加载我们自己的镜像。要选择镜像,点击项目旁边的向上箭头,将其移入 已分配 组。

    移至已分组

  5. 规格 选项卡中,您将找到用于配置您的实例的实例配置。注意,其中许多与您在其他流行的云平台上看到的相似。选择您要使用的规格,我会选择 m1.micro
  6. 最后,在 网络 选项卡中,我们需要指定此服务器将连接的网络。在本练习中,让我们选择 shared 网络。

选择网络后,点击 启动实例。这将启动一个定时任务,创建 VM 并使用 Cirros 镜像作为其基础创建磁盘卷。

实例已创建

连接到实例控制台

从这里,您可以连接到新实例的控制台。

  1. 单击新实例的名称,test
  2. 在实例详细信息窗口中,选择 控制台 选项卡以打开实例的远程终端控制台。

    控制台选项卡

  3. 您应该看到实例控制台弹出,其中包含您应该使用的用户名和密码。使用这些凭据登录,您现在应该可以访问完全操作的服务器的控制台。

结束

© 2011 - 2025 Macro Zhao的分享站

关于我

如遇到加载502错误,请尝试刷新😄

Hi,欢迎访问 Macro Zhao 的博客。Macro Zhao(或 Macro)是我在互联网上经常使用的名字。

我是一个热衷于技术探索和分享的IT工程师,在这里我会记录分享一些关于技术、工作和生活上的事情。

我的CSDN博客:
https://macro-zhao.blog.csdn.net/

欢迎你通过评论或者邮件与我交流。
Mail Me

推荐好玩(You'll Like)
  • AI 动·画
    • 这是一款有趣·免费的能让您画的画中的角色动起来的AI工具。
    • 支持几十种动作生成。
我的项目(My Projects)
  • 爱学习网

  • 小乙日语App

    • 这是一个帮助日语学习者学习日语的App。
      (当然初衷也是为了自用😄)
    • 界面干净,简洁,漂亮!
    • 其中包含 N1 + N2 的全部单词和语法。
    • 不需注册,更不需要订阅!完全免费!
  • 小乙日文阅读器

    • 词汇不够?照样能读日语名著!
    • 越读积累越多,积跬步致千里!
    • 哪里不会点哪里!妈妈再也不担心我读不了原版读物了!
赞助我(Sponsor Me)

如果你喜欢我的作品或者发现它们对你有所帮助,可以考虑给我买一杯咖啡 ☕️。这将激励我在未来创作和分享更多的项目和技术。🦾

👉 请我喝一杯咖啡

If you like my works or find them helpful, please consider buying me a cup of coffee ☕️. It inspires me to create and share more projects in the future. 🦾

👉 Buy me a coffee