1

1 週間以上経っても、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 の属性です

4

1 に答える 1

0

一般的に言えば、Aurora ジョブで静的ポートを避ける必要があります。任意の数のタスクが同じホストに到達する可能性があるため、複数のタスクが同じポートを要求して、そのうちの 1 つがランダムに失敗しないことを保証する良い方法はありません。

この問題を解決するための推奨される方法は、aurora 構成でthermos 名前空間を使用して Mesos からポートをリクエストすることです。たとえば、次のようなことをするとします。

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

次に、Aurora は、タスクがホストに割り当てられると、そのタスクにランダムなポートを割り当てます。

これが提起する明らかな問題は、タスクがホスト間を移動するにつれて時間の経過とともに変化する可能性のあるランダムに割り当てられたポートで実行されている場合、他のものがどのようにサービスを見つけるかということです. これに対する答えは、サービス ディスカバリです。ジョブ構成に追加announce=Announcer()すると、タスクは ServerSet に追加され、他のタスクがそれを検出して通信するために使用できます。

参照:

ポートを提供するエージェントの構成に関する Mesos のドキュメント

ポートのリクエストに関する Aurora のドキュメントはこちらです。

于 2016-10-17T03:20:13.663 に答える