独立部署指南


Red Hat OpenStack Platform 16.2

为测试和概念验证环境创建一个 all-in-one OpenStack 云

OpenStack Documentation Team

摘要

您可以在单一节点上安装、配置和部署所有的 Red Hat OpenStack Platform 环境,以便在单一节点上安装概念验证、开发和测试场景。

对红帽文档提供反馈

我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。

在 JIRA 中提供文档反馈

使用 Create Issue 表单对文档提供反馈。JIRA 问题将在 Red Hat OpenStack Platform Jira 项目中创建,您可以在其中跟踪您的反馈进度。

  1. 确保您已登录到 JIRA。如果您没有 JIRA 帐户,请创建一个帐户来提交反馈。
  2. 点击以下链接打开 Create Issue 页面: Create Issue
  3. 完成 SummaryDescription 字段。在 Description 字段中,包含文档 URL、章节或章节号以及问题的详细描述。不要修改表单中的任何其他字段。
  4. Create

第 1 章 All-in-one Red Hat OpenStack Platform 安装

all-in-one 安装方法使用 TripleO 使用简单的单节点环境部署 Red Hat OpenStack Platform 和相关服务。使用这个安装,在单个节点上启用概念验证、开发和测试部署,且在一个有限或无后续操作的情况下进行部署。

注意

该功能在此发行版本中作为技术预览提供,因此不享有红帽的全面支持。它只应用于测试,不应部署在生产环境中。有关技术预览功能的更多信息,请参阅覆盖范围详细信息

1.1. 前提条件

  • 您的系统必须安装有 Red Hat Enterprise Linux 8.4 基础操作系统。
  • 您的系统必须有两个网络接口,以便在 TripleO 配置第二个接口时不会中断互联网连接。
  • 您的系统必须具有 4 个 CPU、8GB RAM 和 30GB 磁盘空间。

网络配置示例

  • 分配给默认网络 192.168.122.0/24 的接口 eth0。使用此接口进行常规连接。这个接口必须访问互联网。
  • 分配给 management 网络 192.168.25.0/24 的接口 eth1。tripleo 将此接口用于 OpenStack 服务。

第 2 章 一台 Red Hat OpenStack Platform 环境概述

在这种情况下,在 all-in-one Red Hat OpenStack Platform (RHOSP)环境中,不存在已存在的 undercloud 依赖项。相反,安装程序会运行内联 heat-all 实例来引导部署过程,并将所选 heat 模板转换为可以在本地计算机上执行的 Ansible playbook。

如果要执行复杂的操作,您必须部署生产级别的扩展云。

工作流

要安装、配置和部署简单的单节点 RHOSP 环境,请在以下工作流中完成任务:

  1. 准备您的环境。
  2. 为 all-in-one 环境安装软件包。
  3. 配置 all-in-one 环境。
  4. 部署 all-in-one 环境。

All-in-one 安装的好处

  • 可组合的服务。
  • 预定义的角色。
  • 密度的单节点环境。
  • 可用于在容器中运行小页安装程序并生成 Ansible playbook 的 playbook。

配置

如果要试验配置角色和服务,请参阅 第 8 章 使用自定义角色和服务第 7.1 节 “核心 heat 模板”

可组合角色

您可以创建自定义可组合角色,并为每个角色部署特定的服务。

Ansible

此安装通过部署命令自动应用 Ansible playbook。您还可以指示部署命令输出您可以在其他环境中使用的 Ansible playbook。例如,您可以在 all-in-one 安装中完成测试,然后将验证的 Ansible playbook 应用到其他环境。

在开始配置、部署和测试所有环境前,您必须配置非 root 用户并安装必要的软件包和依赖项:

