自动执行移动服务安装

本文介绍了如何在 Azure Site Recovery 中自动安装和更新移动服务代理。

如要部署 Site Recovery 以实现本地 VMware VM 和物理服务器灾难恢复到 Azure,请在每个要复制的计算机上安装移动服务代理。 移动服务可以捕获计算机上的数据写入,并将其转发到 Site Recovery 进程服务器进行复制。 可以通过以下几种方式部署移动服务:

  • 推送安装:在 Azure 门户中为计算机启用复制后,让 Site Recovery 安装移动服务代理。
  • 手动安装:在每台计算机上手动安装移动服务。 详细了解有关推送和手动安装的信息。
  • 自动部署:使用 Microsoft Configuration Manager 等软件部署工具或 JetPatch 等第三方工具自动完成安装。 了解详细信息

如果出现以下情况,自动安装和更新可以提供解决方案:

  • 组织不允许在受保护的服务器上进行推送安装。
  • 公司策略要求定期更改密码。 必须为推送安装指定密码。
  • 安全策略不允许为特定计算机添加防火墙例外项。
  • 你是托管服务提供商,且不想向 Site Recovery 提供进行推送安装所需的客户计算机凭据。
  • 你需要将代理安装同时扩展到大量服务器。
  • 需要在计划内维护时段内规划安装和升级。

先决条件

要自动执行安装,需要完成以下各项:

准备自动部署

下表总结了自动执行移动服务部署的工具和过程。

工具 详细信息 说明
配置管理器 1.验证是否已满足上述先决条件

2.通过设置源环境来部署灾难恢复,包括使用 OVF 模板下载 OVA 文件以将 Site Recovery 配置服务器部署为 VMware VM。

3.将配置服务器注册到 Site Recovery 服务,设置目标 Azure 环境,并配置复制策略。

4.对于移动服务自动部署,请创建包含配置服务器密码和移动服务安装文件的网络共享。

5.创建包含安装或更新的 Configuration Manager 包,并为移动服务部署做好准备。

6.然后,可以为已安装移动服务的计算机启用复制到 Azure 选项。
通过 Configuration Manager 自动安装
JetPatch 1.验证是否已满足上述先决条件

2.设置源环境以部署灾难恢复,包括使用 OVF 模板在 Site Recovery 环境中下载和部署用于 Azure Site Recovery 的 JetPatch 代理程序管理器。

3.将配置服务器注册到 Site Recovery,设置目标 Azure 环境,并配置复制策略。

4.对于自动部署,初始化并完成 JetPatch 代理程序管理器配置。

5.在 JetPatch 中,可以创建 Site Recovery 策略以自动部署和升级移动服务代理。

6.然后,可以为已安装移动服务的计算机启用复制到 Azure 选项。
通过 JetPatch 代理程序管理器自动安装

在 JetPatch 中排查代理安装问题

通过 Configuration Manager 自动安装

