11
采用 OpenStack 重新传输云实例的 VMware 用户指南 作者: John S. Tonello SUSE Global Technical Marketing Manager www.suse.com SUSE 指南

采用 OpenStack 重新传输云实例的 - SUSE Linux...$ sudo pip install python-heatclient . 不仅有超级管理程序 如果您习惯使用. VMware,则一定要考虑基本服务器虚拟化。VMware

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 采用 OpenStack 重新传输云实例的 - SUSE Linux...$ sudo pip install python-heatclient . 不仅有超级管理程序 如果您习惯使用. VMware,则一定要考虑基本服务器虚拟化。VMware

采用 OpenStack 重新传输云实例的 VMware 用户指南 作者: John S. Tonello SUSE Global Technical Marketing Manager

www.suse.com SUSE 指南

Page 2: 采用 OpenStack 重新传输云实例的 - SUSE Linux...$ sudo pip install python-heatclient . 不仅有超级管理程序 如果您习惯使用. VMware,则一定要考虑基本服务器虚拟化。VMware

第 2 页

数据中心的演变 您决定将部分 AWS 或 Azure 应用程序重新传输到刚刚在数据中心中启动的 OpenStack 群集,但您和您的团队却苦思冥想,

不知从何入手。毕竟,OpenStack 看起来与您所了解的 VMware 产品并不完全相似,它与公共云暂时也只有一种相似之处。

该从何入手?

本 SUSE 指南将引导您完成简单的 OpenStack 部署,以便让您熟悉环境。它将帮助您了解如何通过首先关注基础设施来

部署自己的应用程序,以及它与 VMware 等典型虚拟机环境的不同之处。然后,您将逐步完成应用程序的软件定义实施。

最后,您将更好地理解如何构建就地部署云,并且迅速将关键的云应用程序迁移回内部环境。

您需要什么 要充分利用本指南,您需要访问 OpenStack 部署。如果您已经完成了部署且正在运行,那就再好不过了。如果尚未部署,

您可以获取 SUSE OpenStack Cloud 的免费试用版本、安装容器化 OpenStack 项目 Kolla-Ansible;获取面向 Windows、

Mac 或 Linux 的可下载培训实验;通过 OpenStack Public Cloud Passport 使用公共实例;甚至部署 DevStack。

您需要在堆栈中启用以下各项:

• Nova(计算)

• Neutron(联网)

• Glance(映像)

• Heat(用于构建堆栈)

• Horizon(仪表板)

本示例未严格要求 Cinder 块储存,但如果您计划在此示例项目的基础上继续进行扩展,则此功能非常有用。

如果您使用的是命令行,您还需要安装 openstack-heat 或 python-heatclient,因为 “stack create” 命令并非

是 openstack 命令的函数。要进行安装,请使用 pip:

$ sudo pip install python-heatclient

不仅有超级管理程序 如果您习惯使用 VMware,则一定要考虑基本服务器虚拟化。VMware 和 Hyper-V 提供的超级管理程序使大规模部署虚拟

机变得十分简单。它们十分擅长于此,也提供了比 KVM 和 Xen 功能更强大的工具,但是公共云和 OpenStack 的功能却远

不止为虚拟机提供超级管理程序。

例如,OpenStack 不是将特定虚拟机或虚拟机组放置在 VMware 群集中的特定 ESXi 主机上,而是将所有物理主机中的资

源汇集在一起,抽象硬件、网络和存储。它根据以前分配的资源决定每个实例放置的位置,并根据群集中的可用资源分配

CPU、RAM 和网络资源。OpenStack 使用代码来定义每个实例的组件,从而能够快速、一致地启动和复制,而不是依赖于

从以前构建的虚拟机中派生而来的虚拟机模板。

Page 3: 采用 OpenStack 重新传输云实例的 - SUSE Linux...$ sudo pip install python-heatclient . 不仅有超级管理程序 如果您习惯使用. VMware,则一定要考虑基本服务器虚拟化。VMware

第 3 页

这与 AWS 或 Azure(或任何云提供商)实现快速虚拟机和应用程序部署的方式非常相似。您可以选择自己的操作系统、

所需实例的风格和大小,这样就能很快设置好服务器。底层基础设施(包括网络和存储)均会得到抽象。

因此,OpenStack 实例也比您习惯使用的 VMware 虚拟机更加短暂。是的,OpenStack 实例可以根据需要进行修改或制作,

但也可以通过使用简单的命令或文本文件随意重新创建。只要您维护好核心模块 - 映像、实例类、网络和存储,就可以随意

生成新实例。

对比而言,VMware 会在最终放置每个特定主机的虚拟机之间共享资源,并在 vSphere 中标识为节点。在 VMware 模式中,