流程

  1. 在 all-in-one 主机上创建一个非 root 用户:

    [root@all-in-one]# useradd stack
    Copy to Clipboard Toggle word wrap
  2. 设置 stack 用户的密码:

    [root@all-in-one]# passwd stack
    Copy to Clipboard Toggle word wrap
  3. stack 用户禁用 sudo 命令的密码要求:

    [root@all-in-one]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack
    [root@all-in-one]# chmod 0440 /etc/sudoers.d/stack
    Copy to Clipboard Toggle word wrap
  4. 以非 root 用户身份登录到 all-in-one 主机:

    $ ssh stack@<all-in-one>
    Copy to Clipboard Toggle word wrap
  5. 使用 Red Hat Subscription Manager 注册机器。在提示符处输入您的红帽订阅凭证:

    [stack@all-in-one]$ sudo subscription-manager register
    Copy to Clipboard Toggle word wrap
  6. 将您的红帽订阅附加到授权服务器:

    [stack@all-in-one]$ sudo subscription-manager attach --auto
    Copy to Clipboard Toggle word wrap
    注意

    --auto 选项可能无法订阅正确的订阅池。确保您订阅了正确的池,否则您可能无法为这个安装启用所有所需的软件仓库。使用 subscription-manager list --all --available 命令来识别正确的池 ID。

  7. 将 undercloud 锁定到 Red Hat Enterprise Linux 8.4:

    $ sudo subscription-manager release --set=8.4
    Copy to Clipboard Toggle word wrap
  8. 输入以下命令安装 dnf-utils,禁用所有默认存储库,然后启用必要的存储库:

    [stack@all-in-one]$ sudo dnf install -y dnf-utils
    [stack@all-in-one]$ sudo subscription-manager repos --disable=*
    [stack@all-in-one]$ sudo subscription-manager repos \
    --enable=rhel-8-for-x86_64-baseos-eus-rpms \
    --enable=rhel-8-for-x86_64-appstream-eus-rpms \
    --enable=rhel-8-for-x86_64-highavailability-eus-rpms \
    --enable=ansible-2.9-for-rhel-8-x86_64-rpms \
    --enable=openstack-16.2-for-rhel-8-x86_64-rpms \
    --enable=fast-datapath-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap
    注意

    all-in-one 环境是 Red Hat OpenStack Platform 16 中的技术预览功能。

  9. 设置 container-tools 模块版本:

    [stack@all-in-one]$ sudo dnf module disable -y container-tools:rhel8
    [stack@all-in-one]$ sudo dnf module enable -y container-tools:3.0
    Copy to Clipboard Toggle word wrap
  10. 更新基础操作系统并重启系统:

    [stack@all-in-one]$ sudo dnf update
    [stack@all-in-one]$ sudo reboot
    Copy to Clipboard Toggle word wrap
  11. 重新引导后重新登录主机。
  12. 安装 TripleO 命令行界面(CLI):

    [stack@all-in-one]$ sudo dnf install -y python3-tripleoclient
    Copy to Clipboard Toggle word wrap

在部署 all-in-one RHOSP 环境前,您必须手动创建以下配置文件:

  • $HOME/containers-prepare-parameters.yaml
  • $HOME/standalone_parameters.yaml

如果要自定义用于开发或测试的 all-in-one 环境,请编辑以下配置文件:

  • /usr/share/openstack-tripleo-heat-templates/environments/standalone/standalone-tripleo.yaml
  • /usr/share/openstack-tripleo-heat-templates/roles/Standalone.yaml

