65.9K
CodeProject 正在变化。 阅读更多。
Home

Azure Arc 启用的服务器(第二部分):设置 Azure Arc 启用的服务器

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2022 年 1 月 21 日

CPOL

9分钟阅读

viewsIcon

5805

本文将提供一个实际操作教程,指导用户如何开始使用 Azure Arc 启用服务器。

上一篇文章中,我们介绍了 Azure Arc 作为将其他环境中的资源集成到 Microsoft Azure 中的一种方式。在本文中,我们将把两个不同的外部服务器集成到 Microsoft Azure 中,以说明 Arc 在某些用例中的灵活性。

第一台服务器是另一家云提供商设置的虚拟机。在这种情况下,它是一个基于 Ubuntu 20.04 的映像。它有一个公共 IP 地址,并通过该云提供商的集成控制台访问。或者,我们也可以通过 SSH 隧道连接到它。

我们将使用的另一台服务器是托管在本地的虚拟机。这台虚拟机在其操作系统上运行 Windows Server 2012 R2,并使用 Plesk 虚拟化环境。与 Ubuntu 虚拟机一样,它也有一个公共 IP 地址。然而,与 Ubuntu 虚拟机不同的是,我们将通过远程桌面协议 (RDP) 连接到它。

首先,我们将这些添加到 Azure。请确保您已满足上一篇文章中介绍的要求。最重要的是,请确保您的 Azure 订阅已注册 HybridComputeGuestConfiguration 提供程序。

在 Azure Arc 中添加基于 Linux 的服务器

本教程的假设是您已经在一个地方创建了虚拟机。例如,您可以选择自己喜欢的云提供商来运行虚拟机映像,例如 Ubuntu 20.04 (LTS),如下所示

您可以自由选择操作系统。目前官方支持的操作系统的列表非常丰富,但您应确认没有任何例外情况适用于您。

您需要的最重要信息是主机名和公共 IP。即使没有公共 IP 的情况,只要服务器可以从外部访问(例如,通过某个代理或跳转主机),我们仍然可以添加该服务器。

我们选择的云提供商显示虚拟机如下

在这种情况下,我们可以方便地通过云提供商门户集成的控制台连接到虚拟机。

在服务器上安装 Azure 连接计算机代理

此时,我们需要安装连接计算机代理,Microsoft 在其文档中提供了详细说明

在 Linux 计算机上安装代理之前,我们需要将 Microsoft 的软件包存储库添加到可用存储库列表中。由于我们选择 Ubuntu 作为操作系统,我们需要更新我们的高级软件包工具 (APT) 以正确列出和使用软件包。为此,我们在另一家云提供商门户上启动控制台窗口

首先,通过运行以下命令下载软件包存储库密钥以与其安全通信

curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc

接下来,通过运行以下命令添加存储库并更新本地软件包存储库的信息

sudo apt-add-repository https://packages.microsoft.com/ubuntu/20.04/prod
sudo apt-get update

然后,安装 Azure 连接计算机代理

sudo apt-get install azcmagent

代理运行后,就可以前往 Azure 门户并添加我们的服务器了。

将服务器添加到 Azure Arc

在 Azure 门户中选择Azure Arc。如果菜单中尚未出现,请搜索“Azure Arc”并从搜索结果中选择它。您应该会看到一个显示欢迎您使用 Azure Arc 的概述屏幕。

选择服务器以打开概述页面,然后选择添加以添加另一台服务器。

Azure 提供了一个小脚本片段来添加服务器,我们将在运行连接计算机代理的服务器上调用它。

有多种生成脚本的选项。最直接的选项是生成一个可以调用一次的脚本。这种方法通常不理想,因为如果我们有大量服务器需要加入,我们需要为每台服务器单击此选项。这肯定不是我们想要的省时之举。在这种情况下,第二种选项——为多台服务器创建脚本——更有意义。

但是,为多台服务器创建脚本是一个更复杂的过程,并且还有一些额外的先决条件。最重要的是,必须有一个服务主体可用。服务主体是控制您的 Azure 订阅所必需的。它主要用于协商新服务器的集成,但对于使整个过程自动化是必需的。

最后,还有另外两个更专业的选项,在某些特殊情况下非常方便:当服务器已运行更新管理服务时,以及

