使用 DC/OS 隧道

使用 DC/OS 隧道通过代理和 VPN 访问您的群集

重要信息:Mesosphere 不支持 Ubuntu 作为 DC/OS 的操作系统,即便是使用 Microsoft Azure 时。

在 DC/OS 上开发服务时,您可能会发现通过 SOCKS 代理、HTTP 代理或 VPN,有助于在本地机器访问群集。例如,您可以在自己的开发环境中工作,并立即针对您的 DC/OS 群集进行测试。

SOCKS

DC/OS 隧道可以通过 SSH 运行 SOCKS 代理到群集。SOCKS 代理适合任何协议,但客户端必须配置为使用默认在端口 1080 上运行的代理。

HTTP

HTTP 代理可采用两种模式运行:透明和标准。

在透明模式下,HTTP 代理在端口 80 上作为超级用户运行,不需要对应用程序进行修改。通过附加 域访问 URL。也可 将 DNS SRV 记录作为 URL 使用。HTTP 代理当前无法采用透明模式访问 HTTPS。

标准模式

虽然必须配置客户端才能在标准模式下使用 HTTP 代理,但是它没有透明模式受到的任何限制。与透明模式一样,您可以将 记录作为 URL 使用。

SRV DNS 记录是从名称到 IP/端口对的映射。DC/OS 创建 SRV 记录,采用的形式为 _<port-name>._<service-name>._tcp.marathon.mesos. HTTP 代理将这些记录作为 URL 披露。此功能可用于与 DC/OS 服务进行通信。

VPN

DC/OS 隧道可让您完全访问群集内的 DNS、管理节点和代理。OpenVPN 需要根权限才能配置这些路由。

DC/OS 隧道选项概述

使用 DC/OS 隧道

  • 目前仅支持 Linux 和 macOS。
  • DC/OS CLI.
  • DC/OS 隧道包。运行 dcos package install tunnel-cli --cli.
  • (仅限密钥认证)。
  • OpenVPN 客户端 用于 VPN 功能。

应用示例

所有示例都将参考此样本应用:

  • 服务名称:myapp
  • 组:mygroup
  • 端口:555
  • 端口名称:myport
  1. 在 DC/OS CLI 中运行以下命令:

  2. 配置应用程序以使用端口 1080 上的代理。

使用 DC/OS 隧道运行 HTTP 代理

透明模式

  1. 在 DC/OS CLI 中运行以下命令:

    1. sudo dcos tunnel http
    2. ## Example
    3. ### Watch out!
    4. ## This won't work because you can't specify a port in transparent mode
    5. curl myapp-mygroup.marathon.agentip.dcos.thisdcos.directory.mydcos.directory:555
  2. 在透明模式下,HTTP 代理通过端口转发开展工作。输入命令时,在域名末尾附加 .mydcos.directory 例如, 变成 http://example.com.mydcos.directory/?query=hello.

注意:在透明模式下,无法在 URL 中指定端口。

  1. 如需不使用根权限,以标准模式运行 HTTP 代理,则请使用 --port 标记将代理配置为使用其他端口:

    1. dcos tunnel http --port 8000
    2. ## Example
    3. curl --proxy 127.0.0.1:8000 _myport._myapp.mygroup._tcp.marathon.mesos
    4. curl --proxy 127.0.0.1:8000 myapp-mygroup.marathon.agentip.dcos.thisdcos.directory:555
  2. 配置应用程序,在上文指定的端口上使用代理。

SRV 记录

HTTP 代理以 _<port-name>._<service-name>._tcp.marathon.mesos.mydcos.directory(透明模式)或 _<port-name>._<service-name>._tcp.marathon.mesos(标准模式)形式的 URL 揭示 DC/OS SRV 记录。

查找服务名称

<service-name> 是您从 DC/OS Web 界面创建的服务的** ID **字段中的条目,或 Marathon 应用定义中 id 字段的值。

在 DC/OS Web 界面中添加指定端口

在 Marathon 应用定义中添加指定港口

或者,可以添加 name 到Marathon 应用定义的 portMappingsportDefinitions 字段。使用 portMappings 还是 portDefinitions 取决于您使用的是 BRIDGE 还是 HOST 网络。.

  1. "portDefinitions": [
  2. "name": "<my-port-name>",
  3. "protocol": "tcp",
  4. "port": 0,
  5. }
  6. ]

在 DC/OS CLI 中运行以下命令:

  1. sudo dcos tunnel vpn
  2. ## Example
  3. curl myapp-mygroup.marathon.agentip.dcos.thisdcos.directory:555

VPN 客户端试图自动配置 DNS,但此功能不适用 macOS。如需在 macOS 上使用 VPN 客户端,请按照 DC/OS 隧道的指示,添加 DNS 服务器

使用 VPN 时,您通过虚拟的方式进入群集。可以直接访问 管理节点和代理节点:

  • 如果使用 ,就要安装:

    1. brew install openvpn

    然后在使用时:

    添加 /usr/local/sbin$PATH,

    或添加如下标记 --client=/usr/local/sbin/openvpn

    1. sudo dcos tunnel vpn --client=/usr/local/sbin/openvpn
  • 另一个选项是安装 TunnelBlick不要运行,安装它只是用于 openvpn 可执行文件) 并添加如下标记 --client=/Applications/Tunnelblick.app/Contents/Resources/openvpn/openvpn-*/openvpn

Linux OpenVPN 客户端安装

例如:

  • Ubuntu:apt-get update && apt-get install openvpn