要生成 containers-prepare-parameters.yamlstandalone_parameters.yaml 文件,请完成以下步骤:

  1. 生成包含默认 ContainerImagePrepare 参数的 containers-prepare-parameters.yaml 文件:

    [stack@all-in-one]$ sudo openstack tripleo container image prepare default --output-env-file $HOME/containers-prepare-parameters.yaml
    Copy to Clipboard Toggle word wrap
  2. 编辑 containers-prepare-parameters.yaml 文件,并在 ContainerImageRegistryCredentials 参数中包含您的红帽凭证,以便部署过程可以使用 registry.redhat.io 进行身份验证,并成功拉取容器镜像:

    parameter_defaults:
      ContainerImagePrepare:
      ...
      ContainerImageRegistryCredentials:
        registry.redhat.io:
          <USERNAME>: "<PASSWORD>"
    Copy to Clipboard Toggle word wrap
    注意

    为了避免以纯文本形式输入密码,请创建一个 Red Hat Service Account。如需更多信息,请参阅 Red Hat Container Registry 身份验证

  3. containers-prepare-parameters.yaml 中将 ContainerImageRegistryLogin 参数设置为 true

    parameter_defaults:
      ContainerImagePrepare:
      ...
      ContainerImageRegistryCredentials:
        registry.redhat.io:
          <USERNAME>: "<PASSWORD>"
      ContainerImageRegistryLogin: true
    Copy to Clipboard Toggle word wrap

    如果要使用 all-in-one 主机作为容器 registry,省略此参数,并在 openstack tripleo container image prepare 命令中包含 --local-push-destination。如需更多信息,请参阅 准备容器镜像

  4. 创建 $HOME/standalone_parameters.yaml 文件,并为 all-in-one RHOSP 环境配置基本参数,包括网络配置和一些部署选项。在本例中,网络接口 eth1 是您用于部署 RHOSP 的管理网络上的接口。eth1 具有 IP 地址 192.168.25.2 :

    [stack@all-in-one]$ export IP=192.168.25.2
    [stack@all-in-one]$ export NETMASK=24
    [stack@all-in-one]$ export INTERFACE=eth1
    [stack@all-in-one]$ export DNS1=1.1.1.1
    [stack@all-in-one]$ export DNS2=8.8.8.8
    
    [stack@all-in-one]$ cat <<EOF > $HOME/standalone_parameters.yaml
    parameter_defaults:
      CloudName: $IP
      CloudDomain: <DOMAIN_NAME>
      ControlPlaneStaticRoutes: []
      Debug: true
      DeploymentUser: $USER
      DnsServers:
        - $DNS1
        - $DNS2
      NeutronPublicInterface: $INTERFACE
      NeutronDnsDomain: localdomain
      NeutronBridgeMappings: datacentre:br-ctlplane
      NeutronPhysicalBridge: br-ctlplane
      StandaloneEnableRoutedNetworks: false
      StandaloneHomeDir: $HOME
      StandaloneLocalMtu: 1500
    EOF
    Copy to Clipboard Toggle word wrap

    您必须使用 DNS 地址配置 DnsServers 参数。您可以在 /etc/resolv.conf 文件中找到这个地址:

    [stack@all-in-one]$ cat /etc/resolv.conf
    192.168.122.1
    Copy to Clipboard Toggle word wrap

    如果只使用单个网络接口,则必须定义默认路由:

    ControlPlaneStaticRoutes:
      - ip_netmask: 0.0.0.0/0
        next_hop: $GATEWAY
        default: true
    Copy to Clipboard Toggle word wrap

    如果您有内部时间源,或者您的环境阻止访问外部时间源,请使用 NtpServer 参数定义您要使用的时间源:

    parameter_defaults:
      NtpServer: clock.example.com
    Copy to Clipboard Toggle word wrap

    如果要在虚拟环境中使用 all-in-one RHOSP 安装,则必须使用 NovaComputeLibvirtType 参数定义虚拟化类型:

    parameter_defaults:
      NovaComputeLibvirtType: qemu
    Copy to Clipboard Toggle word wrap

    负载均衡服务(octavia)不需要您配置 SSH。但是,如果您想要 SSH 访问负载均衡实例(amphorae),请添加 OctaviaAmphoraSshKeyFile 参数,其值带有 stack 用户的公钥文件的绝对路径: OctaviaAmphoraSshKeyFile: "/home/stack/.ssh/id_rsa.pub"

流程

  1. 使用您的红帽凭证登录到 registry.redhat.io:

    [stack@all-in-one]$ sudo podman login registry.redhat.io
    Copy to Clipboard Toggle word wrap
  2. 导出部署命令使用的环境变量。在本例中,使用在管理网络上 IP 地址 192.168.25.2 的 eth1 接口部署 all-in-one 环境:

    [stack@all-in-one]$ export IP=192.168.25.2
    [stack@all-in-one]$ export NETMASK=24
    [stack@all-in-one]$ export INTERFACE=eth1
    Copy to Clipboard Toggle word wrap
  3. 设置主机名。如果节点使用 localhost.localdomain,部署将失败。

    [stack@all-in-one]$ hostnamectl set-hostname all-in-one.example.net
    [stack@all-in-one]$ hostnamectl set-hostname all-in-one.example.net --transient
    Copy to Clipboard Toggle word wrap
  4. 输入部署命令。确保包含与环境相关的所有 .yaml 文件:

    [stack@all-in-one]$ sudo openstack tripleo deploy \
      --templates \
      --local-ip=$IP/$NETMASK \
      -e /usr/share/openstack-tripleo-heat-templates/environments/standalone/standalone-tripleo.yaml \
      -r /usr/share/openstack-tripleo-heat-templates/roles/Standalone.yaml \
      -e $HOME/containers-prepare-parameters.yaml \
      -e $HOME/standalone_parameters.yaml \
      --output-dir $HOME \
      --standalone
    Copy to Clipboard Toggle word wrap

