在 Google Cloud Platform 上部署 RHEL 8
获取 RHEL 系统镜像并在 GCP 上创建 RHEL 实例
摘要
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 单击顶部导航栏中的 Create。
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 点对话框底部的 Create。
第 1 章 公有云平台上的 RHEL 简介 复制链接链接已复制到粘贴板!
公有云平台提供计算资源即服务。您可以运行您的 IT 工作负载,包括 Red Hat Enterprise Linux (RHEL)系统,作为公共云实例,而不是使用内部硬件。
1.1. 在公有云中使用 RHEL 的好处 复制链接链接已复制到粘贴板!
RHEL 作为公共云平台上的云实例与内部物理系统或虚拟机(VM)的 RHEL 相比有以下优点:
灵活精细的资源分配
RHEL 的云实例作为虚拟机在云平台上运行,这通常意味着由云服务提供商维护远程服务器集群。因此,给实例分配硬件资源(如特定类型的 CPU 或存储)发生在软件层面上,可轻松自定义。
与本地 RHEL 系统相比,您也不会受物理主机功能的限制。相反,您可以根据云提供商提供的选择,从各种功能中进行选择。
空间及成本效率
您不需要拥有任何内部服务器来托管您的云工作负载。这可避免与物理硬件关联的空间、电源和维护要求。
相反,在公有云平台上,您可以直接向云提供商支付使用云实例的费用。成本通常基于分配给实例的硬件以及您使用的时间。因此,您可以根据要求优化成本。
软件控制的配置
云实例的整个配置都作为数据保存在云平台上,并由软件控制。因此,您可以轻松地创建、删除、克隆或迁移实例。云实例也在云提供商控制台中远程操作,默认连接到远程存储。
另外,您可以随时将云实例的当前状态备份为快照。之后,您可以加载快照,将实例恢复到保存的状态。
与主机分离和软件兼容性
与本地虚拟机类似,云实例上的 RHEL 客户机操作系统运行在虚拟化内核上。这个内核与主机操作系统以及用来连接实例的 客户端 系统分开。
因此,任何操作系统都可以安装在云实例上。这意味着,在 RHEL 公有云实例中,您可以运行无法在本地操作系统上使用的特定于 RHEL 的应用程序。
另外,即使实例的操作系统变得不稳定或被破坏,您的客户端系统也不会受到任何影响。
1.2. RHEL 的公有云用例 复制链接链接已复制到粘贴板!
在公有云上部署会带来许多好处,但可能并非是每种场景中最有效的解决方案。如果您要评估是否将 RHEL 部署迁移到公共云,请考虑您的用例是否将从公共云的好处中受益。
有益的用例
部署公有云实例对于灵活地增加和减少部署的活跃计算能力(也称为 扩展 和 缩减)非常有效。因此,在以下情况下,建议在公有云上使用 RHEL:
- 具有高峰值工作负载和一般性能要求的集群。在资源成本方面,根据您的需求扩展和缩减可能非常高效。
- 快速设置或扩展集群。这可避免设置本地服务器的高前期成本。
- 云实例不受本地环境中发生的情况的影响。因此,您可以使用它们进行备份和恢复。
有潜在问题的用例
- 您正在运行一个无法调整的现有环境。与您当前的主机平台相比,自定义云实例以适应现有部署的特定需求可能并不划算。
- 您有预算方面的硬限制。在本地数据中心中维护您的部署通常具有更大的灵活性,但与公有云相比,您对最大资源成本有更多的控制。
后续步骤
1.3. 迁移到公有云时的常见关注 复制链接链接已复制到粘贴板!
将 RHEL 工作负载从本地环境移到公有云平台可能会带来有关涉及的变化的担忧。以下是最常见的问题。
作为云实例,我的 RHEL 是否与本地虚拟机工作不同?
在大部分方面,公有云平台上的 RHEL 实例的工作方式与本地主机上的 RHEL 虚拟机相同,如内部服务器。主要例外包括:
- 公有云实例使用特定于提供商的控制台接口,而不是私有编排接口,来管理云资源。
- 某些功能(如嵌套虚拟化)可能无法正常工作。如果特定功能对部署至关重要,请提前检查该功能与您选择的公有云提供商的兼容性。
与本地服务器相比,我的数据在公有云中是否保持安全?
RHEL 云实例中的数据归您所有,您的公共云提供商对齐没有任何访问权限。此外,主要的云提供商支持传输中的数据加密,这提高了将虚拟机迁移到公共云时数据的安全性。
RHEL 公共云实例的一般安全性如下:
- 您的公有云供应商负责云 hypervisor 的安全性
- 红帽在您的实例中提供 RHEL 客户机操作系统的安全功能
- 您可以在云基础架构中管理特定的安全设置和实践
我的地理区域对 RHEL 公有云实例的功能有何影响?
无论您所在的地理位置如何,您都可以在公有云平台上使用 RHEL 实例。因此,您可以在与内部服务器相同的区域中运行实例。
但是,在物理上较远的区域中托管您的实例可能会在操作它们时造成高延迟。此外,取决于公有云提供商,某些区域可能会提供额外的功能或更具成本效益。在创建 RHEL 实例前,请查看您选择的云提供商提供的托管区域的属性。
1.4. 为公有云部署获取 RHEL 复制链接链接已复制到粘贴板!
要在公有云环境中部署 RHEL 系统,您需要:
根据您的需求和当前市场提供的,为您的使用案例选择最佳云提供商。
当前认证的运行 RHEL 实例的云提供商有:
- Amazon Web Services (AWS)
- Google Cloud Platform (GCP)
- 注意
本文档专门讨论有关在 GCP 上部署 RHEL。
- 在您选择的云平台上创建 RHEL 云实例。如需更多信息,请参阅 创建 RHEL 云实例的方法。
- 要让您的 RHEL 部署保持最新状态,请使用 红帽更新基础设施 (RHUI)。
1.5. 创建 RHEL 云实例的方法 复制链接链接已复制到粘贴板!
要在公有云平台上部署 RHEL 实例,您可以使用以下方法之一:
| 创建 RHEL 的系统镜像,并将其导入到云平台。
|
| 直接从云提供商市场购买 RHEL 实例。
|
有关使用各种方法在 Google Cloud Platform 上部署 RHEL 实例的详细信息,请参阅本文档中的以下章节。
第 2 章 使用 RHEL 镜像构建器将镜像上传到 GCP 复制链接链接已复制到粘贴板!
使用 RHEL 镜像构建器,您可以构建 gce 镜像,为用户或 GCP 服务帐户提供凭证,然后将 gce 镜像直接上传到 GCP 环境。
2.1. 使用 CLI 配置 gce 镜像,并将其上传到 GCP 复制链接链接已复制到粘贴板!
使用凭证建立一个配置文件,以使用 RHEL 镜像构建器 CLI 将 gce 镜像上传到 GCP。
您无法手动将 gce 镜像导入到 GCP,因为镜像不能引导。您必须使用 gcloud 或 RHEL 镜像构建器上传它。
先决条件
您有一个有效的 Google 帐户和凭证,以便将镜像上传到 GCP。凭据可以从用户帐户或服务帐户获取。与凭证关联的帐户必须至少分配以下 IAM 角色:
-
roles/storage.admin- 用于创建和删除存储对象 -
roles/compute.storageAdmin- 将虚拟机镜像导入到 Compute Engine。
-
- 您有一个现有的 GCP 存储桶。
流程
使用文本编辑器创建包含以下内容的
gcp-config.toml配置文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
GCP_BUCKET指向现有的存储桶。它用于存储正在上传的镜像的中间存储对象。 -
GCP_STORAGE_REGION既是一个常规的 Google 存储区域,又是一个双区域或多区域。 -
OBJECT_KEY是中间存储对象的名称。它在上传过程前不能存在,并在上传过程完成后被删除。如果对象名称不以.tar.gz结尾,则扩展会自动添加到对象名称中。 GCP_CREDENTIALS是从 GCP 下载的凭证 JSON 文件的Base64编码方案。凭证决定了 GCP 将镜像上传到的项目。注意如果您使用不同的机制来使用 GCP 进行身份验证,在
gcp-config.toml文件中指定GCP_CREDENTIALS是可选的。有关其他验证方法,请参阅 使用 GCP 进行验证 。
-
从 GCP 下载的 JSON 文件中检索
GCP_CREDENTIALS。sudo base64 -w 0 cee-gcp-nasa-476a1fa485b7.json
$ sudo base64 -w 0 cee-gcp-nasa-476a1fa485b7.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用附加镜像名称和云供应商配置集创建 compose:
sudo composer-cli compose start BLUEPRINT-NAME gce IMAGE_KEY gcp-config.toml
$ sudo composer-cli compose start BLUEPRINT-NAME gce IMAGE_KEY gcp-config.tomlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 镜像构建、上传和云注册过程最多可能需要十分钟才能完成。
验证
验证镜像状态为 FINISHED:
sudo composer-cli compose status
$ sudo composer-cli compose statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. RHEL 镜像构建器如何对不同 GCP 凭证的身份验证顺序进行排序 复制链接链接已复制到粘贴板!
您可以在 RHEL 镜像构建器中使用几种不同类型的凭证来使用 GCP 进行身份验证。如果 RHEL 镜像构建器配置被设置为使用多组凭证使用 GCP 进行身份验证,它会按以下首选顺序使用凭证:
-
在配置文件中,使用
composer-cli命令指定的凭证。 -
凭证在
osbuild-composerworker 配置中被配置。 Google GCP SDK库中的应用程序默认凭证,它尝试使用以下选项自动找到一个身份验证的方法:- 如果设置了 GOOGLE_APPLICATION_CREDENTIALS 环境变量,应用程序默认凭据会尝试加载并从文件中使用由变量指向的凭证。
应用默认凭据尝试使用附加到运行代码的资源的服务帐户进行身份验证。例如,Google Compute Engine 虚拟机。
注意您必须使用 GCP 凭证来决定将镜像上传到的 GCP 项目。因此,除非要将所有镜像上传到同一 GCP 项目,您必须使用
composer-cli命令指定gcp-config.toml配置文件中的凭证。
2.2.1. 使用 composer-cli 命令指定 GCP 凭证 复制链接链接已复制到粘贴板!
您可以在上传目标配置 gcp-config.toml 文件中指定 GCP 验证凭证。使用 Google 帐户凭证 JSON 文件的 Base64 编码方案来节省时间。
流程
运行以下命令,使用存储在
GOOGLE_APPLICATION_CREDENTIALS环境变量中的路径获取 Google 帐户凭证文件的编码内容:base64 -w 0 "${GOOGLE_APPLICATION_CREDENTIALS}"$ base64 -w 0 "${GOOGLE_APPLICATION_CREDENTIALS}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在上传目标配置
gcp-config.toml文件中,设置凭证:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.2. 在 osbuild-composer worker 配置中指定凭证 复制链接链接已复制到粘贴板!
您可以将 GCP 身份验证凭据配置为全局用于 GCP 用于所有镜像构建。这样,如果您想要将镜像导入到同一 GCP 项目,则您可以对上传到 GCP 的所有镜像使用相同的凭据。
流程
在
/etc/osbuild-worker/osbuild-worker.tomlworker 配置中,设置以下凭证值:[gcp] credentials = "PATH_TO_GCP_ACCOUNT_CREDENTIALS"
[gcp] credentials = "PATH_TO_GCP_ACCOUNT_CREDENTIALS"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要在 Google Cloud Platform (GCP)上设置 Red Hat Enterprise Linux 8 (RHEL 8)的部署,您可以在 GCP 上部署 RHEL 8 作为 Google Compute Engine (GCE)实例。
有关 GCP 红帽产品认证列表,请参阅 Google Cloud Platform 上的红帽。
您可以从 ISO 镜像创建自定义的虚拟机,但红帽建议您使用 Red Hat Image Builder 产品来创建自定义的镜像以用于特定的云供应商。如需更多信息,请参阅生成自定义 RHEL 系统镜像。
先决条件
- 您需要一个红帽客户门户网站帐户才能完成本章中的步骤。
- 使用 GCP 创建帐户来访问 Google Cloud Platform 控制台。如需更多信息,请参阅 Google Cloud。
3.1. GCP 上的 Red Hat Enterprise Linux 镜像选项 复制链接链接已复制到粘贴板!
您可以使用多种镜像在 Google Cloud Platform 上部署 RHEL 8。根据您的要求,请考虑哪个选项最适合您的用例。
| 镜像选项 | 订阅 | 示例情境 | 注意事项 |
|---|---|---|---|
| 部署红帽黄金镜像。 | 使用您现有的红帽订阅。 | 在 Google Cloud Platform 上选择红帽黄金镜像。有关黄金镜像以及如何在 Google Cloud Platform 上访问它们的详细信息,请参阅 红帽云访问参考指南。 | 订阅包括红帽产品成本;您需要支付 Google 其他实例的费用。红帽直接为自定义 RHEL 镜像提供支持。 |
| 部署移至 GCP 的自定义镜像。 | 使用您现有的红帽订阅。 | 上传自定义镜像并附加您的订阅。 | 订阅只包括红帽产品的成本;您还需要支付其他成本。红帽直接为自定义 RHEL 镜像提供支持。 |
| 部署一个包含 RHEL 的现有 GCP 镜像。 | GCP 镜像包括一个红帽产品。 | 在 GCP Compute Engine 上启动实例时选择 RHEL 镜像,或者从 Google Cloud Platform Marketplace 中选择镜像。 | 根据 pay-as-you-go 模式每小时向 GCP 支付。这样的镜像称为 "on-demand" 镜像。GCP 通过支持协议支持 on-demand 镜像。 |
您可以使用红帽镜像构建器为 GCP 创建一个自定义镜像。如需更多信息,请参阅生成自定义 RHEL 系统镜像。
您不能将按需实例转换为自定义 RHEL 实例。从按需镜像改为自定义 RHEL 自带订阅 (BYOS)镜像:
- 创建新的自定义 RHEL 实例,并从您的按需实例迁移数据。
- 在迁移数据后取消您的 on-demand 实例以避免出现重复账单。
3.2. 理解基础镜像 复制链接链接已复制到粘贴板!
要从 ISO 镜像创建基础虚拟机,您可以使用预配置的基础镜像及其配置设置。
3.2.1. 使用自定义基础镜像 复制链接链接已复制到粘贴板!
要手动配置虚拟机(VM),首先创建一个基础(起步)虚拟机镜像。然后,您可以修改配置设置,并添加 VM 在云上操作所需的软件包。您可在上传镜像后为特定应用程序进行额外的配置更改。
3.2.2. 虚拟机配置设置 复制链接链接已复制到粘贴板!
云虚拟机必须具有以下配置设置。
| 设置 | 建议 |
|---|---|
| ssh | 必须启用 SSH 来提供虚拟机的远程访问。 |
| dhcp | 应该为 dhcp 配置主虚拟适配器。 |
3.3. 从 ISO 镜像创建基本虚拟机 复制链接链接已复制到粘贴板!
要从 ISO 镜像创建 RHEL 8 基础镜像,请为虚拟化启用您的主机并创建 RHEL 虚拟机。
先决条件
- 虚拟化已在您的主机上启用。
-
您已从红帽客户门户网站下载了最新的 Red Hat Enterprise Linux ISO 镜像,并将该镜像移到
/var/lib/libvirt/images中。
3.3.1. 从 RHEL ISO 镜像创建虚拟机 复制链接链接已复制到粘贴板!
流程
- 确保已为虚拟化启用主机机器。有关信息和流程,请参阅在 RHEL 8 中启用虚拟化。
创建并启动基本 Red Hat Enterprise Linux 虚拟机。有关说明,请参阅 创建虚拟机。
如果使用命令行创建虚拟机,请确保将默认内存和 CPU 设置为您所需的容量。将您的虚拟网络接口设置为 virtio。
例如,以下命令使用
/home/username/Downloads/rhel8.iso镜像创建一个kvmtest虚拟机:virt-install \ --name kvmtest --memory 2048 --vcpus 2 \ --cdrom /home/username/Downloads/rhel8.iso,bus=virtio \ --os-variant=rhel8.0# virt-install \ --name kvmtest --memory 2048 --vcpus 2 \ --cdrom /home/username/Downloads/rhel8.iso,bus=virtio \ --os-variant=rhel8.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用 web 控制台创建虚拟机,请按照 使用 web 控制台创建虚拟机 中的流程操作,并考虑以下事项:
- 不要选择 Immediately Start VM 。
- 将 Memory 大小更改为你希望的设置。
- 在开始安装前,请确保将 Virtual Network Interface Settings 中的 Model 更改为 virtio,并将您的 vCPU 更改为您想要的虚拟机容量设置。
3.3.2. 完成 RHEL 安装 复制链接链接已复制到粘贴板!
要完成要在 Amazon Web Services (AWS)上部署的 RHEL 系统 安装,自定义 安装概述 视图,开始安装,并在虚拟机启动后启用 root 访问。
流程
- 选择您要在安装过程中使用的语言。
在 Installation Summary 视图中:
- 点 Software Selection,选择 Minimal Install。
- 点 Done。
点击 Installation Destination 并检查 Storage Configuration 中的 Custom。
-
验证
/boot至少 500 MB。将剩余空间用于根/。 - 建议使用标准分区,但您可以使用逻辑卷管理器(LVM)。
- 您可以将 xfs、ext4 或者 ext3 用于文件系统。
- 完成更改后点 Done。
-
验证
- 点 Begin Installation。
- 设置 Root 密码。根据情况创建其他用户。
-
重新启动虚拟机,并在安装完成后以
root身份登录。 配置镜像。
注册虚拟机并启用 Red Hat Enterprise Linux 8 软件仓库。
subscription-manager register --auto-attach
# subscription-manager register --auto-attachCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确保已安装并启用了
cloud-init软件包。yum install cloud-init systemctl enable --now cloud-init.service
# yum install cloud-init # systemctl enable --now cloud-init.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 关闭虚拟机。
3.4. 将 RHEL 镜像上传到 GCP 复制链接链接已复制到粘贴板!
要在 Google Cloud Platform (GCP)上运行 RHEL 8 实例,您必须将 RHEL 8 镜像上传到 GCP。
3.4.1. 在 GCP 上创建新项目 复制链接链接已复制到粘贴板!
要将 Red Hat Enterprise Linux 8 镜像上传到 Google Cloud Platform (GCP),您必须首先在 GCP 上创建一个新项目。
先决条件
- 您必须拥有 GCP 帐户。如果没有,请参阅 Google Cloud 了解更多信息。
流程
- 启动 GCP 控制台。
- 点击 Google Cloud Platform 右侧的下拉菜单。
- 在弹出菜单中点击 NEW PROJECT。
- 在 New Project 窗口中输入新项目的名称。
- 检查 Organization。如果需要,点击下拉菜单更改机构。
- 确认您的父机构或文件夹的 位置。如果需要,点 Browse 搜索并更改这个值。
点击 CREATE 创建新 GCP 项目。
注意安装 Google Cloud SDK 后,您可以使用
gcloud projects createCLI 命令来创建项目。例如:gcloud projects create my-gcp-project3 --name project3
# gcloud projects create my-gcp-project3 --name project3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该示例创建了一个 项目 ID 为
my-gcp-project3,项目名称为project3的项目。如需更多信息,请参阅 gcloud 项目创建。
3.4.2. 安装 Google Cloud SDK 复制链接链接已复制到粘贴板!
在 Google Cloud Platform (GCP)上管理 HA 集群的许多流程都需要 Google Cloud SDK 中的工具。
流程
- 按照下载和提取 Google Cloud SDK 归档的 GCP 说明。详情请查看 GCP 文档中的 Linux Quickstart。
按照初始化 Google Cloud SDK 的说明。
注意初始化 Google Cloud SDK 后,您可以使用
gcloudCLI 命令来执行任务,并获取有关项目和实例的信息。例如,您可以使用gcloud compute project-info describe --project <project-name>命令来显示项目信息。
3.4.3. 为 Google Compute Engine 创建 SSH 密钥 复制链接链接已复制到粘贴板!
使用 GCE 生成 SSH 密钥并注册 SSH 密钥,以便您可以使用其公共 IP 地址直接 SSH 到实例中。
流程
使用
ssh-keygen命令来生成用于 GCE 的 SSH 密钥对。ssh-keygen -t rsa -f ~/.ssh/google_compute_engine
# ssh-keygen -t rsa -f ~/.ssh/google_compute_engineCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 GCP Console Dashboard 页面 中,点击 Google Cloud Console banner 左侧的 Navigation 菜单,并选择 Compute Engine,然后选择 Metadata。
- 点 SSH Keys,然后点 Edit。
输入
~/.ssh/google_compute_engine.pub文件中生成的结果,然后单击 Save。现在,您可以使用标准的 SSH 连接到您的实例。
ssh -i ~/.ssh/google_compute_engine <username>@<instance_external_ip>
# ssh -i ~/.ssh/google_compute_engine <username>@<instance_external_ip>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以运行 gcloud compute config-ssh 命令,使用实例的别名来填充配置文件。别名允许按实例名称简单的 SSH 连接。有关 gcloud compute config-ssh 命令的详情,请参考 gcloud compute config-ssh。
3.4.4. 在 GCP Storage 中创建存储桶 复制链接链接已复制到粘贴板!
要将 RHEL 8 镜像导入到 GCP,您必须首先创建一个 GCP Storage Bucket。
流程
如果您还没有登录到 GCP,请使用以下命令登录。
gcloud auth login
# gcloud auth loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建存储桶。
gsutil mb gs://bucket_name
# gsutil mb gs://bucket_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意另外,您可以使用 Google Cloud Console 创建存储桶。如需更多信息,请参阅创建存储桶。
3.4.5. 转换并上传您的镜像到您的 GCP 存储桶 复制链接链接已复制到粘贴板!
在 GCP 中部署本地 RHEL 8 镜像前,您必须首先转换并将镜像上传到您的 GCP Bucket。以下步骤描述了将 qcow2 镜像转换为 raw 格式,然后将镜像上传为 tar 归档。但是,也可以使用不同的格式。
流程
运行
qemu-img命令来转换您的镜像。转换的映像必须具有名称disk.raw。qemu-img convert -f qcow2 -O raw rhel-8.0-sample.qcow2 disk.raw
# qemu-img convert -f qcow2 -O raw rhel-8.0-sample.qcow2 disk.rawCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打包镜像。
tar --format=oldgnu -Sczf disk.raw.tar.gz disk.raw
# tar --format=oldgnu -Sczf disk.raw.tar.gz disk.rawCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将镜像上传到之前创建的存储桶。上传可能需要几分钟时间。
gsutil cp disk.raw.tar.gz gs://bucket_name
# gsutil cp disk.raw.tar.gz gs://bucket_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 Google Cloud Platform 主屏幕中,单击折叠菜单图标,并选择 Storage,然后选择 Browser。
点存储桶的名称。
打包的镜像列在存储桶名称下。
注意您还可以使用 GCP 控制台 上传您的镜像。为此,可单击存储桶的名称,然后单击 Upload files。
3.4.6. 从 GCP 存储桶中创建镜像 复制链接链接已复制到粘贴板!
在从上传到 GCP 存储桶的对象创建 GCE 镜像前,您必须将对象转换为 GCE 镜像。
流程
运行以下命令来为 GCE 创建镜像。指定您要创建的镜像的名称、存储桶名称和打包的镜像的名称。
gcloud compute images create my-image-name --source-uri gs://my-bucket-name/disk.raw.tar.gz
# gcloud compute images create my-image-name --source-uri gs://my-bucket-name/disk.raw.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意另外,您可以使用 Google Cloud Console 创建镜像。如需更多信息,请参阅创建、删除和弃用自定义镜像。
可选:在 GCP 控制台中查找镜像。
- 单击 Google Cloud Console 标语左侧的 Navigation 菜单。
- 选择 Compute Engine,然后选择 Images。
3.4.7. 从镜像创建 Google Compute Engine 实例 复制链接链接已复制到粘贴板!
要从镜像配置 GCE 虚拟机实例,请使用 GCP 控制台。
有关 GCE 虚拟机实例及其配置选项的更多信息,请参阅 创建和启动虚拟机实例。
流程
- 在 GCP Console Dashboard 页面 中,点击 Google Cloud Console banner 左侧的 Navigation 菜单,选择 Compute Engine,然后选择 Images。
- 选择您的镜像。
- 点 Create Instance。
- 在 Create an instance 页面中,为您的实例输入一个 Name。
- 选择一个 Region 和 Zone。
- 选择满足或超过工作负载要求的机器配置。
- 确保引导磁盘指定了您的镜像名称。
- 可选:在 防火墙 下,选择 Allow HTTP traffic 或 Allow HTTPS traffic。
点 Create。
注意这些是创建基本实例所需的最小配置选项。根据您的应用程序要求查看其他选项。
- 在虚拟机实例中查找您的镜像。
在 GCP Console Dashboard 中,点击 Google Cloud Console banner 左侧的 Navigation 菜单,选择 Compute Engine,然后选择 VM instances。
注意或者,您可以使用
gcloud compute instances createCLI 命令来通过镜像创建 GCE 虚拟机实例。下面是一个简单的例子。gcloud compute instances create myinstance3 --zone=us-central1-a --image test-iso2-image
gcloud compute instances create myinstance3 --zone=us-central1-a --image test-iso2-imageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 该示例根据现有的
test-iso2-image映像,在区域us-central1-a中创建名为myinstance3的虚拟机实例。如需更多信息,请参阅 gcloud 计算实例创建。
3.4.8. 连接到您的实例 复制链接链接已复制到粘贴板!
使用其公共 IP 地址连接到 GCE 实例。
流程
确保您的实例正在运行。以下命令列出有关 GCE 实例的信息,包括实例是否正在运行,如果正在运行,则列出正在运行的实例的公共 IP 地址。
gcloud compute instances list
# gcloud compute instances listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用标准 SSH 连接到您的实例。该示例是使用之前创建的
google_compute_engine密钥。ssh -i ~/.ssh/google_compute_engine <user_name>@<instance_external_ip>
# ssh -i ~/.ssh/google_compute_engine <user_name>@<instance_external_ip>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意GCP 提供了多种 SSH 到您的实例的方法。如需更多信息,请参阅连接到实例。您还可以使用之前设置的 root 帐户和密码连接到您的实例。
3.4.9. 附加红帽订阅 复制链接链接已复制到粘贴板!
使用 subscription-manager 命令,您可以注册并附加红帽订阅到 RHEL 实例。
先决条件
- 您必须已启用您的订阅。
流程
注册您的系统。
subscription-manager register --auto-attach
# subscription-manager register --auto-attachCopy to Clipboard Copied! Toggle word wrap Toggle overflow 附加您的订阅。
- 您可以使用激活码来附加订阅。如需更多信息,请参阅创建红帽客户门户网站激活码。
- 或者,您可以使用订阅池的 ID(池 ID)手动附加订阅。请参阅将基于主机的订阅附加到 hypervisor。
可选:要在 Red Hat Hybrid Cloud Console 中收集有关实例的各种系统指标,您可以使用 Red Hat Insights 注册实例。
insights-client register --display-name <display-name-value>
# insights-client register --display-name <display-name-value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关 Red Hat Insights 进一步配置的详情,请参考 Red Hat Insights 的客户端配置指南。
第 4 章 在 Google Cloud Platform 上配置红帽高可用性集群 复制链接链接已复制到粘贴板!
要创建集群,当节点出现故障时,RHEL 节点会自动重新分发其工作负载,请使用 Red Hat High Availability Add-On。此类高可用性(HA)集群也可以托管在公有云平台上,包括 Google Cloud Platform (GCP)。在 GCP 上创建 RHEL HA 集群与在非云环境中创建 HA 集群类似,某些特定信息。
要使用 Google Compute Engine (GCE)虚拟机(VM)实例作为集群节点在 Google Cloud Platform (GCP)上配置 Red Hat HA 集群,请参阅以下部分。
它们提供以下信息:
- 为 GCP 设置环境的先决条件的流程。设置完环境后,您可以创建并配置虚拟机实例。
- 特定于创建 HA 集群的流程,其将单个节点转换为 GCP 上的 HA 节点的集群。这包括在每个集群节点上安装高可用性软件包和代理、配置隔离以及安装网络资源代理的步骤。
先决条件
- Red Hat Enterprise Linux 8 Server: rhel-8-server-rpms/8Server/x86_64
Red Hat Enterprise Linux 8 Server (High Availability): rhel-8-server-ha-rpms/8Server/x86_64
- 您必须属于活跃的 GCP 项目,并有足够的权限在项目中创建资源。
- 您的项目应具有属于虚拟机实例而非单独的用户的服务帐户。有关使用默认服务帐户而不是创建单独服务帐户的信息,请参阅使用 Compute Engine 默认服务帐户。
如果您或项目管理员创建自定义服务帐户,则应该为以下角色配置服务帐户。
- Cloud Trace Agent
- Compute Admin
- Compute Network Admin
- Cloud Datastore User
- Logging Admin
- Monitoring Editor
- Monitoring Metric Writer
- Service Account Administrator
- Storage Admin
4.1. 在公有云平台上使用高可用性集群的好处 复制链接链接已复制到粘贴板!
高可用性(HA)集群是一组连接在一起运行特定工作负载的计算机(称为 节点)。HA 集群的目的是提供冗余,以防硬件或软件故障。如果 HA 集群中的节点失败,Pacemaker 集群资源管理器会将工作负载分发到其他节点,且集群上运行的服务不会出现明显的停机时间。
您还可以在公有云平台上运行 HA 集群。在这种情况下,您将云中的虚拟机(VM)实例用作单独的集群节点。在公有云平台上使用 HA 集群有以下优点:
- 改进了可用性:如果出现虚拟机故障,工作负载会被快速地重新分发到其他节点,因此运行的服务不会中断。
- 可扩展性:在需求高时可以启动其他节点,在需求低时可以停止节点。
- 节约成本:采用现收现付定价,您只需为正在运行的节点支付费用。
- 简化的管理:有些公有云平台提供管理界面,以便更轻松地配置 HA 集群。
要在 Red Hat Enterprise Linux (RHEL)系统上启用 HA,红帽提供了一个高可用性附加组件。高可用性附加组件提供了在 RHEL 系统上创建 HA 集群的所有必要组件。这些组件包括高可用性服务管理和集群管理工具。
4.2. 所需的系统软件包 复制链接链接已复制到粘贴板!
要创建并配置 RHEL 的基础镜像,主机系统必须安装了以下软件包。
| 软件包 | 软件仓库 | 描述 |
|---|---|---|
| libvirt | rhel-8-for-x86_64-appstream-rpms | 用于管理平台虚拟化的开源 API、守护进程和管理工具 |
| virt-install | rhel-8-for-x86_64-appstream-rpms | 用于构建虚拟机的命令行工具 |
| libguestfs | rhel-8-for-x86_64-appstream-rpms | 用于访问和修改虚拟机文件系统的库 |
| libguestfs-tools | rhel-8-for-x86_64-appstream-rpms |
虚拟机的系统管理工具;包括 |
4.3. GCP 上的 Red Hat Enterprise Linux 镜像选项 复制链接链接已复制到粘贴板!
您可以使用多种镜像在 Google Cloud Platform 上部署 RHEL 8。根据您的要求,请考虑哪个选项最适合您的用例。
| 镜像选项 | 订阅 | 示例情境 | 注意事项 |
|---|---|---|---|
| 部署红帽黄金镜像。 | 使用您现有的红帽订阅。 | 在 Google Cloud Platform 上选择红帽黄金镜像。有关黄金镜像以及如何在 Google Cloud Platform 上访问它们的详细信息,请参阅 红帽云访问参考指南。 | 订阅包括红帽产品成本;您需要支付 Google 其他实例的费用。红帽直接为自定义 RHEL 镜像提供支持。 |
| 部署移至 GCP 的自定义镜像。 | 使用您现有的红帽订阅。 | 上传自定义镜像并附加您的订阅。 | 订阅只包括红帽产品的成本;您还需要支付其他成本。红帽直接为自定义 RHEL 镜像提供支持。 |
| 部署一个包含 RHEL 的现有 GCP 镜像。 | GCP 镜像包括一个红帽产品。 | 在 GCP Compute Engine 上启动实例时选择 RHEL 镜像,或者从 Google Cloud Platform Marketplace 中选择镜像。 | 根据 pay-as-you-go 模式每小时向 GCP 支付。这样的镜像称为 "on-demand" 镜像。GCP 通过支持协议支持 on-demand 镜像。 |
您可以使用红帽镜像构建器为 GCP 创建一个自定义镜像。如需更多信息,请参阅生成自定义 RHEL 系统镜像。
您不能将按需实例转换为自定义 RHEL 实例。从按需镜像改为自定义 RHEL 自带订阅 (BYOS)镜像:
- 创建新的自定义 RHEL 实例,并从您的按需实例迁移数据。
- 在迁移数据后取消您的 on-demand 实例以避免出现重复账单。
4.4. 安装 Google Cloud SDK 复制链接链接已复制到粘贴板!
在 Google Cloud Platform (GCP)上管理 HA 集群的许多流程都需要 Google Cloud SDK 中的工具。
流程
- 按照下载和提取 Google Cloud SDK 归档的 GCP 说明。详情请查看 GCP 文档中的 Linux Quickstart。
按照初始化 Google Cloud SDK 的说明。
注意初始化 Google Cloud SDK 后,您可以使用
gcloudCLI 命令来执行任务,并获取有关项目和实例的信息。例如,您可以使用gcloud compute project-info describe --project <project-name>命令来显示项目信息。
4.5. 创建 GCP 镜像存储桶 复制链接链接已复制到粘贴板!
以下文档包含在默认位置创建 multi-regional 存储桶的最低要求。
先决条件
- GCP 存储工具(gsutil)
流程
如果您还没有登录到 Google Cloud Platform,请使用以下命令登录。
gcloud auth login
# gcloud auth loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建存储桶。
gsutil mb gs://BucketName
$ gsutil mb gs://BucketNameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
gsutil mb gs://rhel-ha-bucket
$ gsutil mb gs://rhel-ha-bucketCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6. 创建自定义虚拟私有云网络和子网 复制链接链接已复制到粘贴板!
要使用高可用性(HA)功能配置集群,需要自定义虚拟私有云(VPC)网络和子网。
流程
- 启动 GCP 控制台。
- 在左侧导航窗格中,选择 Networking 下的 VPC networks。
- 点 Create VPC Network。
- 输入 VPC 网络的名称。
- 在 New subnet 下,在您要创建集群的区域中创建 Custom subnet。
- 点 Create。
4.7. 准备并导入基本 GCP 镜像 复制链接链接已复制到粘贴板!
在 GCP 中部署本地 RHEL 8 镜像前,您必须首先转换并将镜像上传到您的 GCP Bucket。
流程
转换文件。上传到 GCP 的镜像必须是
raw格式,并命名为disk.raw。qemu-img convert -f qcow2 ImageName.qcow2 -O raw disk.raw
$ qemu-img convert -f qcow2 ImageName.qcow2 -O raw disk.rawCopy to Clipboard Copied! Toggle word wrap Toggle overflow 压缩
raw文件。上传到 GCP 的镜像必须被压缩。tar -Sczf ImageName.tar.gz disk.raw
$ tar -Sczf ImageName.tar.gz disk.rawCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将压缩镜像导入到之前创建的存储桶。
gsutil cp ImageName.tar.gz gs://BucketName
$ gsutil cp ImageName.tar.gz gs://BucketNameCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8. 创建并配置基本 GCP 实例 复制链接链接已复制到粘贴板!
要创建并配置符合 GCP 操作和安全要求的 GCP 实例,请完成以下步骤。
流程
从存储桶中压缩的文件创建镜像。
gcloud compute images create BaseImageName --source-uri gs://BucketName/BaseImageName.tar.gz
$ gcloud compute images create BaseImageName --source-uri gs://BucketName/BaseImageName.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
[admin@localhost ~] $ gcloud compute images create rhel-76-server --source-uri gs://user-rhelha/rhel-server-76.tar.gz Created [https://www.googleapis.com/compute/v1/projects/MyProject/global/images/rhel-server-76]. NAME PROJECT FAMILY DEPRECATED STATUS rhel-76-server rhel-ha-testing-on-gcp READY
[admin@localhost ~] $ gcloud compute images create rhel-76-server --source-uri gs://user-rhelha/rhel-server-76.tar.gz Created [https://www.googleapis.com/compute/v1/projects/MyProject/global/images/rhel-server-76]. NAME PROJECT FAMILY DEPRECATED STATUS rhel-76-server rhel-ha-testing-on-gcp READYCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从镜像创建模板实例。基本 RHEL 实例所需的最小值为 n1-standard-2。如需了解更多配置选项,请参阅 gcloud 计算实例创建。
gcloud compute instances create BaseInstanceName --can-ip-forward --machine-type n1-standard-2 --image BaseImageName --service-account ServiceAccountEmail
$ gcloud compute instances create BaseInstanceName --can-ip-forward --machine-type n1-standard-2 --image BaseImageName --service-account ServiceAccountEmailCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
[admin@localhost ~] $ gcloud compute instances create rhel-76-server-base-instance --can-ip-forward --machine-type n1-standard-2 --image rhel-76-server --service-account account@project-name-on-gcp.iam.gserviceaccount.com Created [https://www.googleapis.com/compute/v1/projects/rhel-ha-testing-on-gcp/zones/us-east1-b/instances/rhel-76-server-base-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS rhel-76-server-base-instance us-east1-bn1-standard-2 10.10.10.3 192.227.54.211 RUNNING
[admin@localhost ~] $ gcloud compute instances create rhel-76-server-base-instance --can-ip-forward --machine-type n1-standard-2 --image rhel-76-server --service-account account@project-name-on-gcp.iam.gserviceaccount.com Created [https://www.googleapis.com/compute/v1/projects/rhel-ha-testing-on-gcp/zones/us-east1-b/instances/rhel-76-server-base-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS rhel-76-server-base-instance us-east1-bn1-standard-2 10.10.10.3 192.227.54.211 RUNNINGCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过 SSH 终端会话连接到实例。
ssh root@PublicIPaddress
$ ssh root@PublicIPaddressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 RHEL 软件。
- 使用红帽订阅管理器(RHSM)注册。
-
启用订阅池 ID(或使用
--auto-attach命令)。 禁用所有软件仓库。
subscription-manager repos --disable=*
# subscription-manager repos --disable=*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用以下软件仓库。
subscription-manager repos --enable=rhel-8-server-rpms
# subscription-manager repos --enable=rhel-8-server-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
yum update命令。yum update -y
# yum update -yCopy to Clipboard Copied! Toggle word wrap Toggle overflow
在运行的实例(原位安装)中安装 GCP Linux 客户机环境。
具体步骤请参阅原位安装客户机环境。
- 选择 CentOS/RHEL 选项。
- 复制命令脚本,并将它粘贴到命令提示符处,来立即运行脚本。
对实例进行以下配置更改。这些更改基于自定义镜像的 GCP 建议。如需更多信息,请参阅 gcloudcompute 镜像列表。
-
编辑
/etc/chrony.conf文件,并删除所有 NTP 服务器。 添加以下 NTP 服务器。
metadata.google.internal iburst Google NTP server
metadata.google.internal iburst Google NTP serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除任何持久的网络设备规则。
rm -f /etc/udev/rules.d/70-persistent-net.rules rm -f /etc/udev/rules.d/75-persistent-net-generator.rules
# rm -f /etc/udev/rules.d/70-persistent-net.rules # rm -f /etc/udev/rules.d/75-persistent-net-generator.rulesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将网络服务设置为自动启动。
chkconfig network on
# chkconfig network onCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
sshd 服务设置为自动启动。systemctl enable sshd systemctl is-enabled sshd
# systemctl enable sshd # systemctl is-enabled sshdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将时区设为 UTC。
ln -sf /usr/share/zoneinfo/UTC /etc/localtime
# ln -sf /usr/share/zoneinfo/UTC /etc/localtimeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:编辑
/etc/ssh/ssh_config文件,并在文件的末尾添加以下行。这将在较长的不活跃时间段内使您的 SSH 会话保持活跃。# Server times out connections after several minutes of inactivity. # Keep alive ssh connections by sending a packet every 7 minutes. ServerAliveInterval 420
# Server times out connections after several minutes of inactivity. # Keep alive ssh connections by sending a packet every 7 minutes. ServerAliveInterval 420Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/etc/ssh/sshd_config文件,并根据需要进行以下更改:ClientAliveInterval 420 设置是可选的;这会使 SSH 会话在长时间处于非活动状态期间保持活跃状态。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
编辑
禁用密码访问。
ssh_pwauth from 1 to 0. ssh_pwauth: 0
ssh_pwauth from 1 to 0. ssh_pwauth: 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要在以前的版本中,您可以启用密码访问来允许 SSH 会话访问来配置实例。您必须禁用密码访问。所有 SSH 会话访问都必须是无密码的。
从订阅管理器取消实例注册。
subscription-manager unregister
# subscription-manager unregisterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 清除 shell 历史记录。为下一个流程保留实例运行。
export HISTSIZE=0
# export HISTSIZE=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.9. 创建快照镜像 复制链接链接已复制到粘贴板!
要保留 GCP HA 实例的配置和磁盘数据,请创建一个快照。
流程
在正在运行的实例上,将数据同步到磁盘。
sync
# syncCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在您的主机系统上创建快照。
gcloud compute disks snapshot InstanceName --snapshot-names SnapshotName
$ gcloud compute disks snapshot InstanceName --snapshot-names SnapshotNameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在您的主机系统上,从快照创建配置的镜像。
gcloud compute images create ConfiguredImageFromSnapshot --source-snapshot SnapshotName
$ gcloud compute images create ConfiguredImageFromSnapshot --source-snapshot SnapshotNameCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.10. 创建 HA 节点模板实例和 HA 节点 复制链接链接已复制到粘贴板!
从快照配置了镜像后,您可以创建节点模板。然后,您可以使用此模板创建所有 HA 节点。
流程
创建实例模板。
gcloud compute instance-templates create InstanceTemplateName --can-ip-forward --machine-type n1-standard-2 --image ConfiguredImageFromSnapshot --service-account ServiceAccountEmailAddress
$ gcloud compute instance-templates create InstanceTemplateName --can-ip-forward --machine-type n1-standard-2 --image ConfiguredImageFromSnapshot --service-account ServiceAccountEmailAddressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
[admin@localhost ~] $ gcloud compute instance-templates create rhel-81-instance-template --can-ip-forward --machine-type n1-standard-2 --image rhel-81-gcp-image --service-account account@project-name-on-gcp.iam.gserviceaccount.com Created [https://www.googleapis.com/compute/v1/projects/project-name-on-gcp/global/instanceTemplates/rhel-81-instance-template]. NAME MACHINE_TYPE PREEMPTIBLE CREATION_TIMESTAMP rhel-81-instance-template n1-standard-2 2018-07-25T11:09:30.506-07:00
[admin@localhost ~] $ gcloud compute instance-templates create rhel-81-instance-template --can-ip-forward --machine-type n1-standard-2 --image rhel-81-gcp-image --service-account account@project-name-on-gcp.iam.gserviceaccount.com Created [https://www.googleapis.com/compute/v1/projects/project-name-on-gcp/global/instanceTemplates/rhel-81-instance-template]. NAME MACHINE_TYPE PREEMPTIBLE CREATION_TIMESTAMP rhel-81-instance-template n1-standard-2 2018-07-25T11:09:30.506-07:00Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在一个区域中创建多个节点。
gcloud compute instances create NodeName01 NodeName02 --source-instance-template InstanceTemplateName --zone RegionZone --network=NetworkName --subnet=SubnetName
# gcloud compute instances create NodeName01 NodeName02 --source-instance-template InstanceTemplateName --zone RegionZone --network=NetworkName --subnet=SubnetNameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.11. 安装 HA 软件包和代理 复制链接链接已复制到粘贴板!
在每个节点上,您需要安装高可用性软件包和代理,以便在 Google Cloud Platform (GCP)上配置红帽高可用性集群。
流程
- 在 Google Cloud Console 中,选择 Compute Engine,然后选择 VM instances。
- 选择实例,单击 SSH 旁边的箭头,然后选择 View gcloud 命令选项。
- 在命令提示符下粘贴此命令,以进行免密码访问实例。
- 启用 sudo 帐户访问,并通过 Red Hat Subscription Manager 注册。
-
启用订阅池 ID(或使用
--auto-attach命令)。 禁用所有软件仓库。
subscription-manager repos --disable=*
# subscription-manager repos --disable=*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用以下软件仓库。
subscription-manager repos --enable=rhel-8-server-rpms subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpms
# subscription-manager repos --enable=rhel-8-server-rpms # subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
pcs pacemaker、隔离代理和资源代理。yum install -y pcs pacemaker fence-agents-gce resource-agents-gcp
# yum install -y pcs pacemaker fence-agents-gce resource-agents-gcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新所有软件包。
yum update -y
# yum update -yCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.12. 配置 HA 服务 复制链接链接已复制到粘贴板!
在每个节点上,配置 HA 服务。
流程
在上一步中的
pcs和pacemaker安装过程中,创建了用户hacluster。在所有群集节点上为用户hacluster创建密码。所有节点都使用相同的密码。passwd hacluster
# passwd haclusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果安装了
firewalld服务,请添加 HA 服务。firewall-cmd --permanent --add-service=high-availability firewall-cmd --reload
# firewall-cmd --permanent --add-service=high-availability # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
pcs服务,并使其在引导时启动。systemctl start pcsd.service systemctl enable pcsd.service Created symlink from /etc/systemd/system/multi-user.target.wants/pcsd.service to /usr/lib/systemd/system/pcsd.service.
# systemctl start pcsd.service # systemctl enable pcsd.service Created symlink from /etc/systemd/system/multi-user.target.wants/pcsd.service to /usr/lib/systemd/system/pcsd.service.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
确保
pcsd服务正在运行。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
编辑
/etc/hosts文件。为所有节点添加 RHEL 主机名和内部 IP 地址。
4.13. 创建集群 复制链接链接已复制到粘贴板!
要将多个节点转换为集群,请使用以下步骤。
流程
在其中一个节点上,验证
pcs用户。在该命令中指定集群中每个节点的名称。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建集群。
pcs cluster setup cluster-name hostname1 hostname2 hostname3
# pcs cluster setup cluster-name hostname1 hostname2 hostname3Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,以便在启动时自动加入集群。
pcs cluster enable --all
# pcs cluster enable --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动集群。
pcs cluster start --all
# pcs cluster start --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.14. 创建隔离设备 复制链接链接已复制到粘贴板!
高可用性(HA)环境需要一个隔离设备,这样可确保故障的节点被隔离,并在停机时集群仍然可用。
请注意,对于大多数默认配置,GCP 实例名称和 RHEL 主机名是一样的。
流程
获取 GCP 实例名称。请注意,以下命令的输出还显示实例的内部 ID。
fence_gce --zone us-west1-b --project=rhel-ha-on-gcp -o list
# fence_gce --zone us-west1-b --project=rhel-ha-on-gcp -o listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
fence_gce --zone us-west1-b --project=rhel-ha-testing-on-gcp -o list 4435801234567893181,InstanceName-3 4081901234567896811,InstanceName-1 7173601234567893341,InstanceName-2
[root@rhel81-node-01 ~]# fence_gce --zone us-west1-b --project=rhel-ha-testing-on-gcp -o list 4435801234567893181,InstanceName-3 4081901234567896811,InstanceName-1 7173601234567893341,InstanceName-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建隔离设备。
pcs stonith create FenceDeviceName fence_gce zone=Region-Zone project=MyProject
# pcs stonith create FenceDeviceName fence_gce zone=Region-Zone project=MyProjectCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 要确保即时和完全的隔离,请在所有群集节点上禁用 ACPI Soft-Off。有关禁用 ACPI Soft-Off 的详情,请参考 禁用 ACPI 以用于集成的隔离设备。
验证
验证隔离设备是否已启动。
pcs status
# pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.15. 配置 GCP 节点授权 复制链接链接已复制到粘贴板!
配置 cloud SDK 工具,使用您的帐户凭证访问 GCP。
流程
在每个节点上输入以下命令,使用项目 ID 和帐户凭证初始化每个节点。
gcloud-ra init
# gcloud-ra init
4.16. 配置 gcp-vcp-move-vip 资源代理 复制链接链接已复制到粘贴板!
gcp-vpc-move-vip 资源代理将辅助 IP 地址(别名 IP)附加到正在运行的实例。这是一个浮动 IP 地址,可在集群中的不同节点间传递。
要显示有关此资源的更多信息:
pcs resource describe gcp-vpc-move-vip
# pcs resource describe gcp-vpc-move-vip
您可以将资源代理配置为使用主子网地址范围或二级子网地址范围:
主子网地址范围
完成以下步骤,为主 VPC 子网配置资源。
流程
创建
aliasip资源。包括一个未使用的内部 IP 地址。在命令中包含 CIDR 块。pcs resource create aliasip gcp-vpc-move-vip alias_ip=UnusedIPaddress/CIDRblock
# pcs resource create aliasip gcp-vpc-move-vip alias_ip=UnusedIPaddress/CIDRblockCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs resource create aliasip gcp-vpc-move-vip alias_ip=10.10.10.200/32
[root@rhel81-node-01 ~]# pcs resource create aliasip gcp-vpc-move-vip alias_ip=10.10.10.200/32Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于管理节点上 IP 的
IPaddr2资源。pcs resource create vip IPaddr2 nic=interface ip=AliasIPaddress cidr_netmask=32
# pcs resource create vip IPaddr2 nic=interface ip=AliasIPaddress cidr_netmask=32Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs resource create vip IPaddr2 nic=eth0 ip=10.10.10.200 cidr_netmask=32
[root@rhel81-node-01 ~]# pcs resource create vip IPaddr2 nic=eth0 ip=10.10.10.200 cidr_netmask=32Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将网络资源分组到
vipgrp下。pcs resource group add vipgrp aliasip vip
# pcs resource group add vipgrp aliasip vipCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证资源是否已启动,是否分组在
vipgrp下。pcs status
# pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证资源是否可以移到另一个节点。
pcs resource move vip Node
# pcs resource move vip NodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs resource move vip rhel81-node-03
[root@rhel81-node-01 ~]# pcs resource move vip rhel81-node-03Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
vip是否在不同的节点上成功启动。pcs status
# pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow
二级子网地址范围
完成以下步骤,为二级子网地址范围配置资源。
先决条件
流程
创建二级子网地址范围。
gcloud-ra compute networks subnets update SubnetName --region RegionName --add-secondary-ranges SecondarySubnetName=SecondarySubnetRange
# gcloud-ra compute networks subnets update SubnetName --region RegionName --add-secondary-ranges SecondarySubnetName=SecondarySubnetRangeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
gcloud-ra compute networks subnets update range0 --region us-west1 --add-secondary-ranges range1=10.10.20.0/24
# gcloud-ra compute networks subnets update range0 --region us-west1 --add-secondary-ranges range1=10.10.20.0/24Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
aliasip资源。在二级子网地址范围内创建一个未使用的内部 IP 地址。在命令中包含 CIDR 块。pcs resource create aliasip gcp-vpc-move-vip alias_ip=UnusedIPaddress/CIDRblock
# pcs resource create aliasip gcp-vpc-move-vip alias_ip=UnusedIPaddress/CIDRblockCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs resource create aliasip gcp-vpc-move-vip alias_ip=10.10.20.200/32
[root@rhel81-node-01 ~]# pcs resource create aliasip gcp-vpc-move-vip alias_ip=10.10.20.200/32Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于管理节点上 IP 的
IPaddr2资源。pcs resource create vip IPaddr2 nic=interface ip=AliasIPaddress cidr_netmask=32
# pcs resource create vip IPaddr2 nic=interface ip=AliasIPaddress cidr_netmask=32Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs resource create vip IPaddr2 nic=eth0 ip=10.10.20.200 cidr_netmask=32
[root@rhel81-node-01 ~]# pcs resource create vip IPaddr2 nic=eth0 ip=10.10.20.200 cidr_netmask=32Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将网络资源分组到
vipgrp下。pcs resource group add vipgrp aliasip vip
# pcs resource group add vipgrp aliasip vipCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证资源是否已启动,是否分组在
vipgrp下。pcs status
# pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证资源是否可以移到另一个节点。
pcs resource move vip Node
# pcs resource move vip NodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs resource move vip rhel81-node-03
[root@rhel81-node-01 ~]# pcs resource move vip rhel81-node-03Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
vip是否在不同的节点上成功启动。pcs status
# pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow