执行 SQL Server 大数据群集的脱机部署

重要

Microsoft SQL Server 2019 大数据群集附加产品将停用。 对 SQL Server 2019 大数据群集的支持将于 2025 年 2 月 28 日结束。 具有软件保障的 SQL Server 2019 的所有现有用户都将在平台上获得完全支持,在此之前,该软件将继续通过 SQL Server 累积更新进行维护。 有关详细信息,请参阅公告博客文章Microsoft SQL Server 平台上的大数据选项

本文介绍如何执行 SQL Server 2019 大数据群集的脱机部署。 大数据群集必须有权从中拉取容器映像的 Docker 存储库。 脱机安装是将所需映像放入专用 Docker 存储库中的映像。 然后,该专用存储库用作新部署的映像源。

先决条件

警告

需要在部署配置文件 control.json 文件中将参数 imagePullPolicy 设置为 "Always"

将映像加载到专用存储库

以下步骤介绍如何从Microsoft存储库拉取大数据群集容器映像,然后将其推送到专用存储库。

小窍门

以下步骤说明了该过程。 但是,为了简化任务,可以使用 自动化脚本 ,而不是手动运行这些命令。

  1. 通过重复以下命令拉取大数据群集容器映像。 替换为 <SOURCE_IMAGE_NAME> 每个 映像名称。 替换为 <SOURCE_DOCKER_TAG> 大数据群集版本的标记,例如 2019-CU12-ubuntu-20.04

    docker pull mcr.microsoft.com/mssql/bdc/<SOURCE_IMAGE_NAME>:<SOURCE_DOCKER_TAG>
    
  2. 登录到目标专用 Docker 注册表。

    docker login <TARGET_DOCKER_REGISTRY> -u <TARGET_DOCKER_USERNAME> -p <TARGET_DOCKER_PASSWORD>
    
  3. 为每个映像使用以下命令标记本地映像:

    docker tag mcr.microsoft.com/mssql/bdc/<SOURCE_IMAGE_NAME>:<SOURCE_DOCKER_TAG> <TARGET_DOCKER_REGISTRY>/<TARGET_DOCKER_REPOSITORY>/<SOURCE_IMAGE_NAME>:<TARGET_DOCKER_TAG>
    
  4. 将本地映像推送到专用 Docker 存储库:

    docker push <TARGET_DOCKER_REGISTRY>/<TARGET_DOCKER_REPOSITORY>/<SOURCE_IMAGE_NAME>:<TARGET_DOCKER_TAG>
    

警告

推送到专用存储库后,请勿修改大数据群集映像。 使用修改后的映像执行部署将导致不受支持的大数据群集设置。

大数据群集容器映像

脱机安装需要以下大数据群集容器映像:

  • mssql-app-service-proxy
  • mssql-control-watchdog
  • mssql-controller
  • mssql-dns
  • mssql-hadoop
  • mssql-mleap-service-runtime
  • mssql-mlserver-py-runtime
  • mssql-mlserver-r-runtime
  • mssql-monitor-collectd
  • mssql-monitor-elasticsearch
  • mssql-monitor-fluentbit
  • mssql-monitor-grafana
  • mssql-monitor-influxdb
  • mssql-monitor-kibana
  • mssql-monitor-telegraf
  • mssql-security-knox
  • mssql-security-support
  • mssql-server-controller
  • mssql-server-data
  • mssql-ha-operator
  • mssql-ha-supervisor
  • mssql-service-proxy
  • mssql-ssis-app-runtime

自动化脚本

可以使用自动 python 脚本,该脚本会自动拉取所有必需的容器映像并将其推送到专用存储库中。

注释

Python 是使用该脚本的先决条件。 有关如何安装 Python 的详细信息,请参阅 Python 文档

  1. 在 bash 或 PowerShell 中,使用 curl 下载脚本:

    curl -o push-bdc-images-to-custom-private-repo.py "https://raw.githubusercontent.com/Microsoft/sql-server-samples/master/samples/features/sql-big-data-cluster/deployment/offline/push-bdc-images-to-custom-private-repo.py"
    
  2. 然后使用以下命令之一运行脚本:

    Windows:

    python push-bdc-images-to-custom-private-repo.py
    

    Linux:

    sudo python push-bdc-images-to-custom-private-repo.py
    
  3. 按照提示输入Microsoft存储库和专用存储库信息。 脚本完成后,所有必需的映像都应位于专用存储库中。

  4. 按照 此处 的说明了解如何自定义 control.json 部署配置文件以使用容器注册表和存储库。 请注意,在部署之前,必须设置 DOCKER_USERNAME 环境变量 DOCKER_PASSWORD 才能启用对专用存储库的访问。

离线安装工具

大数据群集部署需要多个工具,包括 Python、Azure 数据 CLI (azdata) 和 kubectl。 使用以下步骤在脱机服务器上安装这些工具。

脱机安装 python

  1. 在具有 Internet 访问权限的计算机上,下载以下包含 Python 的压缩文件之一:

    操作系统 下载
    Windows操作系统 https://go.microsoft.com/fwlink/?linkid=2074021
    Linux https://go.microsoft.com/fwlink/?linkid=2065975
    OSX https://go.microsoft.com/fwlink/?linkid=2065976
  2. 将压缩文件复制到目标计算机,并将其解压缩到所选文件夹中。

  3. (仅适用于 Windows)从该文件夹运行 installLocalPythonPackages.bat,并将完整路径作为参数传递到同一文件夹。

    installLocalPythonPackages.bat "C:\python-3.6.6-win-x64-0.0.1-offline\0.0.1"
    

安装 azdata offline

  1. 在具有 Internet 访问和 Python 的计算机上,运行以下命令,将所有 Azure 数据 CLI (azdata) 包下载到当前文件夹。

    pip download -r https://aka.ms/azdata
    
  2. 将下载的包和 requirements.txt 文件复制到目标计算机。

  3. 在目标计算机上运行以下命令,指定将以前的文件复制到的文件夹。

    pip install --no-index --find-links <path-to-packages> -r <path-to-requirements.txt>
    

脱机安装 kubectl

若要将 kubectl 安装到脱机计算机,请使用以下步骤。

  1. 使用 curlkubectl 下载到所选的文件夹。 有关详细信息,请参阅 使用 curl 安装 kubectl 二进制文件

  2. 将文件夹复制到目标计算机。

从专用存储库部署

若要从专用存储库进行部署,请使用 部署指南中所述的步骤,但使用指定专用 Docker 存储库信息的自定义部署配置文件。 以下 Azure Data CLI (azdata) 命令演示如何在名为 control.json 的自定义部署配置文件中更改 Docker 设置:

azdata bdc config replace --config-file custom/control.json --json-values "$.spec.docker.repository=<your-docker-repository>"
azdata bdc config replace --config-file custom/control.json --json-values "$.spec.docker.registry=<your-docker-registry>"
azdata bdc config replace --config-file custom/control.json --json-values "$.spec.docker.imageTag=<your-docker-image-tag>"

部署会提示输入 docker 用户名和密码,也可以在环境变量中DOCKER_USERNAMEDOCKER_PASSWORD指定它们。

后续步骤

有关大数据群集部署的详细信息,请参阅 如何在 Kubernetes 上部署 SQL Server 大数据群集