部署后,您可以使用 /home/$USER/.config/openstack 目录中的 clouds.yaml 配置文件来查询并验证 OpenStack 服务:

[stack@all-in-one]$ export OS_CLOUD=standalone
[stack@all-in-one]$ openstack endpoint list
Copy to Clipboard Toggle word wrap

要访问仪表板,请访问 http://192.168.25.2/dashboard,并使用 ~/standalone-passwords.conf 文件中的默认用户名 adminundercloud_admin_password

[stack@all-in-one]$ cat standalone-passwords.conf | grep undercloud_admin_password:
Copy to Clipboard Toggle word wrap

部署命令会自动将 Ansible playbook 应用到环境。但是,您可以修改部署命令来生成 Ansible playbook,而不将它们应用到部署,并在稍后运行 playbook。

在 deploy 命令中包含 --output-only 选项,以生成 standalone-ansible-XXXXX 目录。此目录包含一组可以在其他主机上运行的 Ansible playbook。

流程

  1. 要生成 Ansible playbook 目录,请输入带有 --output-only 选项的 deploy 命令:

    [stack@all-in-one]$ sudo openstack tripleo deploy \
      --templates \
      --local-ip=$IP/$NETMASK \
      -e /usr/share/openstack-tripleo-heat-templates/environments/standalone/standalone-tripleo.yaml \
      -r /usr/share/openstack-tripleo-heat-templates/roles/Standalone.yaml \
      -e $HOME/containers-prepare-parameters.yaml \
      -e $HOME/standalone_parameters.yaml \
      --output-dir $HOME \
      --standalone \
      --output-only
    Copy to Clipboard Toggle word wrap
  2. 要运行 Ansible playbook,请输入 ansible-playbook 命令,并包含 inventory.yaml 文件和 deploy_steps_playbook.yaml 文件:

    [stack@all-in-one]$ cd standalone-ansible-XXXXX
    [stack@all-in-one]$ sudo ansible-playbook -i inventory.yaml deploy_steps_playbook.yaml
    Copy to Clipboard Toggle word wrap

第 7 章 使用 heat 模板

使用 heat 模板和环境文件来定义 overcloud 的某些方面。

heat 模板的结构有三个主要部分:

参数

参数是传递到 heat 的设置。使用这些参数定义和自定义默认值和非默认值。在模板的 parameter 部分中定义这些参数。

Resources

资源是您要作为堆栈的一部分创建和配置的特定对象。RHOSP 包含所有组件中的一组核心资源。

输出

这些是在堆栈创建后从 heat 传递的值。您可以通过 heat API 或客户端工具访问这些值。在模板的 output 部分中定义这些值。

当 heat 处理模板时,它会从模板创建堆栈,并为资源模板创建一组子堆栈。这种堆栈层次结构来自您使用模板定义的主堆栈。您可以使用以下命令查看堆栈层次结构:

$ heat stack-list --show-nested
Copy to Clipboard Toggle word wrap

7.1. 核心 heat 模板

Red Hat OpenStack Platform (RHOSP)包含 overcloud 的核心 heat 模板集合。您可以在 /usr/share/openstack-tripleo-heat-templates 目录中找到此集合。

此集合中有很多 heat 模板和环境文件。您可以使用主文件和目录来自定义部署。

overcloud.j2.yaml

此模板文件创建 overcloud 环境。它使用 Jinja2 语法,并迭代模板中的某些部分以创建自定义角色。在 overcloud 部署期间,director 将 Jinja2 格式呈现为 YAML。

overcloud-resource-registry-puppet.j2.yaml

此环境文件创建 overcloud 环境。它包含 overcloud 镜像上 Puppet 模块的一组配置。在 director 将 overcloud 镜像写入每个节点后,Heat 会使用在此环境文件中注册的资源启动每个节点的 Puppet 配置。此文件使用 Jinja2 语法,并迭代模板中的某些部分以创建自定义角色。在 overcloud 部署期间,director 将 Jinja2 格式呈现为 YAML。

