Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9082

nginx + expressをfargate 4coreで動かす

$
0
0
  • nginx + expressをfargateに詰め込む
  • unix socket を使って繋ぐ
  • expressは4プロセス立ち上げる
  • node clusterは使わないパターン、socketが競合してしまったので。
  • 共通ボリュームにapi1.sock - api4.sockを設定して、nginxからupstreamする

api

共通ボリュームをVolumeにしておく

VOLUME /usr/src/tmp

sockのパスを環境変数で指定させる

main.js
constsock=process.env.SOCK_PATH;app.listen(sock,()=>{fs.chmodSync(sock,'666');console.log(`Server running on ${sock} with pid `+process.pid);});

nginx

api1.sock - api4.sockへupstreamする

nginx.conf
upstreamapi{serverunix:///usr/src/tmp/api_1.sock;serverunix:///usr/src/tmp/api_2.sock;serverunix:///usr/src/tmp/api_3.sock;serverunix:///usr/src/tmp/api_4.sock;}server{listen80default;listen[::]:80;location/{proxy_passhttp://api;break;}}

タスク定義

ECSタスク定義で、繋ぐ

task-define.json
{"containerDefinitions":[{"name":"nginx","portMappings":[{"hostPort":80,"protocol":"tcp","containerPort":80}],"mountPoints":[{"readOnly":true,"containerPath":"/usr/src/tmp","sourceVolume":"etc"}]},{"name":"api1","mountPoints":[{"containerPath":"/usr/src/tmp","sourceVolume":"etc"}],"environment":[{"name":"SOCK_PATH","value":"/usr/src/tmp/api_1.sock"}]},{"name":"api2","mountPoints":[{"containerPath":"/usr/src/tmp","sourceVolume":"etc"}],"environment":[{"name":"SOCK_PATH","value":"/usr/src/tmp/api_2.sock"}]},{"name":"api3","mountPoints":[{"containerPath":"/usr/src/tmp","sourceVolume":"etc"}],"environment":[{"name":"SOCK_PATH","value":"/usr/src/tmp/api_3.sock"}]},{"name":"api4","mountPoints":[{"containerPath":"/usr/src/tmp","sourceVolume":"etc"}],"environment":[{"name":"SOCK_PATH","value":"/usr/src/tmp/api_4.sock"}]}],"volumes":[{"name":"etc"}],}

Viewing all articles
Browse latest Browse all 9082

Latest Images

Trending Articles