准备安装文件

  1. 确保已满足先决条件。

  2. 创建可以通过配置服务器上运行的计算机访问的安全网络文件共享(SMB 共享)。

  3. 在 Configuration Manager 中,对要安装或更新移动服务的服务器进行分类。 其中一个集合应包含所有 Windows 服务器,而另一个集合应包含所有 Linux 服务器。

  4. 在网络共享上,创建文件夹:

    • 若要在 Windows 计算机上进行安装,请创建一个名为“MobSvcWindows”的文件夹。
    • 若要在 Linux 计算机上进行安装,请创建一个名为“MobSvcLinux”的文件夹。
  5. 登录到配置服务器计算机。

  6. 在配置服务器计算机上,打开管理命令提示符。

  7. 若要生成密码文件,请运行以下命令:

    cd %ProgramData%\ASR\home\svsystems\bin
    genpassphrase.exe -v > MobSvc.passphrase
    
  8. MobSvc.passphrase 文件复制到 Windows 文件夹和 Linux 文件夹。

  9. 若要浏览到包含安装文件的文件夹,请运行以下命令:

    cd %ProgramData%\ASR\home\svsystems\pushinstallsvc\repository
    
  10. 将以下安装文件复制到网络共享:

    • 对于 Windows,请将 Microsoft-ASR_UA_version_Windows_GA_date_Release.exe 复制到 MobSvcWindows。
    • 对于 Linux,请将以下文件复制到 MobSvcLinux:
      • Microsoft-ASR_UARHEL6-64release.tar.gz
      • Microsoft-ASR_UARHEL7-64release.tar.gz
      • Microsoft-ASR_UASLES11-SP3-64release.tar.gz
      • Microsoft-ASR_UASLES11-SP4-64release.tar.gz
      • Microsoft-ASR_UAOL6-64release.tar.gz
      • Microsoft-ASR_UAUBUNTU-14.04-64release.tar.gz
  11. 按照以下过程所述,将代码复制到 Windows 或 Linux 文件夹。 假设:

    • 配置服务器的 IP 地址是 192.168.3.121
    • 安全的网络文件共享是 \\ContosoSecureFS\MobilityServiceInstallers

将代码复制到 Windows 文件夹

复制以下代码:

  • 将该代码作为 install.bat 保存在 MobSvcWindows 文件夹中。
  • 将此脚本中的 [CSIP] 占位符替换为配置服务器的实际 IP 地址值。
  • 此脚本支持移动服务代理的全新安装和已安装代理的更新。
Time /t >> C:\Temp\logfile.log
REM ==================================================
REM ==== Clean up the folders ========================
RMDIR /S /q %temp%\MobSvc
MKDIR %Temp%\MobSvc
MKDIR C:\Temp
REM ==================================================

REM ==== Copy new files ==============================
COPY M*.* %Temp%\MobSvc
CD %Temp%\MobSvc
REN Micro*.exe MobSvcInstaller.exe
REM ==================================================

REM ==== Extract the installer =======================
MobSvcInstaller.exe /q /x:%Temp%\MobSvc\Extracted
REM ==== Wait 10s for extraction to complete =========
TIMEOUT /t 10
REM =================================================

REM ==== Perform installation =======================
REM =================================================

CD %Temp%\MobSvc\Extracted
whoami >> C:\Temp\logfile.log
SET PRODKEY=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
REG QUERY %PRODKEY%\{275197FC-14FD-4560-A5EB-38217F80CBD1}
IF NOT %ERRORLEVEL% EQU 0 (
	echo "Product is not installed. Goto INSTALL." >> C:\Temp\logfile.log
	GOTO :INSTALL
) ELSE (
	echo "Product is installed." >> C:\Temp\logfile.log

	echo "Checking for Post-install action status." >> C:\Temp\logfile.log
	GOTO :POSTINSTALLCHECK
)

:POSTINSTALLCHECK
	REG QUERY "HKLM\SOFTWARE\Wow6432Node\InMage Systems\Installed Products\5" /v "PostInstallActions" | Find "Succeeded"
	If %ERRORLEVEL% EQU 0 (
		echo "Post-install actions succeeded. Checking for Configuration status." >> C:\Temp\logfile.log
		GOTO :CONFIGURATIONCHECK
	) ELSE (
		echo "Post-install actions didn't succeed. Goto INSTALL." >> C:\Temp\logfile.log
		GOTO :INSTALL
	)

:CONFIGURATIONCHECK
	REG QUERY "HKLM\SOFTWARE\Wow6432Node\InMage Systems\Installed Products\5" /v "AgentConfigurationStatus" | Find "Succeeded"
	If %ERRORLEVEL% EQU 0 (
		echo "Configuration has succeeded. Goto UPGRADE." >> C:\Temp\logfile.log
		GOTO :UPGRADE
	) ELSE (
		echo "Configuration didn't succeed. Goto CONFIGURE." >> C:\Temp\logfile.log
		GOTO :CONFIGURE
	)