roles_data.yaml

此文件包含 overcloud 中角色的定义,并将服务映射到每个角色。

network_data.yaml

此文件包含 overcloud 中网络的定义及其属性,包括子网、分配池和 VIP 状态。默认 network_data.yaml 文件仅包含默认网络: External、Internal Api、Storage、Storage Management、Tenant 和 Management。您可以创建自定义 network_data.yaml 文件,并使用 -n 选项将其包含在 openstack overcloud deploy 命令中。

plan-environment.yaml

此文件包含您的 overcloud 计划元数据的定义,包括计划名称、您要使用的主模板,以及您要应用到 overcloud 的环境文件。

capabilities-map.yaml

此文件包含 overcloud 计划的环境文件映射。使用此文件在 director Web UI 中描述和启用环境文件。如果您在 environment 目录中包含自定义环境文件,但没有在 capabilities-map.yaml 文件中定义这些文件,您可以在 web UI 的 Overall Settings 页面的 Other 子选项卡中找到这些环境文件。

environments

此目录包含可用于创建 overcloud 的其他 heat 环境文件。这些环境文件为您的 RHOSP 环境启用额外的功能。例如,您可以使用 cinder-netapp-config.yaml 环境文件为块存储服务 (cinder) 启用第三方后端存储选项。如果您在 environment 目录中包含自定义环境文件,但没有在 capabilities-map.yaml 文件中定义这些文件,您可以在 web UI 的 Overall Settings 页面的 Other 子选项卡中找到这些环境文件。

network

此目录包含一组 heat 模板,可用于创建隔离的网络和端口。

puppet

此目录包含 puppet 模板。overcloud-resource-registry-puppet.j2.yaml 环境文件使用 puppet 目录中的文件驱动每个节点上的 Puppet 配置应用。

puppet/services

此目录包含可组合服务架构中所有服务的 heat 模板。

extraconfig

此目录包含可用于启用额外功能的模板。例如,您可以使用 extraconfig/pre_deploy/rhel-registration 目录在 Red Hat Content Delivery 网络或您自己的 Red Hat Satellite 服务器中注册节点。

第 8 章 使用自定义角色和服务

all-in-one Red Hat OpenStack Platform (RHOSP)安装在一个包含所有 OpenStack 服务的单个节点上运行。

/usr/share/openstack-tripleo-heat-templates/roles 目录中的 Standalone.yaml 角色文件是包含 all-in-one 安装中所有服务的配置文件。您可以复制并修改 Standalone.yaml 角色文件,以在安装时启用和禁用服务。

Standalone.yaml 文件包含 Standalone 角色中的服务列表。使用以下示例了解此文件的语法:

- name: Standalone
  description: |
    A standalone role that includes a minimal set of services. Use this role for testing in a single node configuration with the `openstack tripleo deploy --standalone` command, or with the `openstack overcloud deploy` command.
  CountDefault: 1
  tags:
    - primary
    - controller
  disable_constraints: True
  ServicesDefault:
    - OS::TripleO::Services::Aide
    - OS::TripleO::Services::AodhApi
    - OS::TripleO::Services::AodhEvaluator
    ...
    - OS::TripleO::Services::Tuned
    - OS::TripleO::Services::Vpp
    - OS::TripleO::Services::Zaqar
Copy to Clipboard Toggle word wrap

在部署命令中包括此角色文件,以使用 Standalone 角色配置堆栈,该角色包含您在角色文件的 ServicesDefault: 部分中包含的服务:

[stack@all-in-one]$ sudo openstack tripleo deploy --templates -r /usr/share/openstack-tripleo-heat-templates/roles/Standalone.yaml
Copy to Clipboard Toggle word wrap

但是,在生产环境中,Red Hat OpenStack Platform 环境中,您可以使用包含部分 OpenStack 服务的角色,而不是包括单一节点上的所有服务。例如,默认 Controller 角色包括管理、网络和高可用性服务,默认的 Compute 角色包括计算服务。多节点环境中的默认角色文件是 /usr/share/openstack-tripleo-heat-templates/roles_data.yaml 文件。此文件定义以下角色类型:

  • Controller
  • Compute
  • BlockStorage
  • ObjectStorage
  • CephStorage

