开始之前
- 正在运行的 DC/OS 群集,已安装 DC/OS CLI.
- app2 已部署并在您的群集中运行。
学习目的
在本部分中,您将通过使用 Marathon-LB 在公共代理节点上运行 app2,从而实现可从群集外部访问 app2。
步骤
DC/OS 有两种不同的节点类型:
- 专用代理节点
- 公共代理节点
专用代理节点通常只能在群集内访问,而公共代理节点允许从群集外部进入访问。
默认情况下,Marathon 启动专用代理节点上的应用程序和服务,而这些程序和服务无法从群集外部访问。要将应用程序向外部公开,通常使用一个公共节点上运行的负载均衡器。
您将在本教程后面重新讨论负载平衡主题和负载均衡器的不同选择,但是现在,您将使用 Marathon-LB 作为负载均衡器。Marathon-LB 在公共代理节点上使用 HAProxy,为群集内部运行的应用程序提供外部访问和负载均衡。
-
安装 Marathon-LB:
dcos package install marathon-lb
-
使用
dcos task
检查它是否在运行,并确定运行 Marathon-LB 的公共代理节点(主机)的 IP 地址在这种情况下,您需要从云提供程序中检索公共 IP。对于 AWS,请转至 EC2 仪表板,并使用搜索框搜索专用 IP,该 IP 分配给 显示的 marathon-lb 任务。
dcos task
. 公共 IP 将在返回实例的 IPv4 公共 IP 字段中列出。 -
通过 (从本地机器)连接到 webapp。
<Public IP>:10000
. 您应该看到网页的呈现版本,包括正在运行的物理节点和端口 app2。 -
使用 Web 表单添加新“键:值”对
-
您可以通过以下两种方式验证新密钥是否已添加:
- 使用 app1 检查密钥总数:
dcos task log app1
- 直接检查 redis
-
SSH 进入运行 Redis 的节点:
dcos node ssh --master-proxy --mesos-id=$(dcos task redis --json | jq -r '.[] | .slave_id')
-
因为 Redis 在 Docker 容器中运行,所以您可以使用
docker ps
列出所有 Docker 容器,并获取 redis 任务的 ContainerID。 -
使用上一步的 ContainerID 在正在运行的容器中创建 bash 会话:
sudo docker exec -i -t CONTAINER_ID /bin/bash
. -
启动 Redis CLI:
redis-cli
. -
检查值是否存在:
get <newkey>
.
-
- 使用 app1 检查密钥总数:
结果
祝贺您!您已使用 Marathon-LB 向公众公开您的应用程序,并使用 Web 前端向 Redis 添加了一个新密钥。