:INSTALL
	echo "Perform installation." >> C:\Temp\logfile.log
    UnifiedAgent.exe /Role MS /InstallLocation "C:\Program Files (x86)\21Vianet Azure Site Recovery" /Platform "VmWare" /Silent
	IF %ERRORLEVEL% EQU 0 (
	    echo "Installation has succeeded." >> C:\Temp\logfile.log
		(GOTO :CONFIGURE)
    ) ELSE (
		echo "Installation has failed." >> C:\Temp\logfile.log
		GOTO :ENDSCRIPT
	)

:CONFIGURE
	echo "Perform configuration." >> C:\Temp\logfile.log
    cd "C:\Program Files (x86)\21Vianet Azure Site Recovery\agent"
	UnifiedAgentConfigurator.exe  /CSEndPoint "[CSIP]" /PassphraseFilePath %Temp%\MobSvc\MobSvc.passphrase
	IF %ERRORLEVEL% EQU 0 (
	    echo "Configuration has succeeded." >> C:\Temp\logfile.log
    ) ELSE (
		echo "Configuration has failed." >> C:\Temp\logfile.log
	)
	GOTO :ENDSCRIPT

:UPGRADE
	echo "Perform upgrade." >> C:\Temp\logfile.log
	UnifiedAgent.exe /Platform "VmWare" /Silent
	IF %ERRORLEVEL% EQU 0 (
	    echo "Upgrade has succeeded." >> C:\Temp\logfile.log
    ) ELSE (
		echo "Upgrade has failed." >> C:\Temp\logfile.log
	)
	GOTO :ENDSCRIPT

:ENDSCRIPT
	echo "End of script." >> C:\Temp\logfile.log

将代码复制到 Linux 文件夹

复制以下代码:

  • 将该代码作为 install_linux.sh 保存在 MobSvcLinux 文件夹中。
  • 将此脚本中的 [CSIP] 占位符替换为配置服务器的实际 IP 地址值。
  • 此脚本支持移动服务代理的全新安装和已安装代理的更新。
#!/usr/bin/env bash

rm -rf /tmp/MobSvc
mkdir -p /tmp/MobSvc
INSTALL_DIR='/usr/local/ASR'
VX_VERSION_FILE='/usr/local/.vx_version'

echo "=============================" >> /tmp/MobSvc/sccm.log
echo `date` >> /tmp/MobSvc/sccm.log
echo "=============================" >> /tmp/MobSvc/sccm.log

if [ -f /etc/oracle-release ] && [ -f /etc/redhat-release ]; then
    if grep -q 'Oracle Linux Server release 6.*' /etc/oracle-release; then
        if uname -a | grep -q x86_64; then
            OS="OL6-64"
            echo $OS >> /tmp/MobSvc/sccm.log
            cp *OL6*.tar.gz /tmp/MobSvc
        fi
    fi
elif [ -f /etc/redhat-release ]; then
    if grep -q 'Red Hat Enterprise Linux Server release 6.* (Santiago)' /etc/redhat-release || \
        grep -q 'CentOS Linux release 6.* (Final)' /etc/redhat-release || \
        grep -q 'CentOS release 6.* (Final)' /etc/redhat-release; then
        if uname -a | grep -q x86_64; then
            OS="RHEL6-64"
            echo $OS >> /tmp/MobSvc/sccm.log
            cp *RHEL6*.tar.gz /tmp/MobSvc
        fi
    elif grep -q 'Red Hat Enterprise Linux Server release 7.* (Maipo)' /etc/redhat-release || \
        grep -q 'CentOS Linux release 7.* (Core)' /etc/redhat-release; then
        if uname -a | grep -q x86_64; then
            OS="RHEL7-64"
            echo $OS >> /tmp/MobSvc/sccm.log
            cp *RHEL7*.tar.gz /tmp/MobSvc
                fi
    fi
