独立部署指南


Red Hat OpenStack Platform 17.0

创建用于测试和概念验证环境的一体化 OpenStack 云

OpenStack Documentation Team

摘要

使用红帽 OpenStack 平台独立环境,在测试环境中安装、配置和部署红帽 OpenStack 平台。使用本指南部署简单的单节点 OpenStack 云。

第 1 章 体式 Red Hat OpenStack Platform 安装

all-in-one 安装方法使用 TripleO 通过简单的单节点环境部署 Red Hat OpenStack Platform 和相关服务。使用此安装在具有有限或无后续操作的单一节点上启用概念验证、开发和测试部署。

重要

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

1.1. 先决条件

  • 您的系统必须安装有 Red Hat Enterprise Linux 9.0 基础操作系统。
  • 您的系统必须有两个网络接口,以便在 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 环境概述

本节包含有关安装、配置和部署简单单节点 Red Hat OpenStack Platform 环境的信息。在这种情况下,没有预先存在的 undercloud 依赖项。相反,安装程序会运行一个内联 heat-all 实例来引导部署过程,并将所选 heat 模板转换为您可以在本地机器上执行的 Ansible playbook。

使用 all-in-one 安装进行基本测试和开发。体式安装是 Red Hat OpenStack Platform 的良好起点和测试环境,但如果要执行复杂的操作,则必须部署生产级扩展云。

工作流

要安装、配置和部署简单单节点 Red Hat OpenStack Platform 环境,请完成以下基本工作流中的任务:

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

