独立部署指南
为测试和概念验证环境创建一个 all-in-one OpenStack 云
OpenStack Documentation Team
rhos-docs@redhat.com摘要
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈
我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。
使用直接文档反馈(DDF)功能
使用 添加反馈 DDF 功能,用于特定句子、段落或代码块上的直接注释。
- 以 Multi-page HTML 格式查看文档。
- 请确定您看到文档右上角的 反馈 按钮。
- 用鼠标指针高亮显示您想评论的文本部分。
- 点 添加反馈。
- 在添加反馈项中输入您的意见。
- 可选:添加您的电子邮件地址,以便文档团队可以联系您以讨论您的问题。
- 点 Submit。
第 1 章 All-in-one 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 安装进行基本测试和开发。all-in-one 安装是 Red Hat OpenStack Platform 的良好起点和测试环境,但是如果您想要执行复杂的操作,您必须部署生产级扩展的云。
工作流
要安装、配置和部署简单的单节点 Red Hat OpenStack Platform 环境,请在以下基本工作流中完成任务:
- 准备您的环境。
- 为 all-in-one 环境安装软件包。
- 配置 all-in-one 环境。
- 部署 all-in-one 环境。
All-in-one 安装的好处
- 可组合的服务。
- 预定义的角色。
- 密度的单节点环境。
- 可用于在容器中运行小页安装程序并生成 Ansible playbook 的 playbook。
配置
如果要试验配置角色和服务,请参阅 第 8 章 使用自定义角色和服务 和 第 7.1 节 “核心 heat 模板”。
可组合角色
您可以创建自定义可组合角色,并为每个角色部署特定的服务。
Ansible
此安装通过部署命令自动应用 Ansible playbook。您还可以指示部署命令输出您可以在其他环境中使用的 Ansible playbook。例如,您可以在 all-in-one 安装中完成测试,然后将验证的 Ansible playbook 应用到其他环境。
第 3 章 安装 all-in-one Red Hat OpenStack Platform 环境
在开始配置、部署和测试所有环境前,您必须配置非 root 用户并安装必要的软件包和依赖项:
在 all-in-one 主机上创建一个非 root 用户:
[root@all-in-one]# useradd stack
设置
stack用户的密码:[root@all-in-one]# passwd stack
禁用使用
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
以非 root 用户身份登录到 all-in-one 主机:
$ ssh stack@<all-in-one>
使用 Red Hat Subscription Manager 注册机器。在提示符处输入您的红帽订阅凭证:
[stack@all-in-one]$ sudo subscription-manager register
将您的红帽订阅附加到授权服务器:
[stack@all-in-one]$ sudo subscription-manager attach --auto
注意--auto选项可能无法订阅正确的订阅池。确保您订阅了正确的池,否则您可能无法启用此安装所需的所有存储库。使用subscription-manager list --all --available命令来识别正确的池 ID。将 undercloud 锁定到 Red Hat Enterprise Linux 9.0:
$ sudo subscription-manager release --set=9.0
运行以下命令来安装
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
注意all-in-one 环境是 Red Hat OpenStack Platform 17.0 中的技术预览功能。
更新基础操作系统并重启系统:
[stack@all-in-one]$ sudo dnf update [stack@all-in-one]$ sudo reboot
- 重新引导后重新登录主机。
安装 TripleO 命令行界面(CLI):
[stack@all-in-one]$ sudo dnf install -y python3-tripleoclient
第 4 章 配置 all-in-one Red Hat OpenStack Platform 环境
要创建 all-in-one 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
您可以自定义 all-in-one 环境以用于开发或测试。在您的主目录中新创建的 yaml 文件中包括 standalone-tripleo.yaml 或 Standalone.yaml 配置文件中的参数的修改值。在 openstack tripleo deploy 命令中包含此文件。
4.1. 为 all-in-one Red Hat OpenStack Platform (RHOSP)环境生成 YAML 文件
要生成 containers-prepare-parameters.yaml 和 standalone_parameters.yaml 文件,请完成以下步骤:
生成包含默认
ContainerImagePrepare参数的containers-prepare-parameters.yaml文件:[stack@all-in-one]$ openstack tripleo container image prepare default --output-env-file $HOME/containers-prepare-parameters.yaml
编辑
containers-prepare-parameters.yaml文件,并在ContainerImageRegistryCredentials参数中包含您的红帽凭证,以便部署过程可以使用 registry.redhat.io 进行身份验证,并成功拉取容器镜像:parameter_defaults: ContainerImagePrepare: ... ContainerImageRegistryCredentials: registry.redhat.io: <USERNAME>: "<PASSWORD>"注意为了避免以纯文本形式输入密码,请创建一个 Red Hat Service Account。如需更多信息,请参阅 Red Hat Container Registry 身份验证 :
在
containers-prepare-parameters.yaml中将ContainerImageRegistryLogin参数设置为true:parameter_defaults: ContainerImagePrepare: ... ContainerImageRegistryCredentials: registry.redhat.io: <USERNAME>: "<PASSWORD>" ContainerImageRegistryLogin: true如果要使用 all-in-one 主机作为容器 registry,省略此参数,并在
openstack tripleo container image prepare命令中包含--local-push-destination。如需更多信息,请参阅 准备容器镜像。创建
$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如果只使用单个网络接口,则必须定义默认路由:
ControlPlaneStaticRoutes: - ip_netmask: 0.0.0.0/0 next_hop: $GATEWAY default: true如果您有内部时间源,或者您的环境阻止访问外部时间源,请使用
NtpServer参数定义您要使用的时间源:parameter_defaults: NtpServer: - clock.example.com如果要在虚拟环境中使用 all-in-one RHOSP 安装,则必须使用
NovaComputeLibvirtType参数定义虚拟化类型:parameter_defaults: NovaComputeLibvirtType: qemu
负载均衡服务(octavia)不需要您配置 SSH。但是,如果您想要 SSH 访问负载均衡实例(amphorae),请添加
OctaviaAmphoraSshKeyFile参数,其值带有 stack 用户的公钥文件的绝对路径:OctaviaAmphoraSshKeyFile: "/home/stack/.ssh/id_rsa.pub"
第 5 章 部署 all-in-one Red Hat OpenStack Platform 环境
要部署 all-in-one 环境,请完成以下步骤:
使用您的红帽凭证登录到 registry.redhat.io:
[stack@all-in-one]$ sudo podman login registry.redhat.io
导出部署命令使用的环境变量。在本例中,使用在管理网络上 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
设置主机名。如果节点使用 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
运行部署命令。确保包含与环境相关的所有
.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
部署后,您可以使用 /home/$USER/.config/openstack 目录中的 clouds.yaml 配置文件来查询并验证 OpenStack 服务:
[stack@all-in-one]$ export OS_CLOUD=standalone [stack@all-in-one]$ openstack endpoint list
要访问仪表板,请访问 http://192.168.25.2/dashboard,并使用 $HOME/config/openstack/clouds.yaml 文件中的默认用户名 admin 和密码 :
[stack@all-in-one]$ cat $HOME/.config/openstack/clouds.yaml | grep password:
第 6 章 使用 all-in-one Red Hat OpenStack Platform 环境创建 Ansible playbook
部署命令会自动将 Ansible playbook 应用到环境。但是,您可以修改部署命令来生成 Ansible playbook,而不将它们应用到部署,并在稍后运行 playbook。
在 deploy 命令中包含 --output-only 选项,以生成 standalone-ansible-XXXXX 目录。此目录包含一组可以在其他主机上运行的 Ansible playbook。
要生成 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
要运行 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
第 7 章 使用 heat 模板
本指南中的自定义配置使用 heat 模板和环境文件来定义 overcloud 的某些方面。本章介绍了 Red Hat OpenStack Platform 上下文中 heat 模板的结构的基本介绍。模板的目的是定义和创建堆栈,这是 heat 创建的资源集合,以及资源的配置。资源是 OpenStack 中的对象,可以包含计算资源、网络配置、安全组、扩展规则和自定义资源。
heat 模板的结构有三个主要部分:
参数
参数是传递到 heat 的设置。使用这些参数定义和自定义默认值和非默认值。在模板的 parameter 部分中定义这些参数。
Resources
资源是您要作为堆栈的一部分创建和配置的特定对象。OpenStack 包含所有组件中的一组核心资源。在模板的 resources 部分中定义资源。
输出
这些是在堆栈创建后从 heat 传递的值。您可以通过 heat API 或客户端工具访问这些值。在模板的 output 部分中定义这些值。
当 heat 处理模板时,它会从模板创建堆栈,并为资源模板创建一组子堆栈。这种堆栈层次结构来自您使用模板定义的主堆栈。您可以使用以下命令查看堆栈层次结构:
$ heat stack-list --show-nested
7.1. 核心 heat 模板
Red Hat OpenStack Platform 包含 overcloud 的核心 heat 模板集合。您可以在 /usr/share/openstack-tripleo-heat-templates 目录中找到此集合。
此集合中有很多 heat 模板和环境文件。本节介绍可用于自定义部署的主要文件和目录。
overcloud.j2.yaml
此文件是用于创建 overcloud 环境的主要模板文件。此文件使用 Jinja2 语法,并迭代模板中的某些部分以创建自定义角色。在 overcloud 部署过程中将 Jinja2 格式呈现为 YAML。
overcloud-resource-registry-puppet.j2.yaml
此文件是用于创建 overcloud 环境的主要环境文件。此文件包含 overcloud 镜像上 Puppet 模块的一组配置。在 director 将 overcloud 镜像写入每个节点后,heat 会使用此环境文件中注册的资源启动每个节点的 Puppet 配置。此文件使用 Jinja2 语法,并迭代模板中的某些部分以创建自定义角色。在 overcloud 部署过程中将 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 环境文件。这些环境文件为您的 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 模板集合中定义的一组服务。但是,all-in-one 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
在部署命令中包括此角色文件,以使用 Standalone 角色配置堆栈,该角色包含您在角色文件的 ServicesDefault: 部分中包含的服务:
[stack@all-in-one]$ sudo openstack tripleo deploy --templates -r /usr/share/openstack-tripleo-heat-templates/roles/Standalone.yaml
但是,在生产环境中,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
...
每次运行部署命令时都必须包含角色文件。您可以使用 deployment 命令中的 -r 参数覆盖此文件并使用自定义角色文件:
[stack@all-in-one]$ sudo openstack tripleo deploy --templates -r ~/templates/roles_data-custom.yaml
8.1. 在 all-in-one Red Hat OpenStack Platform 环境中启用和禁用服务
/usr/share/openstack-tripleo-heat-templates/roles 目录中的 Standalone.yaml 角色文件是包含 all-in-one 安装中所有服务的配置文件。您可以启用或禁用单独的服务。
流程
要禁用服务,请创建一个新环境文件,并为您要禁用的服务包含
OS::114::None的值:- OS::TripleO::Services::<SERVICE>: OS::Heat::None
在部署命令中包括此环境文件。
要启用服务,请创建新环境文件并从您要启用的服务中删除
OS::114::None的值:- OS::TripleO::Services::<SERVICE>:
在部署命令中包括此环境文件。
第 9 章 例子
使用以下示例了解如何在带有各种网络配置的部署后启动计算实例。
9.1. 示例 1:在项目和提供商网络中使用一个 NIC 启动实例
在部署 all-in-one Red Hat OpenStack Platform 环境后,请使用私有项目网络和提供商网络启动实例。这个示例基于单个 NIC 配置,且至少需要三个 IP 地址。
先决条件
要成功完成这个示例,环境中必须有以下 IP 地址:
- OpenStack 服务的 IP 地址。
- 虚拟路由器提供一个 IP 地址,用于提供与项目网络的连接。本例中会自动分配这个 IP 地址。
- 至少一个用于提供商网络上的浮动 IP 地址的 IP 地址。
流程
创建配置帮助程序变量:
# 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
创建基本类别:
$ openstack flavor create --ram 512 --disk 1 --vcpu 1 --public tiny
下载 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
配置 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
创建一个简单的网络安全组:
$ openstack security group create basic
配置新的网络安全组:
启用 SSH:
$ openstack security group rule create basic --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0
启用 ping:
$ openstack security group rule create --protocol icmp basic
启用 DNS:
$ openstack security group rule create --protocol udp --dst-port 53:53 basic
创建 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创建虚拟路由器:
# 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
创建浮动 IP:
$ openstack floating ip create public
启动实例:
$ openstack server create --flavor tiny --image cirros --key-name default --network private --security-group basic myserver
分配浮动 IP:
$ openstack server add floating ip myserver <FLOATING_IP>
将
FLOATING_IP替换为您在上一步中创建的浮动 IP 地址。测试 SSH:
ssh cirros@<FLOATING_IP>
将
FLOATING_IP替换为您在上一步中创建的浮动 IP 地址。
网络架构
9.2. 示例 2:在提供商网络中使用一个 NIC 启动实例
在部署 all-in-one Red Hat OpenStack Platform 环境后,请使用提供商网络启动实例。这个示例基于单个 NIC 配置,且至少需要 4 个 IP 地址。
先决条件
要成功完成这个示例,环境中必须有以下 IP 地址:
- OpenStack 服务的 IP 地址。
- 虚拟路由器提供一个 IP 地址,用于提供与项目网络的连接。本例中会自动分配这个 IP 地址。
- 提供商网络上 DHCP 的一个 IP 地址。
- 至少一个用于提供商网络上的浮动 IP 地址的 IP 地址。
流程
创建配置帮助程序变量:
# 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
创建基本类别:
$ openstack flavor create --ram 512 --disk 1 --vcpu 1 --public tiny
下载 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
配置 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
创建一个简单的网络安全组:
$ openstack security group create basic
配置新的网络安全组:
启用 SSH:
$ openstack security group rule create basic --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0
启用 ping:
$ openstack security group rule create --protocol icmp basic
创建 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启动实例:
$ openstack server create --flavor tiny --image cirros --key-name default --network public --security-group basic myserver
测试 SSH:
ssh cirros@<VM_IP>
将
VM_IP替换为您在上一步中创建的虚拟机的地址。
网络架构
9.3. 示例 3:启动在项目和提供商网络上有两个 NIC 的实例
在部署 all-in-one Red Hat OpenStack Platform 环境后,请使用私有项目网络和提供商网络启动实例。这个示例基于双 NIC 配置,且在提供商网络中至少需要 4 个 IP 地址。
先决条件
- 提供商网络上网关的一个 IP 地址。
- OpenStack 端点的一个 IP 地址。
- 虚拟路由器提供一个 IP 地址,用于提供与项目网络的连接。本例中会自动分配这个 IP 地址。
- 至少一个用于提供商网络上的浮动 IP 地址的 IP 地址。
流程
创建配置帮助程序变量:
# 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
创建基本类别:
$ openstack flavor create --ram 512 --disk 1 --vcpu 1 --public tiny
下载 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
配置 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
创建一个简单的网络安全组:
$ openstack security group create basic
配置新的网络安全组:
启用 SSH:
$ openstack security group rule create basic --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0
启用 ping:
$ openstack security group rule create --protocol icmp basic
启用 DNS:
$ openstack security group rule create --protocol udp --dst-port 53:53 basic
创建 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创建虚拟路由器:
# 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
创建浮动 IP:
$ openstack floating ip create public
启动实例:
$ openstack server create --flavor tiny --image cirros --key-name default --network private --security-group basic myserver
分配浮动 IP:
$ openstack server add floating ip myserver <FLOATING_IP>
将
FLOATING_IP替换为您在上一步中创建的浮动 IP 地址。测试 SSH:
ssh cirros@<FLOATING_IP>
将
FLOATING_IP替换为您在上一步中创建的浮动 IP 地址。
网络架构