aurora文件定义主机端口

uujelgoq  于 2021-06-26  发布在  Mesos
关注(0)|答案(1)|浏览(554)

好吧,一周或更长时间后,我的极光群开始运行了。这真的不容易,但是,尽管如此,我还是做到了。
我有一个简单的极光文件


# 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)
]

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

lf3rwulv

lf3rwulv1#

一般来说,您希望避免使用aurora作业的静态端口。由于任意数量的任务都可以在同一台主机上着陆,因此无法保证多个任务不会请求同一个端口,从而导致其中一个任务随机失败。
解决这个问题的推荐方法是使用aurora配置中的thermos名称空间从mesos请求一个端口。例如,如果你要做如下事情:

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

然后,aurora将为您的任务分配一个随机端口,当它被分配给主机时。
这带来的一个明显的问题是,如果服务运行在随机分配的端口上,并且随着任务在主机之间的移动,端口会随着时间的推移而变化,那么其他东西如何找到服务。答案是服务发现。如果你加上 announce=Announcer() 在作业配置中,您的任务将被添加到服务器集,其他任务可以使用该服务器集发现并与之通信。
参考文献:
有关配置代理以提供端口的mesos文档。
关于请求端口的aurora文档。

相关问题