在 Azure 上运行 DC/OS

OPEN SOURCE

使用 Azure 资源管理器模板安装 DC/OS 群集

免责声明:这是社区推动的项目,未正式获得 Mesosphere 支持。这种安装方法用于快速演示和验证概念。本页面说明如何使用 Azure 资源管理器模板在 Azure 上安装 DC/OS 群集。Terraform 仅供参考,不建议用于生产目的。下列安装方法不支持升级。

注意:请联系邮寄列表Slack 渠道,获取社区支持。要获得 Azure 市场相关问题的支持,请加入 Azure 市场 Slack 社区

系统要求

硬件

要使用 DC/OS 中提供的所有服务,您应该使用 Standard_D2虚拟机 选择至少五个 Mesos 代理节点,这是 DC/OS Azure 市场提供的默认大小。建议不要选择较小的 VM,而选择较少的 VM 可能会导致某些资源密集型服务(如分布式数据存储)无法正常工作(从安装问题到操作限制问题)。

生产就绪群集配置

这些建议的依据是多年来多个 DC/OS 群集的运行,以及在实时生产负载下扩展各种有状态和无状态服务等的经验。您的服务组合可能执行方式不同,但本文讨论的原则和经验仍然适用。

通用机器配置

我们建议在 VM 上禁用交换。Azure Linux 图像通常默认启用交换。我们发现使用临时固态硬盘交换(通过 WAAgent 配置)可能与 D 系列 VM 的磁盘缓存配置发生冲突。其他 VM 系列(如 L 系列)可以使用 SSD 进行交换和其他用途。有关磁盘配置的详细信息,请参阅以下部分。

应使用监控(例如具有 Prometheus 的 Node Exporter)识别和警告工作负载接近新建 Azure 定义的限制范围的情况。

网络

Azure 上的原始网络性能大致由 VM 大小决定。Standard_D8_v3 等具有 8 个或更多芯核的 VM,可以用于Azure 加速网络 (SR-IOV)。我们发现,相对于依靠 Azure hypervisor vswitches,使用 SR-IOV 能够显著降低延迟且使带宽更加充裕稳定。例如,在我们的测试中,不带 SR-IOV 的Standard_D16s_v3可以在两个 VM 之间推送大约 450MB/s 的数据,而相同大小的机器在使用 SR-IOV 后,可推送接近 1000MB/s 的数据。因此,应当尽可能采用 SR-IOV,并且应当确定实例大小的基准(例如,使用 iperf3),以确保满足网络要求。

此外,尽管支持在每台虚拟支持机配置多个 NIC,但是带宽的数量是按照 VM 分配的,而非按照 NIC 分配。因此,尽管将您的网络划分到控制和数据板块(或其他网络)可能对组织或安全目的有用,但必须进行 Linux 级流量整形,才能实现带宽控制。

磁盘配置

为了在 Azure 上实现可靠的高性能群集操作,推荐在特定磁盘配置中使用优质固态硬盘。托管磁盘 (MD) 优于非托管磁盘 (UMD),更能避免存储帐户的限制。Azure fabric 将适当地放置托管磁盘,以满足SLA 保证条件。UMD 的存储帐户限制已记录在此处

Azure 中的优质固态硬盘具有的潜在同步 IOP 数量有限,受到底层磁盘结构延迟的限制。Etcd、 Zookeeper 和使用预写式日志 (WAL) 的数据库等服务对这种 I/O 配置特别敏感。因此,本文所述的很多系统工程都关注尽量减少和/或消除 Azure 磁盘上的 I/O 争用。

另外,超过机器上的 I/O 分配将导致限流。建议用户详细学习 本文章,理解本文所提供建议的理论背景。

鉴于需要分开同步和异步 I/O 负载以保持性能,推荐采用以下磁盘安装配置:

  • 管理节点:
    • / - P10
    • /var/lib/etcd -(用于在 CorEos 上运行 etcd 的节点) - P10
    • /var/log - P10
    • /var/lib/dcos/exhibitor - P10
  • 公共代理:
    • / - P10
    • /var/log - P10
    • /var/lib/docker - P10
    • /var/lib/mesos/slave - P10
  • 专用代理:
    • / - P10
    • /var/log - P10
    • /var/lib/docker - P10
    • /var/lib/mesos/slave - P20
运行具有较小和/或较少磁盘的群集是很可行的,但用于生产时,经验证明上述配置具有显著优势,适用于任何容量较大的群集。另外,我们建议用 Mesos MOUNT 磁盘资源,将适当的优质固态硬盘附加到 /dcos/volume0 … /dcos/volumeN然后优质固态硬盘即可专门用于数据密集型服务,不会发生 I/O 争用。 对于 Postgres 或 mysql 等数据密集型服务,应考虑将 LVM RAID 条带附加到 MOUNT 资源,增加每秒数据库可处理的处理记录。 关于配置磁盘缓存,请遵守以下一般规则:
  • 操作系统磁盘应设置为 ReadWrite
  • 具有混合或读取重负载(数据库大宗存储等)的数据磁盘应该设置为 ReadOnly
  • 具有高顺序写入负载的数据磁盘(WAL 磁盘)应设置为 None