当服务器已在 VMWare sphere 环境中运行时。在第一种情况下,Azure 已经知道了服务器,这使得集成非常容易。在第二种情况下,可以通过一个名为Azure Migrate 的工具直接集成服务器。

生成脚本

让我们生成一个脚本来添加单个服务器

在对话框中,我们首先会收到有关添加服务器先决条件的通知。在我们的例子中,我们已经满足了这些条件。

现在是时候获取有关服务器的一些详细信息了,我们将使用这些信息来生成正确的脚本。

首先,请确保选择正确的操作系统

您还需要确保正确选择了连接方法。在我们的例子中,服务器上有一个公共 IP 地址。这意味着可以使用代理暴露的公共终结点。

下一部分允许我们为服务器选择一些标记。如果需要添加多台服务器,这会非常方便。它允许我们按数据中心、位置以及我们可能发现有用的许多其他详细信息进行过滤。在本系列中,我们只添加两台服务器,所以我们暂时可以跳过这些标记。

最后,我们得到一个可以运行的脚本。脚本可以下载或复制。我们建议逐行复制,以便在实际调用脚本之前了解每一行的作用。

检查脚本

这是 Azure Arc 为我们生成的用于添加服务器的简短脚本

# Download the installation package
wget https://aka.ms/azcmagent -O ~/install_linux_azcmagent.sh

# Install the hybrid agent
bash ~/install_linux_azcmagent.sh

# Run connect command
azcmagent connect --resource-group "arc-sample" --tenant-id "<tenant>" --location "westeurope" --subscription-id "<subscription>" --cloud "AzureCloud" --correlation-id "<guid>"

if [ $? = 0 ]; then echo "\033[33mTo view your onboarded server(s), navigate to https://portal.azure.com/#blade/HubsExtension/BrowseResource/resourceType/Microsoft.HybridCompute%2Fmachines\033[m"; fi

现在,让我们逐块检查它。

第一个命令下载脚本并将其保存在当前用户的家目录中

wget https://aka.ms/azcmagent -O ~/install_linux_azcmagent.sh

然后,调用脚本来安装混合代理

bash ~/install_linux_azcmagent.sh

最后,调用 azcmagent 工具使用我们的订阅 ID 连接到选定的资源组(例如,前一张截图中的“arc-sample”)。请注意关联 ID,它只工作一次。

# Run connect command
azcmagent connect --resource-group "arc-sample" --tenant-id "<tenant>" --location "westeurope" --subscription-id "<subscription>" --cloud "AzureCloud" --correlation-id "<guid>"

if [ $? = 0 ]; then echo "\033[33mTo view your onboarded server(s), navigate to https://portal.azure.com/#blade/HubsExtension/BrowseResource/resourceType/Microsoft.HybridCompute%2Fmachines\033[m"; fi

运行脚本

通过将脚本复制并粘贴到服务器的终端中来运行脚本。在运行 azcmagent connect 命令时,您需要登录 Azure 门户以确认连接。这通过一个 URL 完成——通常类似于 Microsoft 的设备登录页面,使用命令行中显示的验证码。

如果您登录成功,您将看到一条消息,指向 Azure 门户,其中服务器已出现在列表中

在 Azure 门户中检查 Ubuntu 虚拟机

我们在 Azure 门户中的 Ubuntu 虚拟机的概述页面如下所示

我们在“Essentials”部分已经看到了一些已填充的信息。

列出的信息包括以下详细信息

  • 操作系统名称、类型和版本
  • 计算机名称、完全限定域名 (FQDN)、制造商和型号
  • 域名(如果加入 Active Directory 域)
  • 连接计算机代理版本
  • Active Directory 和 DNS 完全限定域名 (FQDN)
  • UUID(BIOS ID)
  • 连接计算机代理心跳
  • 连接计算机代理版本
  • 托管标识的公钥
  • 策略合规性状态和详细信息(如果使用来宾配置策略)
  • 已安装 SQL Server(布尔值)
  • 群集资源 ID(适用于 Azure Stack HCI 节点)
  • 硬件制造商
  • 硬件型号
  • 云提供商
  • Amazon Web Services (AWS) 账户 ID、实例 ID 和区域(如果运行在 AWS 中)

现在,让我们用 Windows 计算机实现相同的结果。

在 Azure Arc 中添加基于 Windows 的服务器

在 Azure Arc 中添加基于 Windows 的服务器的过程与添加基于 Linux 的服务器几乎相同。但是,它在几个关键细节上有所不同——最值得注意的是,我们将通过 RDP 连接。