使用以下示例了解多节点环境中的角色语法:

----' - name: Controller description: | Controller 角色,其中包含数据库、消息传递和网络功能的所有服务。ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephClient …​ - name: Compute description: | Basic Compute Node role ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephClient …​ ----'

每次输入部署命令时都必须包含角色文件。您可以使用 deployment 命令中的 -r 参数覆盖此文件并使用自定义角色文件:

----' [stack@all-in-one\":\" sudo openstack tripleo deploy --templates -r ~/templates/roles_data-custom.yaml ----'

要在您的环境中启用或禁用单个服务,请完成以下步骤:

流程

  1. 要启用服务,请创建新环境文件并从您要启用的服务中删除 OS::114::None 的值:

        - OS::TripleO::Services::<SERVICE>:
    Copy to Clipboard Toggle word wrap

    在部署命令中包括此环境文件。

  2. 要禁用服务,请创建一个新环境文件,并为您要禁用的服务包含 OS::114::None 的值:

        - OS::TripleO::Services::<SERVICE>: OS::Heat::None
    Copy to Clipboard Toggle word wrap

    在部署命令中包括此环境文件。

第 9 章 例子

使用以下示例了解如何在带有各种网络配置的部署后启动计算实例。

在部署 all-in-one Red Hat OpenStack Platform (RHOSP)环境后,使用私有项目网络和提供商网络启动实例。以下示例基于单个 NIC 配置,且至少需要三个 IP 地址。

前提条件

  • OpenStack 服务的 IP 地址。
  • 虚拟路由器提供一个 IP 地址,用于提供与项目网络的连接。本例中会自动分配这个 IP 地址。
  • 至少一个用于提供商网络上的浮动 IP 地址的 IP 地址。

流程

  1. 创建配置帮助程序变量:

    # standalone with project networking and provider networking
    export OS_CLOUD=standalone
    export GATEWAY=192.168.25.1
    export STANDALONE_HOST=192.168.25.2
    export PUBLIC_NETWORK_CIDR=192.168.25.0/24
    export PRIVATE_NETWORK_CIDR=192.168.100.0/24
    export PUBLIC_NET_START=192.168.25.4
    export PUBLIC_NET_END=192.168.25.15
    export DNS_SERVER=1.1.1.1
    Copy to Clipboard Toggle word wrap
  2. 创建基本类别:

    $ openstack flavor create --ram 512 --disk 1 --vcpu 1 --public tiny
    Copy to Clipboard Toggle word wrap
  3. 下载 CirrOS 并创建 OpenStack 镜像:

    $ wget https://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
    $ openstack image create cirros --container-format bare --disk-format qcow2 --public --file cirros-0.4.0-x86_64-disk.img
    Copy to Clipboard Toggle word wrap
  4. 配置 SSH:

    $ ssh-keygen -m PEM -t rsa -b 2048 -f ~/.ssh/id_rsa_pem
    $ openstack keypair create --public-key ~/.ssh/id_rsa_pem.pub default
    Copy to Clipboard Toggle word wrap
  5. 创建一个简单的网络安全组:

    $ openstack security group create basic
    Copy to Clipboard Toggle word wrap
  6. 配置新的网络安全组:

    1. 启用 SSH:

      $ openstack security group rule create basic --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0
      Copy to Clipboard Toggle word wrap
    2. 启用 ping:

      $ openstack security group rule create --protocol icmp basic
      Copy to Clipboard Toggle word wrap
    3. 启用 DNS:

      $ openstack security group rule create --protocol udp --dst-port 53:53 basic
      Copy to Clipboard Toggle word wrap
  7. 创建 Neutron 网络:

    $ openstack network create --external --provider-physical-network datacentre --provider-network-type flat public
    $ openstack network create --internal private
    $ openstack subnet create public-net \
        --subnet-range $PUBLIC_NETWORK_CIDR \
        --no-dhcp \
        --gateway $GATEWAY \
        --allocation-pool start=$PUBLIC_NET_START,end=$PUBLIC_NET_END \
        --network public
    $ openstack subnet create private-net \
        --subnet-range $PRIVATE_NETWORK_CIDR \
        --network private
    Copy to Clipboard Toggle word wrap
  8. 创建虚拟路由器:

    # NOTE: In this case an IP will be automatically assigned
    # from the allocation pool for the subnet.
    $ openstack router create vrouter
    $ openstack router set vrouter --external-gateway public
    $ openstack router add subnet vrouter private-net
    Copy to Clipboard Toggle word wrap
  9. 创建浮动 IP:

    $ openstack floating ip create public
    Copy to Clipboard Toggle word wrap
  10. 启动实例:

    $ openstack server create --flavor tiny --image cirros --key-name default --network private --security-group basic myserver
    Copy to Clipboard Toggle word wrap
  11. 分配浮动 IP:

    $ openstack server add floating ip myserver <FLOATING_IP>
    Copy to Clipboard Toggle word wrap
    • <FLOATING_IP> 替换为您创建的浮动 IP 地址。
  12. 测试 SSH:

    ssh cirros@<FLOATING_IP>
    Copy to Clipboard Toggle word wrap
    • <FLOATING_IP> 替换为您创建的浮动 IP 地址。