虚拟机及其资源通常遵循特定节点。

图 1. 在此 VMware vSphere 示例中,按区域组织的 ESXi 节点形成 VMware 群集。

借助 OpenStack,每个裸机服务器或节点的资源都将汇集在一起,实例共享由 Nova Compute 服务管理

的这些资源。Nova 会跟踪资源并使用它们来生成新的虚拟机,这在 OpenStack 中称为实例。

Page 4: 采用 OpenStack 重新传输云实例的 - SUSE Linux...$ sudo pip install python-heatclient . 不仅有超级管理程序 如果您习惯使用. VMware,则一定要考虑基本服务器虚拟化。VMware

第 4 页

图 2. 在此 OpenStack 示例中,系统将汇集并抽象来自各个主机的资源。

实例基本信息 要创建新实例,您必须先准备好构建块。当您在网络、存储、CPU 和 RAM 等方面做出决策时,构建块通常会随

OpenStack 本身一起部署。对于基本信息信息而言,您需要:

• 要启动的映像 - 这通常是基于 Linux 的映像,往往采用 qcow2 格式。根据具体用途,您的映像可能是相当小的准

系统,也可能是相当大的自定义系统。只需上传新的操作系统文件即可随时添加新映像。这些文件形式各异,通常

是您喜爱的 Linux 发行套件中的小型预构建虚拟机。OpenStack Glance 服务会跟踪您添加的每个映像。我们稍后

尝试使用的示例使用的是 Fedora 映像,您可以通过点击以下链接下载:

https://download.fedoraproject.org/pub/fedora/linux/releases/29/Cloud/x86_64/images/Fedora-Cloud-Base-29-

1.2.x86_64.qcow2。有许多公开的 OpenStack 映像可供选择。

图 3. 映像为 OpenStack 实例提供基本操作系统。

Page 5: 采用 OpenStack 重新传输云实例的 - SUSE Linux...$ sudo pip install python-heatclient . 不仅有超级管理程序 如果您习惯使用. VMware,则一定要考虑基本服务器虚拟化。VMware

第 5 页

• 类型 - 在 OpenStack 中,与公共云一样,实例也有像 m1.tiny, m1.small, m1.medium 以及类似的类型。 这些是您可以定义的任意大小。每种类型都有一定数量的 CPU、RAM、磁盘和其他要求,因此当您选择 m1.small 时,您知道您正在选择创建一个 RAM 为 2Gb、1 个 CPU 和 20Gb 磁盘的实例。

• 网络 - 首次部署 OpenStack 时,您通常会添加一个在 OpenStack 群集内流量使用的专用网络(类似于 10.0.0.0/24)。这使实例能够相互通信,但不能与外界通信。添加外部网络很常见,您可以从中提取浮动 IP 地址,从而使外界访问您的实例。OpenStack 通常会将不同子网中的免费 IP 地址自动分配给实例,并跟踪所有地址。 虚拟路由器管理网络之间的流量。 这与 VMware 或 KVM 形成了鲜明对比。使用那两种产品时,在启动虚拟机时,通常需要预先确定要分配的 IP 地址和主机名。OpenStack 则会自动从池中提取相应信息。

图 4. 一个简单的双网络拓扑。在本图中,demo-net 位于 OpenStack 的内部,public1 提供外部连接,而 demo-router 将

它们连接在一起。

• 密钥对 - 与独立虚拟机不同,您通常不使用用户名和密码登录 OpenStack 实例。而是使用共享密钥。

OpenStack 会为您生成密钥(您需要下载私钥部分并妥善保管),或者您也可以上载现有的公钥,例如

~/.ssh/id_rsa.pub。这些密钥与您使用 ssh-keygen 命令在任何 Linux 系统上创建的共享密钥的类型相同。

您可以使用这些密钥登录任何实例:

$ ssh -i ~/.ssh/id_rsa [email protected]

因映像的类型而异,您将使用类似 “centos”、“opensuse” 或 “ubuntu” 的用户名登录。

Page 6: 采用 OpenStack 重新传输云实例的 - SUSE Linux...$ sudo pip install python-heatclient . 不仅有超级管理程序 如果您习惯使用. VMware,则一定要考虑基本服务器虚拟化。VMware

第 6 页

• 安全组 - 大多数 OpenStack 版本(包括 Rocky)都会创建一个默认安全组,允许网络流量访问您的实例。例如,

ssh 的端口 22 通常处于启用状态。如果您没有将安全组与实例关联,并且为该组设置网络规则,则实例上的所有

网络端口都将对流入和流出的网络流量关闭,这意味着您将无法与其进行交互。这可能不是很有用。

图 5. 安全组包括一组可应用于任何实例的基本进出规则。

