【问题标题】:Aurora file define host portAurora 文件定义主机端口
【发布时间】:2016-10-16 20:04:10
【问题描述】:

好的,一周或更长时间后,我的 Aurora 集群开始运行。这并不容易,但是,我明白了。

我有一个简单的极光文件

# copy frontend into the local sandbox
clone_service = Process(
  name = 'copy service',
  cmdline = 'git clone https://citrullin@bitbucket.org/jakiku/frontend.git frontend')

install_npm_deps = Process(
  name = 'install npm dependencies',
  cmdline = 'cd frontend && npm install'
)

run_server = Process(
  name = 'run server',
  cmdline = 'node server.js'
)

# describe the task
run_frontend_service = SequentialTask(
  processes = [clone_service, install_npm_deps, run_server],
  resources = Resources(cpu = 1, ram = 128*MB, disk=64*MB))

jobs = [
  Service(cluster = 'mesos-fr',
      environment = 'devel',
      role = 'www-data',
      name = 'frontend_service',
      task = run_frontend_service)
]

没什么特别的。我只想定义我需要使用的端口。我检查了 Resources(port = 3000) 但它不起作用。它不是真正的资源,它是 mesos 中的一个属性

【问题讨论】:

    标签: mesos apache-aurora


    【解决方案1】:

    一般来说,您希望避免使用 Aurora 作业的静态端口。由于任意数量的任务都可能登陆同一个主机,因此没有好的方法可以保证多个任务不会请求同一个端口,从而导致其中一个随机失败。

    解决此问题的推荐方法是使用 aurora 配置中的 thermos 命名空间从 Mesos 请求端口。例如,如果您要执行以下操作:

    run_server = Process(
      name = 'run server',
      cmdline = 'node server.js --port={{thermos.ports[http]}}'
    )
    

    然后 Aurora 会在分配给主机时为您的任务分配一个随机端口。

    这引发的一个明显问题是,如果服务运行在随机分配的端口上,当您的任务在主机之间移动时,该端口会随着时间而改变,那么其他事物如何找到您的服务。答案是service discovery。如果您将announce=Announcer() 添加到您的job configuration,那么您的任务将被添加到一个服务器集中,其他任务可以使用该服务器集来发现它并与之通信。

    参考:

    Mesos documentation on configuring agents to offer ports.

    Aurora documentation on requesting ports here.

    【讨论】:

    • 谢谢。我将使用另一个服务发现,但一般来说:谢谢。我可以传递端口号。我的端口范围内有一个随机数。但有一件事不起作用:绑定到我的服务器。但这也可能是码头工人的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 2021-10-12
    • 1970-01-01
    • 2023-03-22
    • 2010-12-29
    相关资源
    最近更新 更多