网络架构

Standalone1NIC Tenant Provider

在部署 all-in-one Red Hat OpenStack Platform 环境后,请使用提供商网络启动实例。这个示例基于单个 NIC 配置,且至少需要 4 个 IP 地址。

前提条件

  • OpenStack 服务的 IP 地址。
  • 虚拟路由器提供一个 IP 地址,用于提供与项目网络的连接。本例中会自动分配这个 IP 地址。
  • 提供商网络上 DHCP 的一个 IP 地址。
  • 至少一个用于提供商网络上的浮动 IP 地址的 IP 地址。

流程

  1. 创建配置帮助程序变量:

    # standalone with project networking and provider networking
    export OS_CLOUD=standalone
    export GATEWAY=192.168.25.1
    export STANDALONE_HOST=192.168.25.2
    export VROUTER_IP=192.168.25.3
    export PUBLIC_NETWORK_CIDR=192.168.25.0/24
    export PUBLIC_NET_START=192.168.25.4
    export PUBLIC_NET_END=192.168.25.15
    export DNS_SERVER=1.1.1.1
    Copy to Clipboard Toggle word wrap
  2. 创建基本类别:

    $ openstack flavor create --ram 512 --disk 1 --vcpu 1 --public tiny
    Copy to Clipboard Toggle word wrap
  3. 下载 CirrOS 并创建 OpenStack 镜像:

    $ wget https://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
    $ openstack image create cirros --container-format bare --disk-format qcow2 --public --file cirros-0.4.0-x86_64-disk.img
    Copy to Clipboard Toggle word wrap
  4. 配置 SSH:

    $ ssh-keygen -m PEM -t rsa -b 2048 -f ~/.ssh/id_rsa_pem
    $ openstack keypair create --public-key ~/.ssh/id_rsa_pem.pub default
    Copy to Clipboard Toggle word wrap
  5. 创建一个简单的网络安全组:

    $ openstack security group create basic
    Copy to Clipboard Toggle word wrap
  6. 配置新的网络安全组:

    1. 启用 SSH:

      $ openstack security group rule create basic --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0
      Copy to Clipboard Toggle word wrap
    2. 启用 ping:

      $ openstack security group rule create --protocol icmp basic
      Copy to Clipboard Toggle word wrap
  7. 创建 Neutron 网络:

    $ openstack network create --external --provider-physical-network datacentre --provider-network-type flat public
    $ openstack network create --internal private
    $ openstack subnet create public-net \
        --subnet-range $PUBLIC_NETWORK_CIDR \
        --gateway $GATEWAY \
        --allocation-pool start=$PUBLIC_NET_START,end=$PUBLIC_NET_END \
        --network public \
        --host-route destination=0.0.0.0/0,gateway=$GATEWAY \
        --dns-nameserver $DNS_SERVER
    Copy to Clipboard Toggle word wrap
  8. 启动实例:

    $ openstack server create --flavor tiny --image cirros --key-name default --network public --security-group basic myserver
    Copy to Clipboard Toggle word wrap
  9. 测试 SSH:

    ssh cirros@<VM_IP>
    Copy to Clipboard Toggle word wrap
    • <VM_IP > 替换为您创建的虚拟机的地址。