将这些步骤与在 VMware 或 KVM 中创建虚拟机的步骤进行比较。对于那两种产品,您需要提供所需的操作系统 .iso 映像、

设置计算资源、选择网络接口、选择要存储生成的虚拟机的位置,然后启动并配置该操作系统。在 VMware 中,您可以在

群集中选择要在其上运行该新虚拟机的节点。在 KVM 中,您可以选择存储路径。通过预先提供资源,OpenStack 就能抽象

或预加载其中大多数决策,并且每个操作系统映像都已预配置并可直接运行。无需在部署应用程序之前预引导或以其他方式

供应它们。

部署应用程序 您可以像创建典型虚拟机一样创建实例,并启动 SUSE Linux Enterprise Server、openSUSE、CentOS 或任何其他 Linux

操作系统虚拟机。一旦 OpenStack 完成实例生成,该实例就会启动并开始运行,可以作为原始系统访问。根据可用资源,

您可以创建一个或数百个实例。

图 6. 使用 OpenStack 的 Horizon 仪表板创建一个或多个实例,并将其视为虚拟机。

Page 7: 采用 OpenStack 重新传输云实例的 - SUSE Linux...$ sudo pip install python-heatclient . 不仅有超级管理程序 如果您习惯使用. VMware,则一定要考虑基本服务器虚拟化。VMware

第 7 页

但 OpenStack 的优势之一是它能够编写与整个应用程序关联的创建步骤脚本,而不仅仅是运行它的虚拟机。您可以采用

Heat 脚本一次性定义整个堆栈,而不是先启动 CentOS 实例,然后再安装 Apache、MariaDB、PHP 和 WordPress。

部署堆栈 OpenStack 用于演示 Heat 脚本的示例之一是简单部署 WordPress,即网站内容管理系统。让我们来分析一下 Heat 脚本的

底层 YaML,以便您更好地了解堆栈创建的工作方式。

部署 Wordpress

此 OpenStack 示例使用 Fedora 云映像;安装 MariaDB、设置 MySQL 根凭据、创建 “wordpress” 数据库;安装

WordPress 和凭据;启动 httpd.service;以及从默认内部网络分配 IP 地址。只需几分钟,它就能完成上述所有操作

以及更多操作。

您可以将此视为全堆栈自动化。脚本在部署 “服务器” 以及要在其上运行的所有内容。

部署完毕后,您可以通过 http://internal-ip-address/wordpress 启动和配置 Wordpress,或在关联浮动 IP 地址

后从外部网络通过 http://public-ip-address/wordpress/ 访问它。如果要重新开始,您只需重新运行脚本即可。

可从这里获得完整脚本:

http://git.openstack.org/cgit/openstack/heat-templates/plain/hot/F20/WordPress_Native.yaml

下面我们来详细看一下脚本。

在定义名为 “wordpress” 的实例及其所有必备移动部分的 YaML 文件中,有一个资源部分用于定义实例(底层 “服务器”)

以及设置 MariaDB 的命令:

resources:

wordpress_instance:

type: OS::Nova::Server

properties:

image: { get_param: image_id }

flavor: { get_param: instance_type }

key_name: { get_param: key_name }

user_data:

str_replace:

template: |

#!/bin/bash -v

yum -y install mariadb mariadb-server httpd wordpress

touch /var/log/mariadb/mariadb.log

chown mysql.mysql /var/log/mariadb/mariadb.log

systemctl start mariadb.service

# Setup MySQL root password and create a user

mysqladmin -u root password db_rootpassword

cat << EOF | mysql -u root --password=db_rootpassword

CREATE DATABASE db_name;

GRANT ALL PRIVILEGES ON db_name.* TO "db_user"@"localhost"

IDENTIFIED BY "db_password";

FLUSH PRIVILEGES;

EXIT

EOF

Page 8: 采用 OpenStack 重新传输云实例的 - SUSE Linux...$ sudo pip install python-heatclient . 不仅有超级管理程序 如果您习惯使用. VMware,则一定要考虑基本服务器虚拟化。VMware

第 8 页

sed -i "/Deny from All/d" /etc/httpd/conf.d/wordpress.conf

sed -i "s/Require local/Require all granted/" /etc/httpd/conf.d/wordpress.conf

sed -i s/database_name_here/db_name/ /etc/wordpress/wp-config.php

sed -i s/username_here/db_user/ /etc/wordpress/wp-config.php

sed -i s/password_here/db_password/ /etc/wordpress/wp-config.php

systemctl start httpd.service

params:

db_rootpassword: { get_param: db_root_password }

db_name: { get_param: db_name }

db_user: { get_param: db_username }

db_password: { get_param: db_password }