all-in-one 安装的好处

  • 可组合的服务。
  • 预定义的角色。
  • 精简的单节点环境。
  • 您可以使用 playbook 在容器中运行小空间安装程序并生成 Ansible 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. sudo 用作 stack 用户时禁用密码要求:

    [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 9.0:

    $ sudo subscription-manager release --set=9.0
    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-9-for-x86_64-baseos-eus-rpms \
    --enable=rhel-9-for-x86_64-appstream-eus-rpms \
    --enable=rhel-9-for-x86_64-highavailability-eus-rpms \
    --enable=openstack-17-for-rhel-9-x86_64-rpms \
    --enable=fast-datapath-for-rhel-9-x86_64-rpms
    Copy to Clipboard Toggle word wrap
    注意

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

  1. 更新基础操作系统并重启系统:

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

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

要创建一体化 Red Hat OpenStack Platform 环境,请使用 openstack tripleo deploy 命令包括四个环境文件。您必须创建两个配置文件,如下所示:

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

更多信息请参阅 第 4.1 节 “为 all-in-one Red Hat OpenStack Platform (RHOSP)环境生成 YAML 文件”

/usr/share/openstack-tripleo-heat-templates/ 目录中为您提供了两个环境文件:

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

您可以自定义用于开发或测试的一体化环境。在主目录中新创建的 yaml 文件中的 standalone-tripleo.yamlStandalone.yaml 配置文件中包括参数的修改值。将此文件包含在 openstack tripleo deploy 命令中。

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

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

    [stack@all-in-one]$ 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 命令中省略此参数和 include --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 VIP=192.168.25.3
    [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: localdomain
      ControlPlaneStaticRoutes: []
      Debug: true
      DeploymentUser: $USER
      KernelIpNonLocalBind: 1
      DockerInsecureRegistryAddress:
        - $IP:8787
      NeutronPublicInterface: $INTERFACE
      NeutronDnsDomain: localdomain
      NeutronBridgeMappings: datacentre:br-ctlplane
      NeutronPhysicalBridge: br-ctlplane
      StandaloneEnableRoutedNetworks: false
      StandaloneHomeDir: $HOME
      StandaloneLocalMtu: 1500
    EOF
    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"

要部署您的 all-in-one 环境,请完成以下步骤:

  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 和 192.168.25.3 的 eth1 接口部署 all-in-one 环境:

    [stack@all-in-one]$ export IP=192.168.25.2
    [stack@all-in-one]$ export VIP=192.168.25.3
    [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 \
      --control-virtual-ip=$VIP \
      -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,并使用 $HOME/config/openstack/clouds.yaml 文件中的默认用户名 admin 和密码

[stack@all-in-one]$ cat $HOME/.config/openstack/clouds.yaml | grep password:
Copy to Clipboard Toggle word wrap

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

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

  1. 要生成 Ansible playbook 目录,请使用仅 option -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 的某些方面。本章包含 Red Hat OpenStack Platform 中 heat 模板的结构的基本介绍。模板的目的是定义和创建堆栈,这是 heat 创建的资源的集合,以及资源的配置。资源是 OpenStack 中的对象,可以包含计算资源、网络配置、安全组、扩展规则和自定义资源。

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

参数

参数是传递给 heat 的设置。使用这些参数定义和自定义 default 和 non-default 值。在模板的 parameters 部分中定义这些参数。

Resources

资源是您要创建和配置的特定对象,作为堆栈的一部分。OpenStack 包含一组跨越所有组件的核心资源。在模板的 resources 部分中定义资源。

输出

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

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

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

7.1. 核心 heat 模板

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

此集合中有许多 heat 模板和环境文件。本节包含有关可用于自定义部署的主文件和目录的信息。

overcloud.j2.yaml

此文件是用于创建 overcloud 环境的主要模板文件。此文件使用 Jinja2 语法,并迭代模板中的某些部分来创建自定义角色。Jinja2 格式在 overcloud 部署过程中呈现为 YAML。

overcloud-resource-registry-puppet.j2.yaml

此文件是用于创建 overcloud 环境的主要环境文件。此文件包含 overcloud 镜像上 Puppet 模块的一组配置。在 director 将 overcloud 镜像写入每个节点后,heat 会使用此环境文件中注册的资源启动每个节点的 Puppet 配置。此文件使用 Jinja2 语法,并迭代模板中的某些部分来创建自定义角色。Jinja2 格式在 overcloud 部署过程中呈现为 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 环境文件。这些环境文件可为 Red Hat OpenStack Platform 环境启用额外的功能。例如,您可以使用 cinder-netapp-config.yaml 环境文件为块存储服务(cinder)启用 NetApp 后端存储。如果您在 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 章 使用自定义角色和服务

Red Hat OpenStack Platform 通常由预定义角色中的节点组成,如 Controller 角色、Compute 角色和不同的存储角色类型的节点。这些默认角色各自包含一组您在核心 heat 模板集合中定义的服务。但是,一个一体化的 Red Hat OpenStack Platform 安装在一个包含所有 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 role that contains all of the services for database, messaging and network functions.
  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
    ...
Copy to Clipboard Toggle word wrap

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

[stack@all-in-one]$ sudo openstack tripleo deploy --templates -r ~/templates/roles_data-custom.yaml
Copy to Clipboard Toggle word wrap

/usr/share/openstack-tripleo-heat-templates/roles 目录中的 Standalone.yaml 角色文件是包含 all-in-one 安装中的所有服务的配置文件。您可以启用或禁用单个服务。

流程
  1. 要禁用服务,请创建新环境文件,并为您要禁用的服务包含值 OS::Heat::None

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

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

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

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

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

第 9 章 例子

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

在部署一体 Red Hat OpenStack Platform 环境后,了解如何使用私有项目网络和提供商网络启动实例。这个示例基于单个 NIC 配置,且至少需要三个 IP 地址。

先决条件

要成功完成此示例,您必须在您的环境中提供以下 IP 地址:

  • OpenStack 服务的一个 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 地址。

先决条件

要成功完成此示例,您必须在您的环境中提供以下 IP 地址:

  • OpenStack 服务的一个 IP 地址。
  • 虚拟路由器一个 IP 地址,用于提供与项目网络的连接。本例中会自动分配此 IP 地址。
  • 提供商网络中的一个 DHCP 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

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

先决条件
  • 提供商网络中的一个网关 IP 地址。
  • OpenStack 端点的一个 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

© 2025 Red Hat