安装 Azure 连接计算机代理

与我们设置的 Linux 虚拟机一样,通过安装连接计算机代理开始此过程。

通过 RDP 连接到 Windows 虚拟机并打开 Web 浏览器。在浏览器中,导航到“https://aka.ms/AzureConnectedMachineAgent”开始下载 MSI 文件。

像安装任何标准 Windows 软件一样安装代理。打开下载的 MSI 文件并按照说明进行操作。

以下屏幕截图显示了如果您选择 Windows 作为操作系统,脚本的外观

在这里,我们看到脚本现在正在使用 PowerShell 来运行其命令。

检查脚本

为我们的 Windows 计算机生成的脚本看起来略有不同,但结构相似。

# Download the installation package
Invoke-WebRequest -Uri "https://aka.ms/azcmagent-windows" -TimeoutSec 30 -OutFile "$env:TEMP\install_windows_azcmagent.ps1"

& "$env:TEMP\install_windows_azcmagent.ps1"
if($LASTEXITCODE -ne 0) {
    throw "Failed to install the hybrid agent"
}

#Install the hybrid agent
& "$env:ProgramW6432\AzureConnectedMachineAgent\azcmagent.exe" connect --resource-group "arc-sample" --tenant-id "<tenant>" --location "westeurope" --subscription-id "<subscription>" --cloud "AzureCloud" --correlation-id "<guid>"

#Run connect command
if($LastExitCode -eq 0){Write-Host -ForegroundColor yellow "To view your onboarded server(s), navigate to https://portal.azure.com/#blade/HubsExtension/BrowseResource/resourceType/Microsoft.HybridCompute%2Fmachines"}

与 Linux 虚拟机一样,让我们逐行检查脚本。

我们首先下载安装包并将其移至临时文件夹

Invoke-WebRequest -Uri "https://aka.ms/azcmagent-windows" -TimeoutSec 30 -OutFile "$env:TEMP\install_windows_azcmagent.ps1"

然后,从临时文件夹运行安装脚本

& "$env:TEMP\install_windows_azcmagent.ps1"
if($LASTEXITCODE -ne 0) {
    throw "Failed to install the hybrid agent"
}

最后,调用 azcmagent.exe 工具的 connect 子命令来建立连接。

此时,我们需要再次打开设备登录页面以确认连接到我们的 Azure 帐户和订阅。

& "$env:ProgramW6432\AzureConnectedMachineAgent\azcmagent.exe" connect --resource-group "arc-sample" --tenant-id "<tenant>" --location "westeurope" --subscription-id "<subscription>" --cloud "AzureCloud" --correlation-id "<guid>"
 
if($LastExitCode -eq 0){Write-Host -ForegroundColor yellow "To view your onboarded server(s), navigate to https://portal.azure.com/#blade/HubsExtension/BrowseResource/resourceType/Microsoft.HybridCompute%2Fmachines"}

根据您的虚拟机年龄,您可能需要实际允许 TLS 1.2 才能运行生成的脚本。在我们的例子中,这是必要的,因为它是一个 Windows Server 2012 R2 实例。在 PowerShell 中,我们需要运行以下命令

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

现在,我们可以运行命令了。与之前一样,您应该注意 devicelogin 消息。它可能看起来像这样

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code CFVTXMCHY to authenticate.

成功验证后,您将看到一条类似于以下内容的が表示

time="2021-12-02T14:46:22+01:00" level=info msg="The resource was successfully  onboarded in Azure" VM Id=37eb5b6d-3720-408f-89c0-afabcab94cf3

现在我们已经加入了两台服务器。服务器列表越来越充实。

在这里,Azure Arc 显示的信息字段与我们的 Ubuntu 虚拟机相同——当然,只是值不同。

结论

使用我们生成的脚本,在 Azure Arc 中添加新服务器非常简单。需要牢记的最重要的事情是您的虚拟机的操作系统和连接方法先决条件。在满足这些条件后,只需运行 Azure Arc 为我们生成的脚本即可加入来自不同云提供商、运行 Linux 或 Windows 的服务器。继续阅读本系列的第三篇文章(也是最后一篇),了解如何设置安全、Sentinel 和运行手册。

要了解更多关于 Azure Arc 启用服务器的信息,请查看 Azure Arc 启用服务器概述

© . All rights reserved.