8.6優雅に終わる

1878 ワード

8.6優雅に終わる


中国語の概要


クベルネディスのような大規模化運転では、コンテナが作成され、削除されることが多い.これは、エラーだけでなく、コンテナの再配置や新しいバージョンへのアップグレードなど、適切な理由で発生します.30秒遅延のある流れに通知(SIGTERM信号)を送ればよい.そのため、開発者はアプリケーションが進行中のリクエストをタイムリーに処理し、リソースを整理する必要があります.そうしないと、数千人のユーザーが応答できません.実装では、終了コードは、進行中のすべてのリクエスト応答を待機し、リソースをクリーンアップする必要があります.
簡単に言えますが、実際にはいくつかの調整が必要です.健康診断を通じて、LoadBangerにアプリケーションがまだより多くのリクエストを処理する準備ができていないことを知らせ、既存のリクエストが完了するのを待って、新しいリクエストの処理を避け、リソースを整理し、最終的に終了する前に重要な情報を記録する必要があります.
継続的な接続を使用している場合は、クライアントが新しい接続を確立する必要があることを通知します.Stoppableのようなライブラリは、これを実現するのに大きく役立ちます.
SIGTERMとは?
CTRL+C->SIGINGをプロセスに転送->すぐに殺す
kill->プロセスはSIGTERM->をしばらく送ってから殺します

サンプルコード-ノード。jsをルートプロセスに配置すると、コードに信号を伝達できます。(ノードの使用を参照)


Dockerfile
FROM node:12-slim

/# 여기에 빌드 로직을 작성해라/

CMD ["node", "index.js"]
/#이것은 Node.js를 루트 프로세스(PID1)로 만든다./

サンプルコード–Tinyプロセスマネージャを使用してノードに信号を送信


Dockerfile
FROM node:12-slim

/# 여기에 빌드 로직을 작성해라/

ENV TINI_VERSION v0.19.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]

CMD ["node", "index.js"]
/#노드는 PID1 역할을 하는 TINI의 하위 프로세스를 실행한다./

パターン防止サンプルコード–npmスクリプトを使用してプロセスを初期化


Dockerfile
FROM node:12-slim

/# 여기에 빌드 로직을 작성해라/

CMD ["npm", "start"]
/#노드는 npm의 하위 프로세스를 실행하고 신호를 수신하지 않는다./

例-ステップを終了


Rising Stackのブログ参照