elif [ -f /etc/SuSE-release ] && grep -q 'VERSION = 11' /etc/SuSE-release; then
    if grep -q "SUSE Linux Enterprise Server 11" /etc/SuSE-release && grep -q 'PATCHLEVEL = 3' /etc/SuSE-release; then
        if uname -a | grep -q x86_64; then
            OS="SLES11-SP3-64"
            echo $OS >> /tmp/MobSvc/sccm.log
            cp *SLES11-SP3*.tar.gz /tmp/MobSvc
        fi
    elif grep -q "SUSE Linux Enterprise Server 11" /etc/SuSE-release && grep -q 'PATCHLEVEL = 4' /etc/SuSE-release; then
        if uname -a | grep -q x86_64; then
            OS="SLES11-SP4-64"
            echo $OS >> /tmp/MobSvc/sccm.log
            cp *SLES11-SP4*.tar.gz /tmp/MobSvc
        fi
    fi
elif [ -f /etc/lsb-release ] ; then
    if grep -q 'DISTRIB_RELEASE=14.04' /etc/lsb-release ; then
       if uname -a | grep -q x86_64; then
           OS="UBUNTU-14.04-64"
           echo $OS >> /tmp/MobSvc/sccm.log
           cp *UBUNTU-14*.tar.gz /tmp/MobSvc
       fi
    fi
else
    exit 1
fi

if [ -z "$OS" ]; then
    exit 1
fi

Install()
{
    echo "Perform Installation." >> /tmp/MobSvc/sccm.log
    ./install -q -d ${INSTALL_DIR} -r Agent -v VmWare
    RET_VAL=$?
    echo "Installation Returncode: $RET_VAL" >> /tmp/MobSvc/sccm.log
    if [ $RET_VAL -eq 0 ]; then
        echo "Installation has succeeded. Proceed to configuration." >> /tmp/MobSvc/sccm.log
        Configure
    else
        echo "Installation has failed." >> /tmp/MobSvc/sccm.log
        exit $RET_VAL
    fi
}

Configure()
{
    echo "Perform configuration." >> /tmp/MobSvc/sccm.log
    ${INSTALL_DIR}/Vx/bin/UnifiedAgentConfigurator.sh -i [CSIP] -P MobSvc.passphrase
    RET_VAL=$?
    echo "Configuration Returncode: $RET_VAL" >> /tmp/MobSvc/sccm.log
    if [ $RET_VAL -eq 0 ]; then
        echo "Configuration has succeeded." >> /tmp/MobSvc/sccm.log
    else
        echo "Configuration has failed." >> /tmp/MobSvc/sccm.log
        exit $RET_VAL
    fi
}

Upgrade()
{
    echo "Perform Upgrade." >> /tmp/MobSvc/sccm.log
    ./install -q -v VmWare
    RET_VAL=$?
    echo "Upgrade Returncode: $RET_VAL" >> /tmp/MobSvc/sccm.log
    if [ $RET_VAL -eq 0 ]; then
        echo "Upgrade has succeeded." >> /tmp/MobSvc/sccm.log
    else
        echo "Upgrade has failed." >> /tmp/MobSvc/sccm.log
        exit $RET_VAL
    fi
}

cp MobSvc.passphrase /tmp/MobSvc
cd /tmp/MobSvc

tar -zxvf *.tar.gz

if [ -e ${VX_VERSION_FILE} ]; then
    echo "${VX_VERSION_FILE} exists. Checking for configuration status." >> /tmp/MobSvc/sccm.log
    agent_configuration=$(grep ^AGENT_CONFIGURATION_STATUS "${VX_VERSION_FILE}" | cut -d"=" -f2 | tr -d " ")
    echo "agent_configuration=$agent_configuration" >> /tmp/MobSvc/sccm.log
     if [ "$agent_configuration" == "Succeeded" ]; then
        echo "Agent is already configured. Proceed to Upgrade." >> /tmp/MobSvc/sccm.log
        Upgrade
    else
        echo "Agent is not configured. Proceed to Configure." >> /tmp/MobSvc/sccm.log
        Configure
    fi
