在公共云平台上部署 Red Hat Enterprise Linux 7
创建自定义 Red Hat Enterprise Linux 镜像并为公共云平台配置红帽高可用性集群
摘要
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对文档提供反馈信息。请让我们了解如何改进文档。要做到这一点:
关于特定内容的简单评论:
- 请确定您使用 Multi-page HTML 格式查看文档。另外,确定 Feedback 按钮出现在文档页的右上方。
- 用鼠标指针高亮显示您想评论的文本部分。
- 点在高亮文本上弹出的 Add Feedback。
- 按照显示的步骤操作。
要提交更复杂的反馈,请创建一个 Bugzilla ticket:
- 进入 Bugzilla 网站。
- 在 Component 中选择 Documentation。
- 在 Description 中输入您要提供的信息。包括文档相关部分的链接。
- 点 Submit Bug。
您有多个选项可在 Azure 上部署 Red Hat Enterprise Linux(RHEL)7 镜像。本章讨论选择镜像的选项,以及列出或引用主机系统和虚拟机(VM)的系统要求。本章还提供了从 ISO 镜像创建自定义虚拟机、将其上传到 Azure 以及启动 Azure 虚拟机实例的步骤。
您可以从 ISO 镜像创建自定义虚拟机,但红帽建议您使用 Red Hat Image Builder 产品来创建自定义镜像,供特定云供应商使用。如需更多信息,请参阅镜像构建器指南。
本章在很多位置使用了 Azure 文档。如需了解更多详细信息,请参阅相关的 Azure 文档。
有关您可以在 Azure 上安全使用的红帽产品列表,请参阅 Microsoft Azure 上的红帽产品。
先决条件
- 注册一个红帽客户门户网站(Red Hat Customer Portal) 帐户。
- 注册一个 Microsoft Azure 帐户。
- 在 Red Hat Cloud Access 项目中启用您的订阅。Red Hat Cloud Access 程序允许您在红帽完全支持的情况下将您的红帽订阅从物理系统或内部系统移到 Azure。
1.1. Azure 上的 Red Hat Enterprise Linux 镜像选项 复制链接链接已复制到粘贴板!
下表列出了镜像的不同选择并记录镜像选项的不同。
镜像选项 | 订阅 | 示例情境 | 注意事项 |
---|---|---|---|
选择部署一个 Red Hat Gold Image。 | 利用您现有的红帽订阅。 | 通过 Red Hat Cloud Access 程序 启用订阅,然后在 Azure 上选择 Red Hat Gold Image。如需了解有关 Gold Images 以及如何在 Azure 上访问它们的详细信息,请参阅 Red Hat Cloud Access 指南。 | 订阅包括了红帽产品的成本;您需要向 Microsoft 支付其他费用。 Red Hat Gold Images 被称为 "Cloud Access" 镜像,因为您使用现有的红帽订阅。红帽直接为 Cloud Access 镜像提供支持。 |
选择部署一个要移至 Azure 的自定义镜像。 | 利用您现有的红帽订阅。 | 通过 Red Hat Cloud Access 程序 启用订阅,上传您的自定义镜像并附加您的订阅。 | 订阅包括了红帽产品的成本;您需要向 Microsoft 支付其他费用。 移动到 Azure 的自定义镜像是 "Cloud Access" 镜像,因为您利用了您现有的红帽订阅。红帽直接为 Cloud Access 镜像提供支持。 |
选择部署一个包含 RHEL 的现有 Azure 镜像。 | Azure 镜像包括一个红帽产品。 | 使用 Azure 控制台创建虚拟机时选择 RHEL 镜像,或者从 Azure Marketplace 中选择虚拟机。 | 根据 pay-as-you-go 模式每小时向微软支付。这样的镜像名为 "on-demand"。 Azure 通过支持协议提供对 on-demand 镜像的支持。 红帽提供了镜像的更新。Azure 通过 Red Hat Update Infrastructure(RHUI)提供更新。 |
您可以使用 Red Hat Image Builder 为 Azure 创建自定义镜像。如需更多信息,请参阅镜像构建器指南。
本章的以下部分包括了与 Red Hat Enterprise Linux 自定义镜像相关的信息和流程。
1.2. 理解基础镜像 复制链接链接已复制到粘贴板!
本节介绍使用预配置的基础镜像及其配置设置的信息。
1.2.1. 使用自定义基础镜像 复制链接链接已复制到粘贴板!
要手动配置虚拟机,请以基础(启动程序)虚拟机镜像开始。创建基本虚拟机镜像后,您可以修改配置设置并添加虚拟机在云中操作的软件包。您可在上传镜像后为特定应用程序进行额外的配置更改。
要准备 RHEL 的 Hyper-V 云镜像,请参阅从 Hyper-V 管理器准备 RHEL 7 虚拟机。
1.2.2. 所需的系统软件包 复制链接链接已复制到粘贴板!
本章的步骤假设您使用运行 Red Hat Enterprise Linux 的主机系统。要成功完成这些操作,主机系统必须安装以下软件包。
软件包 | 描述 | 命令 |
---|---|---|
qemu-kvm | 这个软件包提供用户级别的 KVM 模拟器,并可方便主机和客户机虚拟机间的通信。 |
|
qemu-img | 这个软件包为客户机虚拟机提供磁盘管理。qemu-img 软件包作为 qemu-kvm 软件包的依赖项安装。 | |
libvirt | 这个软件包为服务器和主机端提供与虚拟机监控程序、主机系统和主机系统以及处理库调用、管理虚拟机和控制虚拟机监控程序的 libvirtd 守护进程交互的服务器和主机库。 |
软件包 | 描述 | 命令 |
---|---|---|
virt-install |
这个软件包提供从命令行创建虚拟机的 |
|
libvirt-python | 这个软件包包含一个模块,它允许使用 Python 编程语言编写的应用程序使用 libvirt API 提供的接口。 | |
virt-manager | 这个软件包提供 virt-manager 工具,也称 Virtual Machine Manager(VMM)。VMM 是一个图形化工具用于管理虚拟机。它使用 libvirt-client 库作为管理 API。 | |
libvirt-client |
这个软件包为访问 libvirt 服务器提供客户端 API 和库。libvirt-client 软件包包含 |
其它资源
1.2.3. Azure VM 配置设置 复制链接链接已复制到粘贴板!
Azure 虚拟机必须具有以下配置设置。其中一些设置会在初始创建虚拟机期间启用。为 Azure 置备虚拟机镜像时会设置其他设置。在您进行操作时请注意这些设置 ; 如果您遇到任何错误,请参考它们。
设置 | 建议 |
---|---|
ssh |
|
dhcp | 应该为 dhcp 配置主虚拟适配器(仅限 IPv4)。 |
swap 空间 | 不要创建一个专用的交换文件或者交换分区。您可以使用 Windows Azure Linux Agent(WALinuxAgent)配置 swap 空间。 |
NIC | 为主虚拟网络适配器选择 virtio。 |
encryption | 对于自定义镜像,运行 RHEL 7.5 及更新的版本,请使用 Network Bound Disk Encryption(NBDE)在 Azure 上进行完整磁盘加密。只有 RHEL 7.5 及更新的版本支持 NBDE。 |
1.2.4. 从 ISO 镜像创建基础镜像 复制链接链接已复制到粘贴板!
以下流程列出了创建自定义 ISO 镜像的步骤和初始配置要求。配置了镜像后,您可以使用镜像作为模板来创建额外的虚拟机实例。
流程
- 从红帽客户门户网站下载最新的 Red Hat Enterprise Linux 7 Binary DVD ISO 镜像。
- 确保已为虚拟化启用主机机器。有关相关信息和步骤,请参阅虚拟化入门指南。
创建并启动基本 Red Hat Enterprise Linux 虚拟机。具体步骤请查看使用虚拟化命令行界面入门。
如果使用命令行创建虚拟机,请确保将默认内存和 CPU 设置为您所需的容量。将您的虚拟网络接口设置为 virtio。
下面是一个基本的命令行示例。
virt-install --name isotest --memory 2048 --vcpus 2 --disk size=8,bus=virtio --location rhel-7.0-x86_64-dvd.iso --os-variant=rhel7.0
virt-install --name isotest --memory 2048 --vcpus 2 --disk size=8,bus=virtio --location rhel-7.0-x86_64-dvd.iso --os-variant=rhel7.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用 VMM 应用程序创建虚拟机,请按照 虚拟机管理器入门 中的步骤进行操作:
- 不要选择 Immediately Start VM。
- 将 Memory 和 Storage Size 设置为您需要的值。
- 在开始安装前,请确保将 Virtual Network Interface Settings 中的 Model 更改为 virtio,并将您的 vCPU 更改为您想要的虚拟机容量设置。
查看以下额外的安装选择和修改。
- 选择带有 standard RHEL 选项的 Minimal Install。
对于 Installation Destination,选择 Custom Storage Configuration。使用以下配置信息进行选择。
- 确保 /boot 验证至少 500 MB。
- 对于文件系统,boot 和 root 分区都要使用 xfs、ext4 或 ext3。
- 删除 swap 空间。swap 空间由 WALinuxAgent 在 Azure 中的物理 blade 服务器中配置。
- 在 Installation Summary 屏幕中,选择 Network and Host Name。将 Ethernet 切换到 On。
安装开始:
-
创建
root
密码。 - 创建管理用户帐户。
-
创建
- 安装完成后,重启虚拟机并登录到 root 帐户。
-
登录后,您可以配置镜像
root
。
1.3. 为 Microsoft Azure 配置基础镜像 复制链接链接已复制到粘贴板!
基础镜像需要更改配置,才能作为 Azure 中的 RHEL 7 虚拟机镜像。以下小节提供 Azure 所需的其他配置更改。
1.3.1. 安装 Hyper-V 设备驱动程序 复制链接链接已复制到粘贴板!
Microsoft 为 Hyper-V 软件包提供网络和存储设备驱动程序作为其 Linux 集成服务(LIS)的一部分。在将 Hyper-V 设备驱动程序置备为 Azure 虚拟机之前,您可能需要在虚拟机镜像上安装 Hyper-V 设备驱动程序。使用 lsinitrd | grep hv
命令验证是否安装了驱动程序。
流程
输入以下
grep
命令来确定是否安装了所需的 Hyper-V 设备驱动程序。lsinitrd | grep hv
# lsinitrd | grep hv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在以下示例中安装了所有必需的驱动程序。
lsinitrd | grep hv
# lsinitrd | grep hv drwxr-xr-x 2 root root 0 Aug 12 14:21 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/hv -rw-r--r-- 1 root root 31272 Aug 11 08:45 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/hv/hv_vmbus.ko.xz -rw-r--r-- 1 root root 25132 Aug 11 08:46 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/net/hyperv/hv_netvsc.ko.xz -rw-r--r-- 1 root root 9796 Aug 11 08:45 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/scsi/hv_storvsc.ko.xz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有安装所有驱动程序,请完成剩余的步骤。
注意环境中可能会存在
hv_vmbus
驱动程序。即使存在这个驱动程序,在虚拟机中完成以下步骤。-
在
/etc/hv.conf.d
中创建名为hv.conf
的文件。 在
hv.conf
文件中添加以下驱动程序参数。add_drivers+=" hv_vmbus " add_drivers+=" hv_netvsc " add_drivers+=" hv_storvsc "
add_drivers+=" hv_vmbus " add_drivers+=" hv_netvsc " add_drivers+=" hv_storvsc "
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意请注意引号之前和之后的空格,如
add_drivers+=" hv_vmbus "
。这样可确保在环境中存在其他 Hyper-V 驱动程序时载入唯一的驱动程序。重新生成
initramfs
镜像。dracut -f -v --regenerate-all
# dracut -f -v --regenerate-all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
- 重启机器。
-
运行
lsinitrd | grep hv
命令验证是否安装了驱动程序。
1.3.2. 进行额外的配置更改 复制链接链接已复制到粘贴板!
虚拟机需要进行进一步的配置更改才能在 Azure 中操作。执行以下步骤进行额外的更改。
流程
- 如有必要,启动虚拟机。
注册虚拟机并启用 Red Hat Enterprise Linux 7 软件仓库。
subscription-manager register --auto-attach
# subscription-manager register --auto-attach
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
停止和删除 cloud-init(如果存在)
停止
cloud-init
服务。systemctl stop cloud-init
# systemctl stop cloud-init
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
cloud-init
软件。yum remove cloud-init
# yum remove cloud-init
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
完成其他虚拟机更改
编辑
/etc/ssh/sshd_config
文件并启用密码验证。PasswordAuthentication yes
PasswordAuthentication yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置通用主机名。
hostnamectl set-hostname localhost.localdomain
# hostnamectl set-hostname localhost.localdomain
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑(或创建)
/etc/sysconfig/network-scripts/ifcfg-eth0
文件。仅使用以下列出的参数。注意RHEL 7 DVD ISO 镜像中没有
ifcfg-eth0
文件,它必须被创建。Copy 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/80-net-name-slot-rules
# 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/80-net-name-slot-rules
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
ssh
设置为自动启动。systemctl enable sshd systemctl is-enabled sshd
# systemctl enable sshd # systemctl is-enabled sshd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改内核引导参数。
-
在
/etc/default/grub
文件中的GRUB_CMDLINE_LINUX
行的开头添加crashkernel=256M
。如果crashkernel=auto
存在,请将其改为crashkernel=256M
。 在
GRUB_CMDLINE_LINUX
行末尾添加以下行(如果不存在)。earlyprintk=ttyS0 console=ttyS0 rootdelay=300
earlyprintk=ttyS0 console=ttyS0 rootdelay=300
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除以下选项(如果存在)。
rhgb quiet
rhgb quiet
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在
重新生成
grub.cfg
文件。grub2-mkconfig -o /boot/grub2/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装并启用 Windows Azure Linux Agent(WALinuxAgent)。
yum install WALinuxAgent -y systemctl enable waagent
# yum install WALinuxAgent -y # systemctl enable waagent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您看到 No package
WALinuxAgent
available 错误信息,安装rhel-7-server-extras-rpms
仓库。在再次尝试安装前运行# subscription-manager repos --enable=rhel-7-server-extras-rpms
命令。编辑
/etc/waagent.conf
文件中的以下行,为置备的虚拟机配置 swap 空间。为您置备的虚拟机设置 swap 空间。Provisioning.DeleteRootPassword=n ResourceDisk.Filesystem=ext4 ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048
Provisioning.DeleteRootPassword=n ResourceDisk.Filesystem=ext4 ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
准备置备
从 Red Hat Subscription Manager 取消注册虚拟机。
subscription-manager unregister
# subscription-manager unregister
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过清理现有置备详情来准备 Azure 置备。Azure 在 Azure 中重新置备虚拟机。这个命令会生成数据丢失警告信息,这是预期的。
waagent -force -deprovision
# waagent -force -deprovision
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 清理 shell 历史记录并关闭虚拟机。
export HISTSIZE=0 poweroff
# export HISTSIZE=0 # poweroff
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. 将镜像转换为固定 VHD 格式 复制链接链接已复制到粘贴板!
所有 Microsoft Azure VM 镜像都必须采用固定的 VHD
格式。镜像必须在将镜像转换为 VHD 之前被对齐到 1 MB 边界。本节论述了如何将镜像从 qcow2
转换为固定的 VHD
格式,并在需要时匹配镜像。转换镜像后,您可以将其上传到 Azure。
流程
将镜像从
qcow2
转换为raw
格式。qemu-img convert -f qcow2 -O raw <image-name>.qcow2 <image-name>.raw
$ qemu-img convert -f qcow2 -O raw <image-name>.qcow2 <image-name>.raw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下内容创建一个 shell 脚本。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行脚本。这个示例使用名称
align.sh
。sh align.sh <image-xxx>.raw
$ sh align.sh <image-xxx>.raw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如需显示 "Your image is already aligned.You do not need to resize.",执行以下步骤。
- 如果显示了一个值,代表您的镜像没有被对齐。在继续执行下一步前,按照 Aligning the image 部分中的步骤重新定义镜像大小。
使用以下命令将文件转换为固定的
VHD
格式。示例使用 qemu-img 版本 2.12.0。
qemu-img convert -f raw -o subformat=fixed,force_size -O vpc <image-xxx>.raw <image.xxx>.vhd
$ qemu-img convert -f raw -o subformat=fixed,force_size -O vpc <image-xxx>.raw <image.xxx>.vhd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 转换后,
VHD
文件就可以上传到 Azure。
对齐镜像
只有在 raw
文件没有被对齐时才执行以下步骤。
使用在运行验证脚本时显示的舍入值重新定义
raw
文件大小。qemu-img resize -f raw <image-xxx>.raw <rounded-value>
$ qemu-img resize -f raw <image-xxx>.raw <rounded-value>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
raw
镜像文件转换为VHD
格式。示例使用 qemu-img 版本 2.12.0。
qemu-img convert -f raw -o subformat=fixed,force_size -O vpc <image-xxx>.raw <image.xxx>.vhd
$ qemu-img convert -f raw -o subformat=fixed,force_size -O vpc <image-xxx>.raw <image.xxx>.vhd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 转换后,
VHD
文件就可以上传到 Azure。
1.5. 安装 Azure CLI 复制链接链接已复制到粘贴板!
完成以下步骤,在主机上安装 Azure 命令行界面(Azure CLI 2.1)。Azure CLI 2.1 是基于 Python 的实用程序,可在 Azure 中创建和管理虚拟机。
先决条件
- 在使用 Azure CLI 之前,您需要具有 Microsoft Azure 帐户。
- Azure CLI 安装需要 Python 3.x。
流程
导入 Microsoft 软件仓库密钥。
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建本地 Azure CLI 存储库条目。
sudo sh -c 'echo -e "[azure-cli]\nname=Azure CLI\nbaseurl=https://packages.microsoft.com/yumrepos/azure-cli\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/azure-cli.repo'
$ sudo sh -c 'echo -e "[azure-cli]\nname=Azure CLI\nbaseurl=https://packages.microsoft.com/yumrepos/azure-cli\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/azure-cli.repo'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
yum
软件包索引。yum check-update
$ yum check-update
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查您的 Python 版本(
python --version
),如果需要安装 Python 3.x。sudo yum install python3
$ sudo yum install python3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装 Azure CLI。
sudo yum install -y azure-cli
$ sudo yum install -y azure-cli
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 Azure CLI。
az
$ az
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
1.6. 在 Azure 中创建资源 复制链接链接已复制到粘贴板!
完成以下步骤,在上传 VHD
文件并创建 Azure 镜像前创建所需的 Azure 资源。
流程
输入以下命令使用 Azure 验证您的系统并登录。
az login
$ az login
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果在您的环境中有浏览器,则 CLI 会打开浏览器到 Azure 登录页面。如需更多信息和选项,请参阅使用 Azure CLI 登录。
在 Azure 区域中创建资源组。
az group create --name <resource-group> --location <azure-region>
$ az group create --name <resource-group> --location <azure-region>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建存储帐户。有关有效 SKU 值的更多信息,请参阅 SKU Types。
az storage account create -l <azure-region> -n <storage-account-name> -g <resource-group> --sku <sku_type>
$ az storage account create -l <azure-region> -n <storage-account-name> -g <resource-group> --sku <sku_type>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取存储帐户连接字符串。
az storage account show-connection-string -n <storage-account-name> -g <resource-group>
$ az storage account show-connection-string -n <storage-account-name> -g <resource-group>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
az storage account show-connection-string -n azrhelclistact -g azrhelclirsgrp
[clouduser@localhost]$ az storage account show-connection-string -n azrhelclistact -g azrhelclirsgrp { "connectionString": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=azrhelclistact;AccountKey=NreGk...==" }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过复制连接字符串并将其粘贴到以下命令来导出连接字符串。这个字符串将您的系统连接到存储帐户。
export AZURE_STORAGE_CONNECTION_STRING="<storage-connection-string>"
$ export AZURE_STORAGE_CONNECTION_STRING="<storage-connection-string>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=azrhelclistact;AccountKey=NreGk...=="
[clouduser@localhost]$ export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=azrhelclistact;AccountKey=NreGk...=="
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建存储容器。
az storage container create -n <container-name>
$ az storage container create -n <container-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
az storage container create -n azrhelclistcont
[clouduser@localhost]$ az storage container create -n azrhelclistcont { "created": true }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建虚拟网络。
az network vnet create -g <resource group> --name <vnet-name> --subnet-name <subnet-name>
$ az network vnet create -g <resource group> --name <vnet-name> --subnet-name <subnet-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7. 上传并创建 Azure 镜像 复制链接链接已复制到粘贴板!
完成以下步骤,将 VHD
文件上传到容器并创建 Azure 自定义镜像。
系统重启后,导出的存储连接字符串不会保留。如果以下步骤中的任何命令失败,请再次导出连接字符串。
流程
将
VHD
文件上传到存储容器,可能需要几分钟时间。要获取存储容器列表,请输入az storage container list
命令。az storage blob upload --account-name <storage-account-name> --container-name <container-name> --type page --file <path-to-vhd> --name <image-name>.vhd
$ az storage blob upload --account-name <storage-account-name> --container-name <container-name> --type page --file <path-to-vhd> --name <image-name>.vhd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
az storage blob upload --account-name azrhelclistact --container-name azrhelclistcont --type page --file rhel-image-7.vhd --name rhel-image-7.vhd
$ az storage blob upload --account-name azrhelclistact --container-name azrhelclistcont --type page --file rhel-image-7.vhd --name rhel-image-7.vhd Percent complete: %100.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取上传的
VHD
文件的 URL,以便在以下步骤中使用。az storage blob url -c <container-name> -n <image-name>.vhd
$ az storage blob url -c <container-name> -n <image-name>.vhd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
az storage blob url -c azrhelclistcont -n rhel-image-7.vhd
$ az storage blob url -c azrhelclistcont -n rhel-image-7.vhd "https://azrhelclistact.blob.core.windows.net/azrhelclistcont/rhel-image-7.vhd"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Azure 自定义镜像。
az image create -n <image-name> -g <resource-group> -l <azure-region> --source <URL> --os-type linux
$ az image create -n <image-name> -g <resource-group> -l <azure-region> --source <URL> --os-type linux
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意虚拟机的默认 hypervisor 系列为 V1。您可以通过包括选项
--hyper-v-generation V2
来将 hypervisor 系列指定为 V2。第二代虚拟机使用基于 UEFI 的引导架构。如需有关生成 2 代虚拟机的信息,请参阅 Azure 生成 2 个虚拟机的支持。该命令可能会返回错误 "Only blobs formatted as VHDs can be imported." 这个错误可能意味着,在镜像转换为
VHD
前,镜像没有与最接近的 1 MB 边界一致。例如:
az image create -n rhel7 -g azrhelclirsgrp2 -l southcentralus --source https://azrhelclistact.blob.core.windows.net/azrhelclistcont/rhel-image-7.vhd --os-type linux
$ az image create -n rhel7 -g azrhelclirsgrp2 -l southcentralus --source https://azrhelclistact.blob.core.windows.net/azrhelclistcont/rhel-image-7.vhd --os-type linux
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8. 在 Azure 中创建并启动虚拟机 复制链接链接已复制到粘贴板!
以下步骤提供从镜像创建 managed-disk Azure 虚拟机的最低命令选项。如需了解更多选项,请参阅 az vm create。
流程
输入以下命令来创建虚拟机。
az vm create -g <resource-group> -l <azure-region> -n <vm-name> --vnet-name <vnet-name> --subnet <subnet-name> --size Standard_A2 --os-disk-name <simple-name> --admin-username <administrator-name> --generate-ssh-keys --image <path-to-image>
$ az vm create -g <resource-group> -l <azure-region> -n <vm-name> --vnet-name <vnet-name> --subnet <subnet-name> --size Standard_A2 --os-disk-name <simple-name> --admin-username <administrator-name> --generate-ssh-keys --image <path-to-image>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意选项
--generate-ssh-keys
会创建一个私有/公钥对。私钥和公钥文件会在您的系统~/.ssh
中创建。公钥添加到虚拟机上由--admin-username
选项指定的用户的authorized_keys
文件中。如需更多信息,请参阅其他验证方法。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 SSH 会话并登录到虚拟机。
ssh -i /home/clouduser/.ssh/id_rsa clouduser@<public-IP-address>.
[clouduser@localhost]$ ssh -i /home/clouduser/.ssh/id_rsa clouduser@<public-IP-address>. The authenticity of host, '<public-IP-address>' can't be established. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '<public-IP-address>' (ECDSA) to the list of known hosts.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您看到用户提示,则代表成功部署了 Azure 虚拟机。
现在,您可以进入 Azure 门户,检查审计日志和资源属性。您可以在此门户中直接管理虚拟机。如果要管理多个虚拟机,您应该使用 Azure CLI。Azure CLI 为您在 Azure 中的资源提供了一个强大的接口。在 CLI 中输入 az --help
命令,或者参阅 Azure CLI 命令来了解您在 Microsoft Azure 中用来管理虚拟机的更多信息。
1.9. 其他验证方法 复制链接链接已复制到粘贴板!
虽然使用 Azure 生成的密钥对不是必须的,但为了提高安全性,推荐使用。以下示例演示了使用两个 SSH 验证方法。
示例 1: 这些命令选项在不生成公钥文件的情况下置备新虚拟机。它们允许使用密码进行 SSH 验证。
az vm create -g <resource-group> -l <azure-region> -n <vm-name> --vnet-name <vnet-name> --subnet <subnet-name> --size Standard_A2 --os-disk-name <simple-name> --authentication-type password --admin-username <administrator-name> --admin-password <ssh-password> --image <path-to-image>
$ az vm create -g <resource-group> -l <azure-region> -n <vm-name> --vnet-name <vnet-name> --subnet <subnet-name> --size Standard_A2 --os-disk-name <simple-name> --authentication-type password --admin-username <administrator-name> --admin-password <ssh-password> --image <path-to-image>
ssh <admin-username>@<public-ip-address>
$ ssh <admin-username>@<public-ip-address>
示例 2: 这些命令选项置备一个新的 Azure 虚拟机,并允许使用现有公钥文件进行 SSH 验证。
az vm create -g <resource-group> -l <azure-region> -n <vm-name> --vnet-name <vnet-name> --subnet <subnet-name> --size Standard_A2 --os-disk-name <simple-name> --admin-username <administrator-name> --ssh-key-value <path-to-existing-ssh-key> --image <path-to-image>
$ az vm create -g <resource-group> -l <azure-region> -n <vm-name> --vnet-name <vnet-name> --subnet <subnet-name> --size Standard_A2 --os-disk-name <simple-name> --admin-username <administrator-name> --ssh-key-value <path-to-existing-ssh-key> --image <path-to-image>
ssh -i <path-to-existing-ssh-key> <admin-username>@<public-ip-address>
$ ssh -i <path-to-existing-ssh-key> <admin-username>@<public-ip-address>
1.10. 附加红帽订阅 复制链接链接已复制到粘贴板!
完成以下步骤以附加您之前通过 Red Hat Cloud Access 程序启用的订阅。
先决条件
您必须已启用您的订阅。
流程
注册您的系统。
subscription-manager register --auto-attach
subscription-manager register --auto-attach
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 附加您的订阅。
- 您可以使用激活码来附加订阅。请参阅创建红帽客户门户网站激活码。
- 或者,您可以使用订阅池(池 ID)的 ID 手动附加订阅。请参阅通过 command Line 来附加和删除订阅。
第 2 章 在 Microsoft Azure 上配置红帽高可用性集群 复制链接链接已复制到粘贴板!
红帽支持 Red Hat Enterprise Linux(RHEL)7.4 及更新的版本中的高可用性(HA)。本章包含使用虚拟机(VM)实例作为集群节点在 Microsoft Azure 上配置 Red Hat HA 集群的信息和步骤。本章中的流程假设您要为 Azure 创建自定义镜像。您有多个选项来获取用于集群的 RHEL 7 镜像。如需有关 Azure 镜像选项的更多信息,请参阅 Azure 的 Red Hat Enterprise Linux Image Options。
本章包含为 Azure 设置环境的先决条件。设置环境后,您可以创建并配置 Azure VM 实例。
本章还包含与创建 HA 集群相关的流程,该集群将单个虚拟机节点转换为 Azure 上的 HA 节点集群。这包括在每个集群节点上安装高可用性软件包和代理、配置隔离和安装 Azure 网络资源代理的步骤。
本章在很多位置使用了 Microsoft Azure 文档。如需了解更多信息,请参阅引用的 Azure 文档。
先决条件
- 您需要安装 Azure 命令行界面(CLI)。如需更多信息,请参阅安装 Azure CLI。
- 在 Red Hat Cloud Access 程序中启用您的订阅。Red Hat Cloud Access 程序允许您在红帽完全支持的情况下将您的红帽订阅从物理系统或内部系统移到 Azure。
2.1. 在 Azure 中创建资源 复制链接链接已复制到粘贴板!
完成以下步骤以创建可用性集。您需要这些资源才能完成本章中的后续任务。
流程
创建可用性集。所有集群节点都必须处于相同的可用性集。
az vm availability-set create --name _MyAvailabilitySet_ --resource-group _MyResourceGroup_
$ az vm availability-set create --name _MyAvailabilitySet_ --resource-group _MyResourceGroup_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. 创建 Azure Active Directory 应用程序 复制链接链接已复制到粘贴板!
完成以下步骤以创建 Azure Active Directory(AD)应用程序。Azure AD Application Views 和自动访问集群中所有节点的 HA 操作。
先决条件
您需要安装 Azure 命令行界面(CLI)。
流程
- 确保您是 Microsoft Azure 订阅的管理员或所有者。您需要此授权来创建 Azure AD 应用程序。
登录到您的 Azure 帐户。
az login
$ az login
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令来创建 Azure AD 应用程序。要使用您自己的密码,在该命令中添加
--password
选项。确保您创建一个强大密码。az ad sp create-for-rbac --name _FencingApplicationName_ --role owner --scopes "/subscriptions/_SubscriptionID_/resourceGroups/_MyResourseGroup_"
$ az ad sp create-for-rbac --name _FencingApplicationName_ --role owner --scopes "/subscriptions/_SubscriptionID_/resourceGroups/_MyResourseGroup_"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在继续操作前,保存以下信息。您需要这些信息来设置隔离代理。
- Azure AD 应用 ID
- Azure AD 应用程序密码
- 租户 ID
- Microsoft Azure Subscription ID
其它资源
2.3. 配置 HA 服务 复制链接链接已复制到粘贴板!
在所有节点上完成以下步骤。
流程
用户
hacluster
在上一步中的pcs
和pacemaker
安装中创建。在所有集群节点上为hacluster
创建密码。所有节点都使用相同的密码。passwd hacluster
# passwd hacluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果启用了
firewalld.service
,在 RHEL 防火墙中添加high availability
服务。firewall-cmd --permanent --add-service=high-availability firewall-cmd --reload
# firewall-cmd --permanent --add-service=high-availability # firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
pcs
服务并在引导时启用它。systemctl enable pcsd.service --now
# systemctl enable pcsd.service --now
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
确定
pcs
服务正在运行。systemctl is-active pcsd.service
# systemctl is-active pcsd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4. 安装 Red Hat HA 软件包和代理 复制链接链接已复制到粘贴板!
在所有节点上完成以下步骤。
流程
在红帽注册虚拟机。
sudo -i subscription-manager register --auto-attach
$ sudo -i # subscription-manager register --auto-attach
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用所有软件仓库。
subscription-manager repos --disable=*
# subscription-manager repos --disable=*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 RHEL 7 Server 和 RHEL 7 Server HA 软件仓库。
subscription-manager repos --enable=rhel-7-server-rpms subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
# subscription-manager repos --enable=rhel-7-server-rpms # subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新所有软件包。
yum update -y
# yum update -y
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果内核被更新,则需要重启。
reboot
# reboot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
pcs
、pacemaker
、fence agent
resource agent
和nmap-ncat
。yum install -y pcs pacemaker fence-agents-azure-arm resource-agents nmap-ncat
# yum install -y pcs pacemaker fence-agents-azure-arm resource-agents nmap-ncat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5. 创建集群 复制链接链接已复制到粘贴板!
完成以下步骤以创建节点集群。
流程
在其中一个节点上,输入以下命令验证 pcs 用户
hacluster
。指定集群中的每个节点的名称。pcs host auth _hostname1_ _hostname2_ _hostname3_
# pcs host auth _hostname1_ _hostname2_ _hostname3_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建集群。
pcs cluster setup --name _hostname1_ _hostname2_ _hostname3_
# pcs cluster setup --name _hostname1_ _hostname2_ _hostname3_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
启用集群。
pcs cluster enable --all
# pcs cluster enable --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动集群。
pcs cluster start --all
# pcs cluster start --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6. 创建隔离设备 复制链接链接已复制到粘贴板!
完成以下步骤,从集群中的任何节点配置隔离。
流程
找到可隔离的可用实例。
fence_azure_arm -l [appid] -p [authkey] --resourceGroup=[name] --subscriptionId=[name] --tenantId=[name] -o list
# fence_azure_arm -l [appid] -p [authkey] --resourceGroup=[name] --subscriptionId=[name] --tenantId=[name] -o list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
fence_azure_arm -l XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -p XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX --resourceGroup=hacluster-rg --subscriptionId=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX --tenantId=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -o list
[root@node1 ~]# fence_azure_arm -l XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -p XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX --resourceGroup=hacluster-rg --subscriptionId=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX --tenantId=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -o list node01-vm, node02-vm, node03-vm,
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建隔离设备。使用
pcmk_host_map
命令将 RHEL 主机名映射到实例 ID。pcs stonith create _clusterfence_ fence_azure_arm login=_AD-Application-ID_ passwd=_AD-passwd_ pcmk_host_map="_pcmk-host-map_ resourcegroup= _myresourcegroup_ tenantid=_tenantid_ subscriptionid=_subscriptionid_
# pcs stonith create _clusterfence_ fence_azure_arm login=_AD-Application-ID_ passwd=_AD-passwd_ pcmk_host_map="_pcmk-host-map_ resourcegroup= _myresourcegroup_ tenantid=_tenantid_ subscriptionid=_subscriptionid_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
测试其他其中一个节点的隔离代理。
pcs stonith fence _azurenodename_
# pcs stonith fence _azurenodename_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查状态以验证节点已启动。
watch pcs status
# watch pcs status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
watch pcs status
[root@node01 ~]# watch pcs status fenceazure (stonith:fence_azure_arm): Started nodea
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7. 创建 Azure 内部负载均衡器 复制链接链接已复制到粘贴板!
Azure 内部负载均衡器会删除对健康探测请求没有做出响应的集群节点。
执行以下步骤来创建 Azure 内部负载均衡器。每个步骤都引用特定的 Microsoft 流程,并包括为 HA 自定义负载均衡器的设置。
先决条件
访问 Azure 控制面板
流程
- 创建基本负载均衡器。为 IP 地址分配类型选择 Internal load balancer、Basic SKU 和 Dynamic。
- 创建后端地址池。将后端池与在 HA 中创建 Azure 资源时创建的可用性集关联。不要设置任何目标网络 IP 配置。
- 创建健康探测。对于健康探测,选择 TCP 并输入端口 61000。您可以使用不会影响到另一个服务的 TCP 端口号。对于某些 HA 产品应用程序,如 SAP HANA 和 SQL Server,您可能需要与 Microsoft 合作来识别要使用的正确端口。
- 创建负载均衡器规则。要创建负载均衡规则,请使用预先填充的默认值。确保将 Floating IP (direct server return) 设置为 Enabled。
2.8. 配置 Azure 负载均衡器资源代理 复制链接链接已复制到粘贴板!
创建健康探测后,您必须配置 load balancer
资源代理。此资源代理运行一个服务,它回答来自 Azure 负载均衡器的健康探测请求,并删除不回答请求的集群节点。
流程
输入
Azure id
命令来查看 Azure 负载均衡器资源代理描述。这显示了这个代理的选项和默认操作。pcs resource describe _azure-id_
# pcs resource describe _azure-id_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于管理节点上 IP 的
Ipaddr2
资源。pcs resource create _resource-id_ IPaddr2 ip=_virtual/floating-ip_ cidr_netmask=_virtual/floating-mask_ --group _group-id_ nic=_network-interface_ op monitor interval=30s
# pcs resource create _resource-id_ IPaddr2 ip=_virtual/floating-ip_ cidr_netmask=_virtual/floating-mask_ --group _group-id_ nic=_network-interface_ op monitor interval=30s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=172.16.66.99 cidr_netmask=24 --group CloudIP nic=eth0 op monitor interval=30s
[root@node01 ~]# pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=172.16.66.99 cidr_netmask=24 --group CloudIP nic=eth0 op monitor interval=30s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
load balancer
资源代理。pcs resource create _resource-loadbalancer-name_ azure-lb port=_port-number_ --group _cluster-resources-group_
# pcs resource create _resource-loadbalancer-name_ azure-lb port=_port-number_ --group _cluster-resources-group_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
运行
pcs status
命令查看结果。pcs status
[root@node01 clouduser]# pcs status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
您有多个选项,可在 Amazon Web Services(AWS)上将 Red Hat Enterprise Linux(RHEL)7 镜像部署为 EC2 实例。本章讨论选择镜像的选项,以及列出或引用主机系统和虚拟机(VM)的系统要求。本章还提供了从 ISO 镜像创建自定义虚拟机并将其上传到 EC2 和启动 EC2 实例的步骤。
您可以从 ISO 镜像创建自定义虚拟机,但红帽建议您使用 Red Hat Image Builder 产品来创建自定义镜像,供特定云供应商使用。使用镜像构建器,您可以使用 ami
格式创建并上传 AMI(Amazon Machine Image)。如需更多信息,请参阅镜像构建器指南。
本章在很多位置使用了 Amazon 文档。如需很多流程,请参阅引用的 Amazon 文档了解更多详情。
如需可以在 AWS 上安全使用的红帽产品列表,请参阅 Amazon Web Services。
先决条件
- 注册一个红帽客户门户网站(Red Hat Customer Portal) 帐户。
- 注册 AWS 并设置 AWS 资源。如需更多信息,请参阅使用 Amazon EC2 设置。
- 在 Red Hat Cloud Access 程序中启用您的订阅。Red Hat Cloud Access 程序允许您在红帽的完全支持下将红帽订阅从物理或内部系统移到 AWS。
其它资源
3.1. AWS 上的 Red Hat Enterprise Linux 镜像选项 复制链接链接已复制到粘贴板!
下表列出了镜像的不同选择并记录镜像选项的不同。
镜像选项 | 订阅 | 示例情境 | 注意事项 |
---|---|---|---|
选择部署一个 Red Hat Gold Image。 | 利用您现有的红帽订阅。 | 通过 Red Hat Cloud Access 程序 启用订阅,然后在 AWS 上选择 Red Hat Gold Image。 | 订阅包括红帽产品成本 ; 您可以为 Amazon 提供所有其他实例成本。 Red Hat Gold Images 被称为 "Cloud Access" 镜像,因为您使用现有的红帽订阅。红帽直接为 Cloud Access 镜像提供支持。 |
选择部署移动到 AWS 的自定义镜像。 | 利用您现有的红帽订阅。 | 通过 Red Hat Cloud Access 程序 启用订阅,上传您的自定义镜像并附加您的订阅。 | 订阅包括红帽产品成本 ; 您可以为 Amazon 提供所有其他实例成本。 移动到 AWS 的自定义镜像是 "Cloud Access" 镜像,因为您利用了您现有的红帽订阅。红帽直接为 Cloud Access 镜像提供支持。 |
选择部署包含 RHEL 的现有 Amazon 镜像。 | AWS EC2 镜像包括红帽产品。 | 在 AWS 管理控制台上启动实例时,选择 RHEL 镜像,或者从 AWS Marketplace 中选择镜像。 | 根据 pay-as-you-go 模式每小时向 Amazon 支付。这样的镜像称为 "on-demand" 镜像。Amazon 支持 on-demand 镜像。 红帽提供了镜像的更新。AWS 通过 Red Hat Update Infrastructure(RHUI)提供更新。 |
您可以使用 Red Hat Image Builder 为 AWS 创建自定义镜像。如需更多信息,请参阅镜像构建器指南。
您无法将 on-demand 实例转换为 Red Hat Cloud Access 实例。要从 on-demand 镜像改为 Red Hat Cloud Access bring-your-own-subscription(BYOS)镜像,请创建新的 Red Hat Cloud Access 实例并从您的按需实例迁移数据。在迁移数据后取消您的 on-demand 实例以避免出现重复账单。
本章的剩余部分包含与自定义镜像相关的信息和流程。
3.2. 安装 AWS CLI 复制链接链接已复制到粘贴板!
本章的许多流程包括使用 AWS CLI。完成以下步骤以安装 AWS CLI。
先决条件
您需要已创建并有权访问 AWS 访问密钥 ID 和 AWS Secret 访问密钥。有关信息和说明,请参阅快速配置 AWS CLI。
流程
安装 Python 3 和
pip
工具。yum install python3 yum install python3-pip
# yum install python3 # yum install python3-pip
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
pip
命令安装 AWS 命令行工具。pip3 install awscli
# pip3 install awscli
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
aws --version
命令验证您是否安装了 AWS CLI。aws --version
$ aws --version aws-cli/1.16.182 Python/2.7.5 Linux/3.10.0-957.21.3.el7.x86_64 botocore/1.12.172
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据 AWS 访问详情配置 AWS 命令行客户端。
aws configure
$ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
3.3. 虚拟机配置设置 复制链接链接已复制到粘贴板!
云虚拟机必须具有以下配置设置。
设置 | 建议 |
---|---|
ssh |
|
dhcp | 应该为 dhcp 配置主虚拟适配器。 |
3.4. 从 ISO 镜像创建基本虚拟机 复制链接链接已复制到粘贴板!
按照本节中的步骤从 ISO 镜像创建基础镜像。
先决条件
按照 Virtualization 部署和管理指南,为您的 Red Hat Enterprise Linux 7 主机机器启用虚拟化。
3.4.1. 下载 ISO 镜像 复制链接链接已复制到粘贴板!
流程
- 从红帽客户门户网站下载最新的 Red Hat Enterprise Linux ISO 镜像。
-
将镜像移动到
/var/lib/libvirt/images
目录中。
3.4.2. 从 ISO 镜像创建虚拟机 复制链接链接已复制到粘贴板!
流程
- 确保已为虚拟化启用主机机器。有关安装可升级软件包的信息和步骤,请参阅在现有 Red Hat Enterprise Linux 系统上安装虚拟化软件包
创建并启动基本 Red Hat Enterprise Linux 虚拟机。有关创建虚拟机的说明,请参阅创建虚拟机。
如果使用命令行创建虚拟机,请确保将默认内存和 CPU 设置为您所需的容量。将您的虚拟网络接口设置为 virtio。
下面是一个基本的命令行示例。
virt-install --name _vmname_ --memory 2048 --vcpus 2 --disk size=8,bus=virtio --location rhel-7.0-x86_64-dvd.iso --os-variant=rhel7.0
virt-install --name _vmname_ --memory 2048 --vcpus 2 --disk size=8,bus=virtio --location rhel-7.0-x86_64-dvd.iso --os-variant=rhel7.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用 virt-manager 应用程序创建虚拟机,请按照使用 virt-manager 创建虚拟机的步骤进行以下操作:
- 不要选择 Immediately Start VM。
- 将 Memory 和 Storage Size 设置为您需要的值。
- 在开始安装前,请确保将 Virtual Network Interface Settings 中的 Model 更改为 virtio,并将您的 vCPU 更改为您想要的虚拟机容量设置。
3.4.3. 完成 RHEL 安装 复制链接链接已复制到粘贴板!
执行以下步骤完成安装并在虚拟机启动后启用 root 访问。
流程
- 选择您要在安装过程中使用的语言。
在 Installation Summary 视图中:
- 点 Software Selection,选择 Minimal Install。
- 点 Done。
点击 Installation Destination 并检查 Storage Configuration 中的 Custom。
-
确保
/boot
验证至少有 500 MB。您可以使用剩余空间作为 root/
。 - 建议使用标准分区,但您可以使用逻辑卷管理(LVM)。
- 您可以将 xfs、ext4 或者 ext3 用于文件系统。
- 完成更改后点 Done。
-
确保
- 点 Begin Installation。
- 设置 Root 密码。
-
重启虚拟机,然后在安装完成后以
root
身份登录。 配置镜像。
注意确定安装并启用
cloud-init
软件包。- 关闭虚拟机。
3.5. 将 Red Hat Enterprise Linux 镜像上传到 AWS 复制链接链接已复制到粘贴板!
按照本节中的步骤,在主机机器中将您的镜像上传到 AWS。
3.5.1. 创建 S3 存储桶 复制链接链接已复制到粘贴板!
导入到 AWS 需要 Amazon S3 存储桶。Amazon S3 存储桶是一个 Amazon 资源用于存储对象。作为上传镜像过程的一部分,您可以创建一个 S3 存储桶,然后将镜像移到存储桶。完成以下步骤以创建存储桶。
先决条件
- 您需要安装 AWS CLI。如需更多信息,请参阅安装 AWS CLI。
流程
- 启动 Amazon S3 控制台。
- 点 Create Bucket。此时会出现 Create Bucket 对话框。
在 Name and region 视图中:
- 输入 Bucket name。
- 选择 Region。在字段中输入您的区域,或者点击下拉并从所有可用区域选择您的区域。
- 点 Next。
- 在 Configure options 视图中,选择所需选项并点 Next。
- 在 Set permissions 视图中,更改或者接受默认选项并点 Next。
- 查看存储桶配置。
点 Create bucket。
注意另外,您可以使用 AWS CLI 创建存储桶。例如:
aws s3 mb s3://my-new-bucket
创建一个名为my-new-bucket
的 S3 存储桶。有关mb
命令的详情,请参考 AWS CLI 命令参考。
3.5.2. 创建 vmimport 角色 复制链接链接已复制到粘贴板!
执行以下步骤创建 VM 导入所需的 vmimport
角色。如需更多信息,请参阅 Amazon 文档中的 VM Import Service Role 部分。
流程
创建名为
trust-policy.json
的文件并包含以下策略。在您的系统中保存该文件并记录其位置。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
create role
命令创建vmimport
角色。指定trust-policy.json
文件位置的完整路径。使用file://
作为路径的前缀。下面是一个示例。aws iam create-role _--role-name_ vmimport --assume-role-policy-document file:///home/sample/ImportService/trust-policy.json
aws iam create-role _--role-name_ vmimport --assume-role-policy-document file:///home/sample/ImportService/trust-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
role-policy.json
的文件并包含以下策略。将s3-bucket-name
替换为 S3 存储桶的名称。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
put-role-policy
命令将策略附加到您创建的角色。指定role-policy.json
文件的完整路径。下面是一个示例。aws iam put-role-policy _--role-name_ vmimport _--policy-name_ vmimport --policy-document file:///home/sample/ImportService/role-policy.json
aws iam put-role-policy _--role-name_ vmimport _--policy-name_ vmimport --policy-document file:///home/sample/ImportService/role-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.3. 将 AMI 转换为 S3 复制链接链接已复制到粘贴板!
完成以下步骤,将 Amazon Machine Image(AMI)转换为 S3。示例是代表 ; 它们将 qcow2
文件格式格式的镜像转换为 raw
格式。Amazon 接受 OVA
、VHD
、VHDX
VMDK
、和 raw
格式的镜像。如需更多信息,请参阅 Amazon 接受的镜像格式的 VM Import/Export Works。
流程
运行
qemu-img
命令转换您的镜像。下面是一个示例。qemu-img convert -f qcow2 -O raw rhel-server-7.7-1-x86_64-kvm.qcow2 rhel-server-7.7-1-x86_64-kvm.raw
qemu-img convert -f qcow2 -O raw rhel-server-7.7-1-x86_64-kvm.qcow2 rhel-server-7.7-1-x86_64-kvm.raw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将镜像推送到 S3。
aws s3 cp rhel-server-7.7.1-x86_64-kvm.raw s3://s3-_bucket-name_
aws s3 cp rhel-server-7.7.1-x86_64-kvm.raw s3://s3-_bucket-name_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意这个过程可能需要几分钟时间。完成后,您可以使用 AWS S3 控制台检查您的镜像是否已成功上传到 S3 存储桶。
其它资源
3.5.4. 从原始镜像创建 AMI 复制链接链接已复制到粘贴板!
执行以下步骤从原始镜像创建 AMI。
先决条件
- 您需要安装 AWS CLI。如需更多信息,请参阅安装 AWS CLI。
流程
-
您可以在 AWS CLI 上运行
aws ec2 import-image
命令从原始镜像创建 AMI。
aws ec2 import-image --platform Linux --license-type BYOL --no-encrypted --description _imagedescription_ --architecture x86_64 --disk-containers Format=Raw,UserBucket="{S3Bucket=virtqes1,S3Key=rhel-server-ec2-7.9-30.x86_64.raw}" --region _regionname_
# aws ec2 import-image --platform Linux --license-type BYOL --no-encrypted --description _imagedescription_ --architecture x86_64 --disk-containers Format=Raw,UserBucket="{S3Bucket=virtqes1,S3Key=rhel-server-ec2-7.9-30.x86_64.raw}" --region _regionname_
其它资源
3.5.5. 从 AMI 启动实例 复制链接链接已复制到粘贴板!
执行以下步骤从 AMI 启动和配置实例。
流程
- 在 AWS EC2 Dashboard 中选择 Images,然后选择 AMI。
- 右键点击您的镜像并选择 Launch。
选择满足或超过工作负载要求的 实例类型。
如需有关实例类型的信息,请参阅 Amazon EC2 实例类型。
点 Next: Configure Instance Details。
- 输入您要创建的实例数量。
- 对于 Network,选择您在设置 AWS 环境时创建的 VPC。为实例选择子网或创建新子网。
为 Auto-assign Public IP 选择 Enable。
注意这些是创建基本实例所需的最小配置选项。根据您的应用程序要求查看其他选项。
- 点击 Next: Add Storage。验证默认存储是否足够。
点击 Next: Add Tags。
注意标签可帮助您管理 AWS 资源。有关标记的信息,请参阅标记您的 Amazon EC2 资源。
- 点 Next: 配置安全组。选择设置 AWS 环境时创建的安全组。
- 点 Review and Launch。验证您的选择。
点 Launch。此时会提示您选择现有密钥对或创建新密钥对。选择设置 AWS 环境时创建的密钥对。
注意验证您的私钥权限是否正确。如果需要,使用命令选项
chmod 400 <keyname>.pem
更改权限。- 点 Launch Instances。
点 View Instances。您可以命名实例。
现在,您可以通过选择实例并点击 连接 来启动 SSH 会话到实例。使用为 独立 SSH 客户端提供的示例命令。
注意另外,您可以使用 AWS CLI 启动实例。如需更多信息,请参阅 Amazon 文档中的启动、列出和终止 Amazon EC2 实例。
3.5.6. 附加红帽订阅 复制链接链接已复制到粘贴板!
完成以下步骤以附加您之前通过 Red Hat Cloud Access 程序启用的订阅。
先决条件
您必须已启用您的订阅。
流程
注册您的系统。
subscription-manager register --auto-attach
subscription-manager register --auto-attach
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 附加您的订阅。
- 您可以使用激活码来附加订阅。请参阅创建红帽客户门户网站激活码。
- 或者,您可以使用订阅池(池 ID)的 ID 手动附加订阅。请参阅通过 command Line 来附加和删除订阅。
第 4 章 在 AWS 上配置红帽高可用性集群 复制链接链接已复制到粘贴板!
本章包含使用 EC2 实例作为集群节点在 Amazon Web Services(AWS)上配置红帽高可用性(HA)集群的信息和步骤。您有多个选项来获取您用于集群的 Red Hat Enterprise Linux(RHEL)镜像。有关 AWS 镜像选项的详情,请查看 AWS 的 Red Hat Enterprise Linux 镜像选项。
本章包含为 AWS 设置环境的先决条件。设置环境后,您可以创建并配置 EC2 实例。
本章还包含与创建 HA 集群相关的流程,该集群将单个节点转换为 AWS 上的一个 HA 节点集群。这包括在每个集群节点上安装高可用性软件包和代理、配置隔离以及安装 AWS 网络资源代理的步骤。
本章在很多位置使用了 Amazon 文档。更多信息,请参阅引用的 Amazon 文档来获得更多信息。
先决条件
- 您需要安装 AWS 命令行界面(CLI)。有关安装 AWS CLI 的更多信息,请参阅安装 AWS CLI。
- 在 Red Hat Cloud Access 程序中启用您的订阅。Red Hat Cloud Access 程序允许您在红帽的完全支持下将红帽订阅从物理或内部系统移到 AWS。
其它资源
4.1. 创建 AWS 访问密钥和 AWS Secret 访问密钥 复制链接链接已复制到粘贴板!
在安装 AWS CLI 前,您需要创建一个 AWS 访问密钥和 AWS Secret 访问密钥。隔离和资源代理 API 使用 AWS 访问密钥和 Secret 访问密钥连接到集群中的每个节点。
完成以下步骤以创建这些密钥。
先决条件
您的 IAM 用户帐户必须具有 Programmatic 访问权限。如需更多信息,请参阅设置 AWS 环境。
流程
- 启动 AWS 控制台。
- 点击 AWS Account ID 以显示下拉菜单并选择 My Security Credentials。
- 点 Users。
- 选择用户以打开 Summary 屏幕。
- 点 Security credentials 选项卡。
- 点 Create access key。
-
下载
.csv
文件(或者保存这两个密钥)。创建隔离设备时需要输入这些密钥。
4.2. 安装 HA 软件包和代理 复制链接链接已复制到粘贴板!
在所有节点上完成以下步骤以安装 HA 软件包和代理。
流程
输入以下命令删除 AWS Red Hat Update Infrastructure(RHUI)客户端。由于您要使用 Red Hat Cloud Access 订阅,所以您不应该在订阅之外使用 AWS RHUI。
sudo -i yum -y remove rh-amazon-rhui-client*
$ sudo -i # yum -y remove rh-amazon-rhui-client*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在红帽注册虚拟机。
subscription-manager register --auto-attach
# subscription-manager register --auto-attach
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用所有软件仓库。
subscription-manager repos --disable=*
# subscription-manager repos --disable=*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 RHEL 7 Server 和 RHEL 7 Server HA 软件仓库。
subscription-manager repos --enable=rhel-7-server-rpms subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
# subscription-manager repos --enable=rhel-7-server-rpms # subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新所有软件包。
yum update -y
# yum update -y
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果内核被更新,则需要重启。
reboot
# reboot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装 pcs、pacemaker、隔离代理和资源代理。
yum -y install pcs pacemaker fence-agents-aws resource-agents
# yum -y install pcs pacemaker fence-agents-aws resource-agents
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 用户
hacluster
在上一步中的pcs
和pacemaker
安装中创建。在所有集群节点上为hacluster
创建密码。所有节点都使用相同的密码。passwd hacluster
# passwd hacluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果启用了
firewalld.service
,在 RHEL 防火墙中添加high availability
服务。firewall-cmd --permanent --add-service=high-availability firewall-cmd --reload
# firewall-cmd --permanent --add-service=high-availability # firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
pcs
服务并在引导时启用它。systemctl enable pcsd.service --now
# systemctl enable pcsd.service --now
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
确定 pcs
服务正在运行。
systemctl is-active pcsd.service
# systemctl is-active pcsd.service
4.3. 创建集群 复制链接链接已复制到粘贴板!
完成以下步骤以创建节点集群。
流程
在其中一个节点上,输入以下命令验证 pcs 用户
hacluster
。指定集群中的每个节点的名称。pcs host auth _hostname1_ _hostname2_ _hostname3_
# pcs host auth _hostname1_ _hostname2_ _hostname3_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建集群。
pcs cluster setup --name _hostname1_ _hostname2_ _hostname3_
# pcs cluster setup --name _hostname1_ _hostname2_ _hostname3_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
启用集群。
pcs cluster enable --all
# pcs cluster enable --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动集群。
pcs cluster start --all
# pcs cluster start --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4. 创建隔离设备 复制链接链接已复制到粘贴板!
完成以下步骤来配置隔离。
流程
输入以下 AWS 元数据查询以获取每个节点的实例 ID。您需要这些 ID 来配置隔离设备。如需更多信息,请参阅实例元数据和用户数据。
echo $(curl -s http://169.254.169.254/latest/meta-data/instance-id)
# echo $(curl -s http://169.254.169.254/latest/meta-data/instance-id)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
echo $(curl -s http://169.254.169.254/latest/meta-data/instance-id) i-07f1ac63af0ec0ac6
[root@ip-10-0-0-48 ~]# echo $(curl -s http://169.254.169.254/latest/meta-data/instance-id) i-07f1ac63af0ec0ac6
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建隔离设备。使用
pcmk_host_map
命令将 RHEL 主机名映射到实例 ID。使用之前在创建 AWS 访问密钥和 AWS Secret 访问密钥中设置的 AWS 访问密钥和 AWS Secret 访问密钥。pcs stonith create cluster_fence fence_aws access_key=access-key secret_key=_secret-access-key_ region=_region_ pcmk_host_map="rhel-hostname-1:Instance-ID-1;rhel-hostname-2:Instance-ID-2;rhel-hostname-3:Instance-ID-3"
# pcs stonith create cluster_fence fence_aws access_key=access-key secret_key=_secret-access-key_ region=_region_ pcmk_host_map="rhel-hostname-1:Instance-ID-1;rhel-hostname-2:Instance-ID-2;rhel-hostname-3:Instance-ID-3"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs stonith create clusterfence fence_aws access_key=AKIAI*******6MRMJA secret_key=a75EYIG4RVL3h*******K7koQ8dzaDyn5yoIZ/ region=us-east-1 pcmk_host_map="ip-10-0-0-48:i-07f1ac63af0ec0ac6;ip-10-0-0-46:i-063fc5fe93b4167b2;ip-10-0-0-58:i-08bd39eb03a6fd2c7" power_timeout=240 pcmk_reboot_timeout=480 pcmk_reboot_retries=4
[root@ip-10-0-0-48 ~]# pcs stonith create clusterfence fence_aws access_key=AKIAI*******6MRMJA secret_key=a75EYIG4RVL3h*******K7koQ8dzaDyn5yoIZ/ region=us-east-1 pcmk_host_map="ip-10-0-0-48:i-07f1ac63af0ec0ac6;ip-10-0-0-46:i-063fc5fe93b4167b2;ip-10-0-0-58:i-08bd39eb03a6fd2c7" power_timeout=240 pcmk_reboot_timeout=480 pcmk_reboot_retries=4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
测试其他其中一个节点的隔离代理。
pcs stonith fence _awsnodename_
# pcs stonith fence _awsnodename_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs stonith fence ip-10-0-0-58
[root@ip-10-0-0-48 ~]# pcs stonith fence ip-10-0-0-58 Node: ip-10-0-0-58 fenced
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查状态以验证该节点是否已隔离。
watch pcs status
# watch pcs status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5. 在集群节点上安装 AWS CLI 复制链接链接已复制到粘贴板!
在以前的版本中,您在主机系统中安装了 AWS CLI。现在,在配置网络资源代理前,您需要在集群节点上安装 AWS CLI。
在每个集群节点上完成以下步骤。
先决条件
您必须已创建了 AWS Access Key 和 AWS Secret 访问密钥。如需更多信息,请参阅创建 AWS 访问密钥和 AWS Secret 访问密钥。
流程
- 执行安装 AWS CLI 的步骤。
输入以下命令验证 AWS CLI 是否已正确配置。应该会显示实例 ID 和实例名称。
例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6. 安装网络资源代理 复制链接链接已复制到粘贴板!
要使 HA 操作正常工作,集群使用 AWS 网络资源代理来启用故障切换功能。如果节点在设定的时间里不响应 heartbeat 检查,则该节点会被隔离,操作切换到集群中的额外节点。需要配置网络资源代理才能正常工作。
将两个资源添加到 同一组 以强制 order
和 colocation
限制。
创建二级私有 IP 资源及虚拟 IP 资源
完成以下步骤以添加二级专用 IP 地址并创建虚拟 IP。您可以从集群中的任何节点完成此步骤。
流程
输入以下命令查看
AWS Secondary Private IP Address
资源代理(awsvip)描述。这显示了这个代理的选项和默认操作。pcs resource describe awsvip
# pcs resource describe awsvip
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令使用
VPC CIDR
块中未使用的私有 IP 地址创建二级私有 IP 地址。pcs resource create privip awsvip secondary_private_ip=_Unused-IP-Address_ --group _group-name_
# pcs resource create privip awsvip secondary_private_ip=_Unused-IP-Address_ --group _group-name_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs resource create privip awsvip secondary_private_ip=10.0.0.68 --group networking-group
[root@ip-10-0-0-48 ~]# pcs resource create privip awsvip secondary_private_ip=10.0.0.68 --group networking-group
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建虚拟 IP 资源。这是一个 VPC IP 地址,可以从隔离的节点快速迁移到故障切换节点,从而使子网中隔离的节点失败。
pcs resource create vip IPaddr2 ip=_secondary-private-IP_ --group _group-name_
# pcs resource create vip IPaddr2 ip=_secondary-private-IP_ --group _group-name_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
root@ip-10-0-0-48 ~]# pcs resource create vip IPaddr2 ip=10.0.0.68 --group networking-group
root@ip-10-0-0-48 ~]# pcs resource create vip IPaddr2 ip=10.0.0.68 --group networking-group
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
输入 pcs status
命令来验证资源是否正在运行。
pcs status
# pcs status
例如:
创建弹性 IP 地址
弹性 IP 地址是一个公共 IP 地址,可以从隔离的节点快速迁移到故障转移节点,从而使隔离的节点失败。
请注意,这与之前创建的虚拟 IP 资源不同。弹性 IP 地址用于面向公共的互联网连接,而不是子网连接。
-
将两个资源添加到之前创建的用来强制
order
和colocation
约束的 同一组 中。 输入以下 AWS CLI 命令来创建弹性 IP 地址。
aws ec2 allocate-address --domain vpc --output text
[root@ip-10-0-0-48 ~]# aws ec2 allocate-address --domain vpc --output text eipalloc-4c4a2c45 vpc 35.169.153.122
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令查看 AWS 二级 Elastic IP 地址资源代理(awseip)描述。这显示了这个代理的选项和默认操作。
pcs resource describe awseip
# pcs resource describe awseip
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用步骤 1 中创建的分配的 IP 地址创建二级 Elastic IP 地址资源。
pcs resource create elastic awseip elastic_ip=_Elastic-IP-Address_allocation_id=_Elastic-IP-Association-ID_ --group networking-group
# pcs resource create elastic awseip elastic_ip=_Elastic-IP-Address_allocation_id=_Elastic-IP-Association-ID_ --group networking-group
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs resource create elastic awseip elastic_ip=35.169.153.122 allocation_id=eipalloc-4c4a2c45 --group networking-group
# pcs resource create elastic awseip elastic_ip=35.169.153.122 allocation_id=eipalloc-4c4a2c45 --group networking-group
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
输入 pcs status
命令来验证资源是否正在运行。
pcs status
# pcs status
例如:
测试弹性 IP 地址
输入以下命令验证虚拟 IP(awsvip)和弹性 IP(awseip)资源是否可以正常工作。
流程
从本地工作站启动 SSH 会话到之前创建的弹性 IP 地址。
ssh -l ec2-user -i ~/.ssh/<KeyName>.pem elastic-IP
$ ssh -l ec2-user -i ~/.ssh/<KeyName>.pem elastic-IP
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
ssh -l ec2-user -i ~/.ssh/cluster-admin.pem 35.169.153.122
$ ssh -l ec2-user -i ~/.ssh/cluster-admin.pem 35.169.153.122
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证您通过 SSH 连接到的主机是否与创建的弹性资源关联。
您有多个选项,可在 Google Cloud Platform(GCP)上将 Red Hat Enterprise Linux(RHEL)7 镜像部署为 Google Compute Engine(GCE)实例。本章讨论选择镜像的选项,以及列出或注明主机系统和虚拟机的系统要求。本章介绍了从 ISO 镜像创建自定义虚拟机、上传到 GCE 并启动实例的步骤。
本章在很多位置使用了 Google 文档。如需更多信息,请参阅引用的 Google 文档。
有关 GCP 红帽产品认证列表,请参阅 Google Cloud Platform 上的红帽。
先决条件
- 您需要一个红帽客户门户网站帐户才能完成本章中的步骤。
- 使用 GCP 创建帐户来访问 Google Cloud Platform 控制台。如需更多信息,请参阅 Google Cloud。
- 通过 Red Hat Cloud Access 程序启用您的红帽订阅。Red Hat Cloud Access 程序允许您在红帽的完全支持下将红帽订阅从物理或内部系统移到 GCP。
其它资源
5.1. GCP 上的 Red Hat Enterprise Linux 镜像选项 复制链接链接已复制到粘贴板!
下表列出了镜像选择和镜像选项的不同。
镜像选项 | 订阅 | 示例情境 | 注意事项 |
---|---|---|---|
选择部署移至 GCP 的自定义镜像。 | 利用您现有的红帽订阅。 | 通过 Red Hat Cloud Access 程序 启用订阅,上传您的自定义镜像并附加您的订阅。 | 订阅只包括红帽产品的成本;您还需要支付其他成本。 移至 GCP 的自定义镜像名为 "Cloud Access" 镜像,因为您利用了您现有的红帽订阅。红帽直接为 Cloud Access 镜像提供支持。 |
选择部署包含 RHEL 的现有 GCP 镜像。 | GCP 镜像包括一个红帽产品。 | 在 GCP Compute Engine 上启动实例时选择 RHEL 镜像,或者从 Google Cloud Platform Marketplace 中选择镜像。 | 根据 pay-as-you-go 模式每小时向 GCP 支付。这样的镜像称为 "on-demand" 镜像。GCP 通过支持协议支持 on-demand 镜像。 |
您无法将 on-demand 实例转换为 Red Hat Cloud Access 实例。要从 on-demand 镜像改为 Red Hat Cloud Access bring-your-own subscription(BYOS)镜像,创建一个新的 Red Hat Cloud Access 实例,并从您的 on-demand 实例迁移数据。在迁移数据后取消您的 on-demand 实例以避免出现重复账单。
本章的剩余部分包含与自定义镜像相关的信息和流程。
5.2. 理解基础镜像 复制链接链接已复制到粘贴板!
本节介绍使用预配置的基础镜像及其配置设置的信息。
5.2.1. 使用自定义基础镜像 复制链接链接已复制到粘贴板!
要手动配置虚拟机,请以基础(启动程序)虚拟机镜像开始。创建基本虚拟机镜像后,您可以修改配置设置并添加虚拟机在云中操作的软件包。您可在上传镜像后为特定应用程序进行额外的配置更改。
5.2.2. 虚拟机配置设置 复制链接链接已复制到粘贴板!
云虚拟机必须具有以下配置设置。
设置 | 建议 |
---|---|
ssh |
|
dhcp | 应该为 dhcp 配置主虚拟适配器。 |
5.3. 从 ISO 镜像创建基本虚拟机 复制链接链接已复制到粘贴板!
按照本节中的步骤从 ISO 镜像创建基础镜像。
先决条件
按照 Virtualization 部署和管理指南,为您的 Red Hat Enterprise Linux 7 主机机器启用虚拟化。
5.3.1. 下载 ISO 镜像 复制链接链接已复制到粘贴板!
流程
- 从红帽客户门户网站下载最新的 Red Hat Enterprise Linux ISO 镜像。
-
将镜像移动到
/var/lib/libvirt/images
目录中。
5.3.2. 从 ISO 镜像创建虚拟机 复制链接链接已复制到粘贴板!
流程
- 确保已为虚拟化启用主机机器。有关安装可升级软件包的信息和步骤,请参阅在现有 Red Hat Enterprise Linux 系统上安装虚拟化软件包
创建并启动基本 Red Hat Enterprise Linux 虚拟机。有关创建虚拟机的说明,请参阅创建虚拟机。
如果使用命令行创建虚拟机,请确保将默认内存和 CPU 设置为您所需的容量。将您的虚拟网络接口设置为 virtio。
下面是一个基本的命令行示例。
virt-install --name _vmname_ --memory 2048 --vcpus 2 --disk size=8,bus=virtio --location rhel-7.0-x86_64-dvd.iso --os-variant=rhel7.0
virt-install --name _vmname_ --memory 2048 --vcpus 2 --disk size=8,bus=virtio --location rhel-7.0-x86_64-dvd.iso --os-variant=rhel7.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用 virt-manager 应用程序创建虚拟机,请按照使用 virt-manager 创建虚拟机的步骤进行以下操作:
- 不要选择 Immediately Start VM。
- 将 Memory 和 Storage Size 设置为您需要的值。
- 在开始安装前,请确保将 Virtual Network Interface Settings 中的 Model 更改为 virtio,并将您的 vCPU 更改为您想要的虚拟机容量设置。
5.3.3. 完成 RHEL 安装 复制链接链接已复制到粘贴板!
执行以下步骤完成安装并在虚拟机启动后启用 root 访问。
流程
- 选择您要在安装过程中使用的语言。
在 Installation Summary 视图中:
- 点 Software Selection,选择 Minimal Install。
- 点 Done。
点击 Installation Destination 并检查 Storage Configuration 中的 Custom。
-
确保
/boot
验证至少有 500 MB。您可以使用剩余空间作为 root/
。 - 建议使用标准分区,但您也可以使用逻辑卷管理(LVM)。
- 您可以将 xfs、ext4 或者 ext3 用于文件系统。
- 完成更改后点 Done。
-
确保
- 点 Begin Installation。
- 设置 Root 密码。
-
重启虚拟机,然后在安装完成后以
root
身份登录。 配置镜像。
注意确定安装并启用
cloud-init
软件包。- 关闭虚拟机。
5.4. 将 RHEL 镜像上传到 GCP 复制链接链接已复制到粘贴板!
按照本节中的步骤,在主机机器中将您的镜像上传到 GCP
5.4.1. 在 GCP 上创建新项目 复制链接链接已复制到粘贴板!
完成以下步骤,在 GCP 上创建新项目。
先决条件
您必须使用 GCP 创建了一个帐户。如果没有,请参阅 Google Cloud。
流程
- 启动 GCP 控制台。
- 点击 Google Cloud Platform 右侧的下拉菜单。
- 在弹出菜单中点击 NEW PROJECT。
- 在 New Project 窗口中输入新项目的名称。
- 选择 Organization。如果需要,点击下拉菜单更改机构。
- 确认您的父机构或文件夹的 位置。如果需要,点 Browse 搜索并更改这个值。
点击 CREATE 创建新 GCP 项目。
注意安装 Google Cloud SDK 后,您可以使用
gcloud projects create
CLI 命令创建项目。下面是一个简单的例子。gcloud projects create my-gcp-project3 --name project3
gcloud projects create my-gcp-project3 --name project3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个示例创建项目 ID 为
my-gcp-project3
,项目名称为project3
。如需更多信息,请参阅 gcloud 项目创建。
其它资源
5.4.2. 安装 Google Cloud SDK 复制链接链接已复制到粘贴板!
完成以下步骤以安装 Google Cloud SDK。
先决条件
- 如果您还没有这样做,在 GCP 上创建一个项目。如需更多信息,请参阅在 Google Cloud Platform 上创建新项目。
- 确定您的主机系统包含 Python 2.7 或更高版本。如果没有安装,安装 Python 2.7。
流程
- 按照下载和提取 Google Cloud SDK 归档的 GCP 说明。详情请查看 GCP 文档中的 Linux Quickstart。
按照初始化 Google Cloud SDK 的说明。
注意初始化 Google Cloud SDK 后,您可以使用
gcloud
CLI 命令执行任务并获取有关项目和实例的信息。例如,您可以使用gcloud compute project-info describe --project <project-name>
命令显示项目信息。
5.4.3. 为 Google Compute Engine 创建 SSH 密钥 复制链接链接已复制到粘贴板!
执行以下步骤使用 GCE 生成并注册 SSH 密钥,以便您可以使用它的公共 IP 地址直接将 SSH 连接到实例。
流程
使用
ssh-keygen
命令生成用于 GCE 的 SSH 密钥对。ssh-keygen -t rsa -f ~/.ssh/google_compute_engine
# ssh-keygen -t rsa -f ~/.ssh/google_compute_engine
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 GCP Console Dashboard 页面 中,点击 Google Cloud Console 标题 左侧的 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。
5.4.4. 在 GCP Storage 中创建存储桶 复制链接链接已复制到粘贴板!
导入到 GCP 需要 GCP Storage Bucket。完成以下步骤以创建存储桶。
流程
如果您还没有登录到 GCP,请使用以下命令登录。
gcloud auth login
# gcloud auth login
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建存储桶。
gsutil mb gs://bucket_name
# gsutil mb gs://bucket_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意另外,您可以使用 Google Cloud Console 创建存储桶。如需更多信息,请参阅创建存储桶。
其它资源
5.4.5. 转换并上传您的镜像到您的 GCP 存储桶 复制链接链接已复制到粘贴板!
完成以下步骤,将您的镜像转换并上传到您的 GCP 存储桶。示例是代表,它们将 qcow2
镜像转换为 raw
格式,然后将该镜像 tar 用于上传。
流程
运行
qemu-img
命令转换您的镜像。转换的镜像必须具有名称disk.raw
。qemu-img convert -f qcow2 -O raw rhel-sample.qcow2 disk.raw
# qemu-img convert -f qcow2 -O raw rhel-sample.qcow2 disk.raw
Copy 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.raw
Copy 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_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
- 在 Google Cloud Platform 主屏幕中点击折叠菜单图标并选择 Storage,然后选择 Browser。
点存储桶的名称。
打包的镜像列在存储桶名称下。
注意您还可以使用 GCP 控制台上传您的镜像。要做到这一点,请点击存储桶的名称,然后点击 Upload 文件。
5.4.6. 从 GCP 存储桶中创建镜像 复制链接链接已复制到粘贴板!
执行以下步骤从 GCP 存储桶中的对象创建镜像。
流程
运行以下命令来为 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.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意另外,您可以使用 Google Cloud Console 创建镜像。如需更多信息,请参阅创建、删除和弃用自定义镜像。
另外,还可在 GCP Console 中找到该镜像。
- 点击 Google Cloud Console 标题左侧的 导航 菜单。
- 选择 Compute Engine ,然后选择 Images。
5.4.7. 从镜像创建 Google Compute Engine 实例 复制链接链接已复制到粘贴板!
完成以下步骤,使用 GCP 控制台配置 GCE 虚拟机实例。
以下流程提供了使用 GCP 控制台创建基本虚拟机实例的说明。如需有关 GCE 虚拟机实例及其配置选项的更多信息,,参阅创建并启动虚拟机实例。
流程
- 在 GCP Console Dashboard 页面 中,点击 Google Cloud Console 标题 左侧的 Navigation 菜单,选择 Compute Engine,然后选择 Images。
- 选择您的镜像。
- 点 Create Instance。
- 在 Create an instance 页面中,为您的实例输入一个 Name。
- 选择一个 Region 和 Zone。
- 选择满足或超过工作负载要求的机器配置。
- 确保引导磁盘指定了您的镜像名称。
- (可选)在 Firewall 下,选择 Allow HTTP 流量 或 Allow HTTPS 流量。
点 Create。
注意这些是创建基本实例所需的最小配置选项。根据您的应用程序要求查看其他选项。
- 在虚拟机实例中查找您的镜像。
在 GCP Console Dashboard 中点击 Google Cloud Console 标题 左侧的 Navigation 菜单,选择 Compute Engine,然后选择 VM 实例。
注意另外,您可以使用
gcloud compute instances create
CLI 命令从镜像创建 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-image
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个示例基于现有镜像
test-iso2-image
在区us-central1-a
中创建一个名为myinstance3
的虚拟机实例。如需更多信息,请参阅 gcloud 计算实例创建。
5.4.8. 连接到您的实例 复制链接链接已复制到粘贴板!
执行以下步骤使用其公共 IP 地址连接到 GCE 实例。
流程
运行以下命令以确保您的实例正在运行。该命令列出 GCE 实例的信息,包括实例是否在运行,以及正在运行的实例的公共 IP 地址。
gcloud compute instances list
# gcloud compute instances list
Copy 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 到您的实例的方法。如需更多信息,请参阅连接到实例。
其它资源
5.4.9. 附加红帽订阅 复制链接链接已复制到粘贴板!
完成以下步骤以附加您之前通过 Red Hat Cloud Access 程序启用的订阅。
先决条件
您必须已启用您的订阅。
流程
注册您的系统。
subscription-manager register --auto-attach
subscription-manager register --auto-attach
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 附加您的订阅。
- 您可以使用激活码来附加订阅。请参阅创建红帽客户门户网站激活码。
- 或者,您可以使用订阅池(池 ID)的 ID 手动附加订阅。请参阅通过 command Line 来附加和删除订阅。
第 6 章 在 Google Cloud Platform 上配置红帽高可用性集群 复制链接链接已复制到粘贴板!
本章包含使用 Google Compute Engine(GCE)虚拟机(VM)实例在 Google Cloud Platform(GCP)上配置红帽高可用性(HA)集群的信息和步骤。
本章包含为 GCP 设置环境的先决条件步骤。设置环境后,您可以创建并配置 GCP VM 实例。
本章还包含与创建 HA 集群相关的流程,该集群将单个节点转换为 GCP 上的 HA 节点集群。这包括在每个集群节点上安装高可用性软件包和代理、配置隔离以及安装 GCP 网络资源代理的步骤。
本章在很多位置使用了 GCP 文档。如需更多信息,请参阅引用的 GCP 文档。
先决条件
- 您需要安装 GCP 软件开发组件(SDK)。如需更多信息,请参阅安装 Google cloud SDK。
- 在 Red Hat Cloud Access 程序中启用您的订阅。Red Hat Cloud Access 程序允许您在红帽的完全支持下将红帽订阅从物理或内部系统移到 GCP。
- 您必须属于活跃的 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
其它资源
6.1. GCP 上的 Red Hat Enterprise Linux 镜像选项 复制链接链接已复制到粘贴板!
下表列出了镜像选择和镜像选项的不同。
镜像选项 | 订阅 | 示例情境 | 注意事项 |
---|---|---|---|
选择部署移至 GCP 的自定义镜像。 | 利用您现有的红帽订阅。 | 通过 Red Hat Cloud Access 程序启用订阅,上传您的自定义镜像并附加您的订阅。 | 订阅只包括红帽产品的成本;您还需要支付其他成本。 移至 GCP 的自定义镜像名为 "Cloud Access" 镜像,因为您利用了您现有的红帽订阅。红帽直接为 Cloud Access 镜像提供支持。 |
选择部署包含 RHEL 的现有 GCP 镜像。 | GCP 镜像包括一个红帽产品。 | 在 GCP Compute Engine 上启动实例时选择 RHEL 镜像,或者从 Google Cloud Platform Marketplace 中选择镜像。 | 根据 pay-as-you-go 模式每小时向 GCP 支付。这样的镜像称为 "on-demand" 镜像。GCP 通过支持协议支持 on-demand 镜像。 |
您无法将 on-demand 实例转换为 Red Hat Cloud Access 实例。要从 on-demand 镜像改为 Red Hat Cloud Access bring-your-own subscription(BYOS)镜像,创建一个新的 Red Hat Cloud Access 实例,并从您的 on-demand 实例迁移数据。在迁移数据后取消您的 on-demand 实例以避免出现重复账单。
本章的剩余部分包含与自定义镜像相关的信息和流程。
6.2. 所需的系统软件包 复制链接链接已复制到粘贴板!
本章的步骤假设您使用运行 Red Hat Enterprise Linux 的主机系统。要成功完成这些操作,主机系统必须安装以下软件包。
软件包 | 描述 | 命令 |
---|---|---|
qemu-kvm | 这个软件包提供用户级别的 KVM 模拟器,并可方便主机和客户机虚拟机间的通信。 |
|
qemu-img | 这个软件包为客户机虚拟机提供磁盘管理。qemu-img 软件包作为 qemu-kvm 软件包的依赖项安装。 | |
libvirt | 这个软件包为服务器和主机端提供与虚拟机监控程序、主机系统和主机系统以及处理库调用、管理虚拟机和控制虚拟机监控程序的 libvirtd 守护进程交互的服务器和主机库。 |
软件包 | 描述 | 命令 |
---|---|---|
virt-install |
这个软件包提供从命令行创建虚拟机的 |
|
libvirt-python | 这个软件包包含一个模块,它允许使用 Python 编程语言编写的应用程序使用 libvirt API 提供的接口。 | |
virt-manager | 这个软件包提供 virt-manager 工具,也称为 Virtual Machine Manager(VMM)。VMM 是一个图形化工具用于管理虚拟机。它使用 libvirt-client 库作为管理 API。 | |
libvirt-client |
这个软件包为访问 libvirt 服务器提供客户端 API 和库。libvirt-client 软件包包含 |
其它资源
6.3. 安装 HA 软件包和代理 复制链接链接已复制到粘贴板!
在所有节点上完成以下步骤,安装高可用性软件包和代理。
流程
禁用所有软件仓库。
subscription-manager repos --disable=*
# subscription-manager repos --disable=*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 RHEL 7 服务器和 RHEL 7 服务器 HA 软件仓库。
subscription-manager repos --enable=rhel-7-server-rpms subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
# subscription-manager repos --enable=rhel-7-server-rpms # subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新所有软件包。
yum update -y
# yum update -y
Copy 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-gcp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果内核已更新,重启机器。
reboot
# reboot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4. 配置 HA 服务 复制链接链接已复制到粘贴板!
在所有节点上完成以下步骤以配置高可用性服务。
流程
用户
hacluster
在上一步中的pcs
和pacemaker
安装中创建。在所有集群节点上为用户hacluster
创建密码。所有节点都使用相同的密码。passwd hacluster
# passwd hacluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果启用了
firewalld
服务,在 RHEL 中添加高可用性服务。firewall-cmd --permanent --add-service=high-availability firewall-cmd --reload
# firewall-cmd --permanent --add-service=high-availability # firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
pcs
服务并在引导时启用它。systemctl enable pcsd.service --now
# systemctl enable pcsd.service --now
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
确定
pcs
服务正在运行。systemctl is-active pcsd.service
# systemctl is-active pcsd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.5. 创建集群 复制链接链接已复制到粘贴板!
完成以下步骤以创建节点集群。
流程
在其中一个节点上,输入以下命令验证 pcs 用户
ha cluster
。指定集群中的每个节点的名称。pcs cluster auth _hostname1_ _hostname2_ _hostname3_ -u hacluster
# pcs cluster auth _hostname1_ _hostname2_ _hostname3_ -u hacluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs cluster auth node01 node02 node03 -u hacluster
[root@node01 ~]# pcs cluster auth node01 node02 node03 -u hacluster node01: Authorized node02: Authorized node03: Authorized
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建集群。
pcs cluster setup --name cluster-name _hostname1_ _hostname2_ _hostname3_
# pcs cluster setup --name cluster-name _hostname1_ _hostname2_ _hostname3_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
启用集群。
pcs cluster enable --all
# pcs cluster enable --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动集群。
pcs cluster start --all
# pcs cluster start --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6. 创建隔离设备 复制链接链接已复制到粘贴板!
对于大多数默认配置,GCP 实例名称和 RHEL 主机名是相同的。
完成以下步骤,从集群中的任何节点配置隔离。
流程
从集群中的任何节点获取 GCP 实例名称。请注意,输出还显示实例的内部 ID。
fence_gce --zone _gcp_ _region_ --project= _gcp_ _project_ -o list
# fence_gce --zone _gcp_ _region_ --project= _gcp_ _project_ -o list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
fence_gce --zone us-west1-b --project=rhel-ha-testing-on-gcp -o list
[root@rhel71-node-01 ~]# fence_gce --zone us-west1-b --project=rhel-ha-testing-on-gcp -o list 44358**********3181,InstanceName-3 40819**********6811,InstanceName-1 71736**********3341,InstanceName-2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建隔离设备。使用
pcmk_host-name
命令将 RHEL 主机名与实例 ID 映射。pcs stonith create _clusterfence_ fence_gce pcmk_host_map=_pcmk-hpst-map_ fence_gce zone=_gcp-zone_ project=_gcpproject_
# pcs stonith create _clusterfence_ fence_gce pcmk_host_map=_pcmk-hpst-map_ fence_gce zone=_gcp-zone_ project=_gcpproject_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs stonith create fencegce fence_gce pcmk_host_map="node01:node01-vm;node02:node02-vm;node03:node03-vm" project=hacluster zone=us-east1-b
[root@node01 ~]# pcs stonith create fencegce fence_gce pcmk_host_map="node01:node01-vm;node02:node02-vm;node03:node03-vm" project=hacluster zone=us-east1-b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
测试其他其中一个节点的隔离代理。
pcs stonith fence gcp nodename
# pcs stonith fence gcp nodename
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查状态以验证该节点是否已隔离。
watch pcs status
# watch pcs status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
例如:
6.7. 配置 GCP 节点授权 复制链接链接已复制到粘贴板!
配置 cloud SDK 工具,使用您的帐户凭证访问 GCP。
流程
在每个节点上输入以下命令,使用项目 ID 和帐户凭证初始化每个节点。
gcloud-ra init
# gcloud-ra init
6.8. 配置 GCP 网络资源代理 复制链接链接已复制到粘贴板!
集群使用附加到二级 IP 地址(从 IP)的 GCP 网络资源代理到正在运行的实例。这是一个浮动 IP 地址,可在集群中的不同节点间传递。
流程
输入以下命令查看 GCP 虚拟 IP 地址资源代理(gcp-vpc-move-vip)描述。这显示了这个代理的选项和默认操作。
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_ --group _group-name_ --group _networking-group_
# pcs resource create aliasip gcp-vpc-move-vip alias_ip=_UnusedIPaddress/CIDRblock_ --group _group-name_ --group _networking-group_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于管理节点上 IP 的
IPaddr2
资源。pcs resource create vip IPaddr2 nic=_interface_ ip=_AliasIPaddress_ cidr_netmask=32 --group _group-name_ --group _networking-group_
# pcs resource create vip IPaddr2 nic=_interface_ ip=_AliasIPaddress_ cidr_netmask=32 --group _group-name_ --group _networking-group_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对
vipgrp
下的网络资源进行分组。pcs resource group add vipgrp aliasip vip
# pcs resource group add vipgrp aliasip vip
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
验证资源是否已启动,并分组到
vipgrp
下。pcs status
# pcs status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证资源是否可以移到另一个节点。
pcs resource move vip _Node_
# pcs resource move vip _Node_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs resource move vip rhel71-node-03
# pcs resource move vip rhel71-node-03
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
vip
是否在不同节点上成功启动。pcs status
# pcs status
Copy 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_=_SecondarySubnetRange_
Copy 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/24
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
aliasip
资源。在二级子网地址范围内创建一个未使用的内部 IP 地址。在命令中包含 CIDR 块。pcs resource create aliasip gcp-vpc-move-vip alias_ip=_UnusedIPaddress/CIDRblock_ --group _group-name_ --group _networking-group_
# pcs resource create aliasip gcp-vpc-move-vip alias_ip=_UnusedIPaddress/CIDRblock_ --group _group-name_ --group _networking-group_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于管理节点上 IP 的
IPaddr2
资源。pcs resource create vip IPaddr2 nic=_interface_ ip=_AliasIPaddress_ cidr_netmask=32 --group _group-name_ --group _networking-group_
# pcs resource create vip IPaddr2 nic=_interface_ ip=_AliasIPaddress_ cidr_netmask=32 --group _group-name_ --group _networking-group_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
验证资源是否已启动,并分组到
vipgrp
下。pcs status
# pcs status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证资源是否可以移到另一个节点。
pcs resource move vip _Node_
# pcs resource move vip _Node_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
pcs resource move vip rhel71-node-03
[root@rhel71-node-01 ~]# pcs resource move vip rhel71-node-03
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
vip
是否在不同节点上成功启动。pcs status
# pcs status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow