web-dev-qa-db-ja.com

LinodeNodeBalancerがノードを回転から外すかどうかを確認する方法

NodeBalancerがノードのローテーションを解除することがありますが、再起動できるようにノードについて調べたいと思います。どうすればよいですか?

これが背景です:

同じタイプの2つのWebサイトがあり、どちらもCPUを集中的に使用するアプリケーションを実行しています。 Webサイトの1つは単一のVPSで実行され、1日あたり約3000回の実行(それぞれ5〜50秒かかります)の負荷があり、もう1つのWebサイトでは、その下に9つのノードを持つNodeBalancerをインストールしました。それぞれが単一のVPSの約40〜60%を実行します。

これは実際にはほとんど中断することなく正常に機能しますが、週に1回程度、ノードはNodeBalancerへの応答を停止し、ローテーションから外されます。これは通常、非常に高いCPU使用率と組み合わせて発生します。現在、これは単一のVPSでは発生しません(1年間中断または再起動せずに実行されています)。

だから私が言ったように-負荷分散されたノードでは混乱があり(99%同じスクリプトとソフトウェアを実行していますが)、ノードがローテーションから外されたときを知りたいので、再起動して取得できますそれを稼働させます。

現在、私の回避策は、Linodeから受け取ったメールに対処することです。これにより、CPU使用率が高いことが警告されます。場合によっては、ノードが実際に非アクティブになった場合は、手動で再起動します。

3
user1914292

インターネットをもう少し検索したところ、Linodeへのコマンドラインインターフェイスがあり、NodeBalancerだけでなくNodesでもあらゆる種類のアクションを実行できることがわかりました。

これにより、次のような簡単なコマンドを実行して、ダウンしているノードを自動的に再起動できます。

linode restart My-Linode-Label

また、次の手順を実行することで、NodeBalancerでトラフィックを処理しているすべてのノードを一覧表示することもできます。

linode nodebalancer node-list mynodebalancer 80

これで実際にノードのステータスが表示されるのか、アクティブなノードのみが表示されるのかを確認して、回答を更新します。新しいノードの開始など、将来必要になる可能性が最も高いアクションがさらに多く含まれているため、これは私が探していたソリューションのようです。

CLIはgithubの https://github.com/linode/cli にあります。

更新:このCLIは、名前、ステータス、アドレスを簡単に出力できるように、ノードバランサーの下にある各ノードのステータスを表示します。このスクリプトを簡単に実行できるようになります。

いくつかのPerlモジュールを追加するだけでよいようですので、準備は完了です。 Linodeサポートがこれを認識していなかったとは信じられません...

3
user1914292

少し単純なアプローチは、ノードにexample.com/node.htmlページを提供させ、ノードごとに異なる結果(たとえば、番号1〜9)を返すことです。次に、外部のコンピューターからそのページを常に要求します(たとえば、1秒に1回)。特定の時間間隔(たとえば1分)後にすべてのサーバーから多かれ少なかれランダムな結果(シリーズ)を受け取るはずです。その後、スクリプトはすべての数値が存在するかどうかを確認し、ノードが欠落している場合はLinodeのAPIを呼び出します。再起動します。

これよりも簡単ですが、ノード自体がWebリクエストを受信して​​いるかどうかを簡単にチェックインできません(「netstat」、ファイアウォール、ログなどから、ロードバランサーのホスト名をOriginとしてチェックすることもできます)。そうでない場合は、LBを意味します。ローテーションから外しましたか?

3
LinuxDevOps