else
    Install
fi

cd /tmp

创建包

  1. 登录到“Configuration Manager 控制台”,转到“软件库”>“应用程序管理”>“包” 。

  2. 右键单击“包”>“创建包” 。

  3. 提供包详细信息,包括“名称”、“说明”、“制造商”、“语言”和“版本”。

  4. 选中“此包包含源文件” 。

  5. 单击“浏览” ,然后选择包含相关安装程序的网络共享和文件夹(MobSvcWindowsMobSvcLinux)。 然后,选择“下一步” 。

    Screenshot of Create Package and Program wizard

  6. 在“选择要创建的程序类型”页上,选择“标准程序”>“下一步” 。

    Screenshot of Create Package and Program wizard that shows the Standard Program option.

  7. 在“指定此标准程序的相关信息”页上,指定以下值 :

    参数 Windows 值 Linux 值
    名称 安装 Azure 移动服务 (Windows) 安装 Azure 移动服务 (Linux)。
    命令行 install.bat ./install_linux.sh
    程序可运行 用户是否已登录 用户是否已登录
    其他参数 使用默认设置 使用默认设置

    Screenshot that shows the information that you can specify for the standard program.

  8. 在“指定此标准程序的要求” 中,执行以下任务:

    • 对于 Windows 计算机,选择“此程序只能在指定的平台上运行” 。 然后,选择支持的 Windows 操作系统并选择“下一步” 。
    • 对于 Linux 计算机,选择“此程序可在任何平台上运行” 。 然后,选择“下一步” 。
  9. 完成该向导。

部署包

  1. 在 Configuration Manager 控制台中,右键单击包,然后选择“分发内容” 。

    Screenshot of Configuration Manager console

  2. 选择包应复制到的分发点。 了解详细信息

  3. 完成该向导。 包随后开始复制到指定的分发点。

  4. 完成包分发后,右键单击“包”>“部署”。

    Screenshot of the Configuration Manager console that shows the Deploy menu option.

  5. 选择之前创建的 Windows 或 Linux 设备集合。

  6. 在“指定内容目标”页上,选择“分发点” 。

  7. 在“指定设置以控制此软件的部署方式”页上,将“目的”设置为“必需” 。

    Screenshot of Deploy Software wizard

  8. 在“为此部署指定计划”中设置计划 。 了解详细信息

    • 移动服务按指定计划进行安装。
    • 为了避免不必要的重新启动,请在每月的维护时段或软件更新时段计划包安装。
  9. 在“分发点”页上,配置设置并完成向导 。

  10. 在 Configuration Manager 控制台中监视部署进度。 转到“监视”>“部署”><你的包名称>

卸载移动服务

可以创建用于卸载移动服务的 Configuration Manager 包。 例如,以下脚本将卸载移动服务:

Time /t >> C:\logfile.log
REM ==================================================
REM ==== Check if Mob Svc is already installed =======
REM ==== If not installed no operation required ========
REM ==== Else run uninstall command =====================
REM ==== {275197FC-14FD-4560-A5EB-38217F80CBD1} is ====
REM ==== guid for Mob Svc Installer ====================
whoami >> C:\logfile.log
NET START | FIND "InMage Scout Application Service"
IF  %ERRORLEVEL% EQU 1 (GOTO :INSTALL) ELSE GOTO :UNINSTALL
:NOOPERATION
                echo "No Operation Required." >> c:\logfile.log
                GOTO :ENDSCRIPT
:UNINSTALL
                echo "Uninstall" >> C:\logfile.log
                MsiExec.exe /qn /x {275197FC-14FD-4560-A5EB-38217F80CBD1} /L+*V "C:\ProgramData\ASRSetupLogs\UnifiedAgentMSIUninstall.log"
:ENDSCRIPT

后续步骤

为 VM 启用复制