您会注意到 Heat 脚本的这一部分包含许多 yum 命令,其中一些 sed 命令将自定义值置于数据库、WordPress 配置文件和

其他命令中。这些自定义内容可作为参数输入到环境文件中,也可手动输入。

当您使用此 YaML 文件在 Horizon 仪表板中启动新堆栈时,系统将提示您添加参数部分中概述的所有项目,包括

key_name、instance_type、image_id、db_name 以及其他告知 OpenStack 如何构建堆栈的元素。

使用 Horizon 仪表板,您可以通过单击 “项目” -> “编制” -> “堆栈” 下的 “+ 启动堆栈”,将 “模板源” 设置为 “URL”,然后在

WordPress_Native.yaml 文件中输入上述 URL,即可创建此堆栈。暂时跳过环境源文件,选择 “下一步”:

图 7. 使用 Horizon 仪表板启动堆栈,并通过 URL 提供 Heat 脚本。

OpenStack 将下载远程 YaML 文件并预填充 Heat 脚本中引用的参数。添加堆栈名称、您为 Fedora 映像提供的名称

(在上例中为 fedora)以及您的 ssh 密钥对名称。在本示例中,所有数据库用户名和密码都预设为 “admin”。单击 “启动”

进行部署。

Page 9: 采用 OpenStack 重新传输云实例的 - SUSE Linux...$ sudo pip install python-heatclient . 不仅有超级管理程序 如果您习惯使用. VMware,则一定要考虑基本服务器虚拟化。VMware

第 9 页

图 8. 输入各种参数以匹配您的 OpenStack 环境。

如果您希望采用不同的操作系统映像(如 openSUSE 或 Ubuntu)尝试此 Heat 脚本,您需要下载文件副本并对其进行编辑。

例如,Fedora 使用 yum 软件包管理器安装 MariaDB。如果您使用 openSUSE,则需要更新这些部分才能使用 zypper

命令。对于 Ubuntu,您可以将其更改为使用 apt。

除了使用 Horizon 之外,还可以使用命令行构建堆栈。您可以使用相同的脚本并确保已安装 python-heat。您还需要对

openrc 文件运行 source,以便为自己授予运行堆栈创建流程的权限。

您可以直接从 OpenStack 获取唯一的 openrc 文件。单击 Horizon 控制台右上角的用户名:

图 9. 从 OpenStack 仪表板下载唯一的 openrc 文件。

下载后,获取源代码并在出现提示时输入 OpenStack 密码。如果您使用的是管理员帐户,则 openrc 文件将使用您的管理

员凭据:

Page 10: 采用 OpenStack 重新传输云实例的 - SUSE Linux...$ sudo pip install python-heatclient . 不仅有超级管理程序 如果您习惯使用. VMware,则一定要考虑基本服务器虚拟化。VMware

第 10 页

$ source username-openrc.sh

现在,您可以通过为每个参数使用 --parameter 标记来运行 Heat 脚本,为其命名(此处显示为 “teststack”):

$ openstack stack create -t http://git.openstack.org/cgit/openstack/heat-

templates/plain/hot/F20/WordPress_Native.yaml \

--parameter key_name=kingdel \

--parameter image_id=fedora \

--parameter instance_type=m1.small \

teststack

部署后,您可以查看堆栈的各个方面:

图 10. 已部署应用程序实例的详细信息,在此示例中,WordPress 的运行类型为 m1.small。

结论 与任何软件定义基础设施一样,OpenStack 努力提取构建应用程序所需的资源以及它们所驻留的虚拟机。此过程从存储池、

CPU 和 RAM 以及 OpenStack 可自主获取并分配资源和 IP 地址的整个子网开始。因此,云基础设施可提供公共云的敏捷

性、比单独的 VMware 更高的灵活性和自动化性能,以及可为您和您的团队节省时间和金钱的功能。

Page 11: 采用 OpenStack 重新传输云实例的 - SUSE Linux...$ sudo pip install python-heatclient . 不仅有超级管理程序 如果您习惯使用. VMware,则一定要考虑基本服务器虚拟化。VMware

第 11 页

借助 SUSE OpenStack Cloud,您可以构建私有云基础设施,其卓越的运营灵活性、速度、可伸缩性和可控性让您在争取

新业务机会时能够抢占先机,并快速响应技术发展趋势,例如 DevOps 和容器。它以最广泛的行业和开放源代码社区支持

为后盾,因此它非常适合于开发新的创新业务工作负载和 DevOps 环境,以及实现传统数据中心转型。它提供了功能丰富

的私有云,可保证您的投资面向未来,值得信赖。

如需了解更多信息,请访问 https://www.suse.com/products/suse-openstack-cloud/。