
nginxによる負荷分散はLVSより比較的容易に実装できるということで,
ある閾値のリクエスト量を超えるまで,サーバ1がレスポンスするようにし,
その閾値を超えた時からはサーバ2にリクエストを送り続けるように,
負荷分散を行うような方式を独自に実装したいのですが,
nginxでは,ラウンドロビンや最小接続数やハッシュなど,もともと備わっている機能でしか負荷分散を行えないのでしょうか?
また,nginx以外に上記の方式を実装できる方法があるならご教示いただけると幸いです.


nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。
Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。
ロードバランサー【負荷分散装置】は、複数のサーバへアクセス要求を分散する装置です。 要求を分散することで各サーバが快適な応答速度を保つことを目的としており、 アクセスの多い大規模サイト等は、この装置により 複数のサーバに負荷を分散する事で安定な運用が可能です。
サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。
負荷分散とは、並列に運用されている機器間でできる限り負担が均等になるように、処理を分散し割り当てることです。 負荷分散は専用機器の使用、DNSサーバの設定、サーバに負荷分散ソフトウェアを導入することで実現できます。
nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。
Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。
ロードバランサー【負荷分散装置】は、複数のサーバへアクセス要求を分散する装置です。 要求を分散することで各サーバが快適な応答速度を保つことを目的としており、 アクセスの多い大規模サイト等は、この装置により 複数のサーバに負荷を分散する事で安定な運用が可能です。
サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。
負荷分散とは、並列に運用されている機器間でできる限り負担が均等になるように、処理を分散し割り当てることです。 負荷分散は専用機器の使用、DNSサーバの設定、サーバに負荷分散ソフトウェアを導入することで実現できます。
0グッド
2クリップ
投稿2019/11/26 20:18
nginxによる負荷分散はLVSより比較的容易に実装できるということで,
ある閾値のリクエスト量を超えるまで,サーバ1がレスポンスするようにし,
その閾値を超えた時からはサーバ2にリクエストを送り続けるように,
負荷分散を行うような方式を独自に実装したいのですが,
nginxでは,ラウンドロビンや最小接続数やハッシュなど,もともと備わっている機能でしか負荷分散を行えないのでしょうか?
また,nginx以外に上記の方式を実装できる方法があるならご教示いただけると幸いです.
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/11/27 01:17
回答1件
0
nginxでは,ラウンドロビンや最小接続数やハッシュなど,もともと備わっている機能でしか負荷分散を行えないのでしょうか?
Yes.
nginx に限りませんが、ソフトウェアがサポートしていないオリジナルの機能を追加するには、基本的にソフトウェアの改造や拡張が必要です。
nginx だと lua-nginx-module という「lua スクリプトを使って予めフックが用意されている部分の機能を拡張できる」モジュールが用意されているので、lua スクリプトで記載できる内容であれば対応することも可能と思います。
たとえば、特定条件でアクセスするサーバーを変更するのであれば、Nginx+Lua+Redisによる動的なリバースプロキシの実装案 のような例があります。
また、細かい条件が不明ですが、規定値を超えた場合にサーバーを切り替えるだけなら、サーバー1のリクエスト量を監視して超えたら 新しいサーバー2のIP アドレスを参照するように DNS に登録されている IPアドレスを動的に変更するようなスクリプトで対応できるような気がします。
例えば、bind で構築された dns なら、ゾーンに対して予め動的更新できるような設定にしておけば、nsupdate コマンドで、dns の内容を更新できます。
投稿2019/11/26 22:07
編集2019/11/27 00:24総合スコア25234
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。