软件

需要一个活跃的 Azure 订阅 以通过 Azure 市场安装 DC/OS。

另外,如需在 DC/OS 群集中访问节点,则要安装和配置 ssh

安装 DC/OS

部署模板

要在 Azure 上安装 DC/OS 1.12,请使用提供的 Azure 资源管理器模板

关于模板配置的一些说明:

  • 选择 East US 作为位置,因为模板的某些资源可能无法在其他位置提供。
  • 若要通过 OAuth 登录 DC/OS 仪表板,则将 Oauth Enabled 设为真。
  • 填写 Agent Endpoint DNS Name PrefixMaster Endpoint DNS Name Prefix
  • 输入您的 SSH RSA Public Key

访问 DC/OS

  1. 在部署的输出中查找 MASTERFQDN。要查找该值,单击 Last deployment 下面的链接(就是这里的 4/15/2016 (Succeeded)),您将看到:
Deployment history 图 1. 部署历史记录
  1. 单击最新部署并复制 MASTERFQDNOutputs 部分。
Deployment output 图 2. 输出部分
  1. 记下您在图 2 MASTERFQDN 部分找到的 Outputs 值,并在以下步骤中使用。出于安全考虑,您无法默认直接访问 Azure 中的 DC/OS 仪表板。
  2. 选择以下一种解决方案,访问 Azure 中的 DC/OS 仪表板:

案例 1:

为了访问 DC/OS 仪表板,您需要访问管理节点的 TCP 端口 80 或 443。可以添加入站安全规则和入站 NAT 规则。

  1. 查找管理节点的网络安全组资源,
Resource - Master Node Network Security Group

图 3. 管理节点网络安全组

  1. 单击左侧的 入站安全规则 选项卡。
Inbound Security Rules

图 4. 入站安全规则

  1. 添加入站安全规则。
Add Inbound Security Rules

图 5. 添加入站安全规则

  1. 查找管理节点的负载均衡器资源。
Resource - Master Node Load balancer

图 6. 管理节点负载均衡器

  1. 单击左侧的 入站 NAT 规则 选项卡,
Inbound NAT Rules

图 7. 入站 NAT 规则

  1. 添加入站 NAT 规则。
Add Inbound NAT Rules

图 8. 添加入站 NAT 规则

现在您可以访问 http://$MASTERFQDN 并查看 DC/OS 仪表板。

案例 2:使用 ssh 隧道

此时需要设置 SSH 隧道,将 Azure 群集上管理节点的 TCP 端口 80 转发到本地机器的 8000 端口。

复制您在上一步中找到的 MASTERFQDN 值并粘贴到以下命令中:

  1. ssh azureuser@$MASTERFQDN -L 8000:localhost:80

例如:

  1. ssh azureuser@dcosmaster.westus.cloudapp.azure.com -L 8000:localhost:80

现在您可以在本地机器上访问 http://localhost:8000 并查看 DC/OS 仪表板。

DC/OS dashboard

图 9. DC/OS 仪表板

注意事项

有关 SSH 访问的一些注意事项:

  • 要连接至 http://localhost:8000 进行操作,SSH 命令必须在本地机器上运行,而不是在虚拟机内运行。
  • 在上述示例中,假设端口 8000 在本地机器上可用。
  • 所显示的 SSH 命令仅可在 Mac 或 Linux 上运行。对于 Windows,请使用具有类似端口转发配置的 PuTTY,另请参阅 如何在 Azure 上使用带有 Windows 的 SSH
  • 如需了解有关 SSH 密钥生成的更多信息,请参阅 GitHub 教程
通过 SSH 隧道连接时,DC/OS UI 不会显示正确的 IP 地址或 CLI 安装命令。 ## 运行 DC/OS CLI 以下命令可用于直接在管理节点上运行 DC/OS CLI。
  1. # Connect to master node with ssh
  2. ssh azureuser@$MASTERFQDN
  3. # Install CLI on the master node and configure with http://localhost
  4. curl https://downloads.dcos.io/binaries/cli/linux/x86-64/dcos-/dcos -o dcos &&
  5. sudo mv dcos /usr/local/bin &&
  6. sudo chmod +x /usr/local/bin/dcos &&
  7. dcos cluster setup http://localhost &&
  8. dcos
  9. # Now you can use the DC/OS CLI:
  10. dcos package search
## 卸下 DC/OS 群集 如果在部署步骤中创建了新的资源组,就很容易卸下群集并释放所有资源:只需删除资源组即可。如果已将群集部署到现有资源组,您需要确定属于 DC/OS 群集的所有资源,并手动删除它们。 ## 后续步骤