网络架构

Standalone1NIC Provider

在部署 all-in-one Red Hat OpenStack Platform 环境后,请使用私有项目网络和提供商网络启动实例。这个示例基于双 NIC 配置,且在提供商网络中至少需要 4 个 IP 地址。

先决条件

  • 提供商网络上网关的一个 IP 地址。
  • OpenStack 端点的一个 IP 地址。
  • 虚拟路由器提供一个 IP 地址,用于提供与项目网络的连接。本例中会自动分配这个 IP 地址。
  • 至少一个用于提供商网络上的浮动 IP 地址的 IP 地址。

流程

  1. 创建配置帮助程序变量:

    # standalone with project networking and provider networking
    export OS_CLOUD=standalone
    export GATEWAY=192.168.25.1
    export STANDALONE_HOST=192.168.0.2
    export PUBLIC_NETWORK_CIDR=192.168.25.0/24
    export PRIVATE_NETWORK_CIDR=192.168.100.0/24
    export PUBLIC_NET_START=192.168.25.3
    export PUBLIC_NET_END=192.168.25.254
    export DNS_SERVER=1.1.1.1
    Copy to Clipboard Toggle word wrap
  2. 创建基本类别:

    $ openstack flavor create --ram 512 --disk 1 --vcpu 1 --public tiny
    Copy to Clipboard Toggle word wrap
  3. 下载 CirrOS 并创建 OpenStack 镜像:

    $ wget https://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
    $ openstack image create cirros --container-format bare --disk-format qcow2 --public --file cirros-0.4.0-x86_64-disk.img
    Copy to Clipboard Toggle word wrap
  4. 配置 SSH:

    $ ssh-keygen -m PEM -t rsa -b 2048 -f ~/.ssh/id_rsa_pem
    $ openstack keypair create --public-key ~/.ssh/id_rsa_pem.pub default
    Copy to Clipboard Toggle word wrap
  5. 创建一个简单的网络安全组:

    $ openstack security group create basic
    Copy to Clipboard Toggle word wrap
  6. 配置新的网络安全组:

    1. 启用 SSH:

      $ openstack security group rule create basic --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0
      Copy to Clipboard Toggle word wrap
    2. 启用 ping:

      $ openstack security group rule create --protocol icmp basic
      Copy to Clipboard Toggle word wrap
    3. 启用 DNS:

      $ openstack security group rule create --protocol udp --dst-port 53:53 basic
      Copy to Clipboard Toggle word wrap
  7. 创建 Neutron 网络:

    $ openstack network create --external --provider-physical-network datacentre --provider-network-type flat public
    $ openstack network create --internal private
    $ openstack subnet create public-net \
        --subnet-range $PUBLIC_NETWORK_CIDR \
        --no-dhcp \
        --gateway $GATEWAY \
        --allocation-pool start=$PUBLIC_NET_START,end=$PUBLIC_NET_END \
        --network public
    $ openstack subnet create private-net \
        --subnet-range $PRIVATE_NETWORK_CIDR \
        --network private
    Copy to Clipboard Toggle word wrap
  8. 创建虚拟路由器:

    # NOTE: In this case an IP will be automatically assigned
    # from the allocation pool for the subnet.
    $ openstack router create vrouter
    $ openstack router set vrouter --external-gateway public
    $ openstack router add subnet vrouter private-net
    Copy to Clipboard Toggle word wrap
  9. 创建浮动 IP:

    $ openstack floating ip create public
    Copy to Clipboard Toggle word wrap
  10. 启动实例:

    $ openstack server create --flavor tiny --image cirros --key-name default --network private --security-group basic myserver
    Copy to Clipboard Toggle word wrap
  11. 分配浮动 IP:

    $ openstack server add floating ip myserver <FLOATING_IP>
    Copy to Clipboard Toggle word wrap
    • <FLOATING_IP> 替换为您创建的浮动 IP 地址。
  12. 测试 SSH:

    ssh cirros@<FLOATING_IP>
    Copy to Clipboard Toggle word wrap
    • <FLOATING_IP> 替换为您创建的浮动 IP 地址。
网络架构

Standalone2NIC Tenant Provider

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部