公开服务

通过 Marathon 应用定义启动服务

DC/OS 代理节点在 安装过程中可被指定为公共专用。公共代理节点通过基础架构网络从群集外部访问 DC/OS 服务。默认情况下,服务在专用代理节点上启动,不可从群集外部访问。

要在公共节点上启动服务,您必须

  1. 创建 Marathon 应用程序定义,并指定 "acceptedResourceRoles":["slave_public"] 参数
  2. 配置 边缘负载均衡器和服务发现机制
前提条件: # 创建 Marathon 应用程序定义
  1. 创建 Marathon 应用定义,并指定所需的 "acceptedResourceRoles":["slave_public"] 参数。例如:
    1. {
    2. "id":"/product/service/myApp",
    3. "acceptedResourceRoles":[
    4. "slave_public"
    5. ],
    6. "instances":1,
    7. "cpus":0.1,
    8. "mem":64,
    9. "networks":[
    10. {
    11. "mode":"container/bridge"
    12. }
    13. ],
    14. "container":{
    15. "type":"DOCKER",
    16. "docker":{
    17. "image":"group/image"
    18. },
    19. "portMappings":[
    20. {
    21. "containerPort":8080,
    22. "hostPort":0
    23. }
    24. ]
    25. }
    26. }
    有关 acceptedResourceRoles 参数的更多信息,请参阅 Marathon API 文档
  2. 使用此命令将您的应用程序添加到 Marathon,其中 myApp.json 是包含 Marathon 应用定义的文件。
    1. dcos marathon app add myApp.json
    如果添加成功,则没有输出。还可以使用 DC/OS UI服务 选项卡添加应用程序。
  3. 使用此命令验证应用程序是否已添加:
    1. dcos marathon app list
    输出应如下所示:
    1. ID MEM CPUS TASKS HEALTH DEPLOYMENT CONTAINER CMD
    2. /myApp 64 0.1 0/1 —- scale DOCKER None
    还可以使用 DC/OS UI服务 选项卡查看已部署的应用程序。
# 配置边缘负载均衡器
  1. 配置边缘负载均衡器和服务发现机制。
    • AWS 用户:如果您通过使用 [AWS CloudFormation 模板] 安装了 DC/OS(/mesosphere/dcos/cn/2.0/installing/evaluation/community-supported-methods/aws/),则会包含 ELB。但是,您则必须在公共 ELB 上重新配置运行状况检查,以将应用程序公开到应用定义中指定的端口(例如,端口 80)。
    • 所有其他用户:您可以使用 Marathon-LB,一种基于 HAProxy 的快速代理程序和负载均衡器。
  2. 转到公共代理节点,查看网站是否正在运行。有关如何查找公共代理 IP 的信息,请参阅 文档。 您应在浏览器中看到以下消息: Hello Brave World 图 1. 确认页面

了解更多

了解如何使用 Marathon-LB 在公共节点上对应用程序进行负载均衡。