負荷分散にnginxを使用する方法
4 層ロード バランシングと 7 層ロード バランシングの比較
7 層ロード バランシングまたは 4 層ロード バランシングは、実際には次の名前に基づいているとよく言われます。 ISO OSI ネットワーク モデルの層 最終的な決定は、nginx が http プロトコルを使用してアプリケーション層で負荷分散操作を実行するため、nginx が 7 層負荷分散と呼ばれることです。たとえば、tcp 層で負荷分散操作を実行する lvs は、層 4 負荷分散と呼ばれます。一般的に、負荷分散には次の分類があります。
#共通ソフトウェア サポート
##一般的な負荷分散アルゴリズム
一般的な負荷分散アルゴリズムは次のとおりです。負荷分散のデモ例: 通常のポーリング#次に nginx を使用して、通常のポーリングを実行する方法を示します。
事前に、2 つのポート 7001/7002 で 2 つのサービスを起動して、異なる情報を表示します。デモンストレーションの便宜上、tornado を使用してミラーを作成しました。Docker コンテナーの起動時に渡されるパラメーターは異なり、サービスの表示に使用されます。
[root@kong ~]# docker run -d -p 7001:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "user service 1: 7001" ddba0abd24524d270a782c3fab907f6a35c0ce514eec3159357bded09022ee57 [root@kong ~]# docker run -d -p 7002:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "user service 1: 7002" 95deadd795e19f675891bfcd44e5ea622c95615a95655d1fd346351eca707951 [root@kong ~]# [root@kong ~]# curl http://192.168.163.117:7001 hello, service :user service 1: 7001 [root@kong ~]# [root@kong ~]# curl http://192.168.163.117:7002 hello, service :user service 1: 7002 [root@kong ~]#Start nginx
[root@kong ~]# docker run -p 9080:80 --name nginx-lb -d nginx
9d53c7e9a45ef93e7848eb3f4e51c2652a49681e83bda6337c89a3cf2f379c74
[root@kong ~]# docker ps |grep nginx-lb
9d53c7e9a45e nginx "nginx -g 'daemon ..." 11 seconds ago up 10 seconds 0.0.0.0:9080->80/tcp nginx-lb
[root@kong ~]#
次の nginx コード スニペットを準備し、nginx/etc に追加します。
http { upstream nginx_lb { server 192.168.163.117:7001; server 192.168.163.117:7002; } server { listen 80; server_name www.liumiao.cn 192.168.163.117; location / { proxy_pass http://nginx_lb; } }/nginx/conf.d/default.conf のdefault.conf を変更する方法
コンテナに vim をインストールすることで効果を得ることができます。ローカルで変更して docker cp 経由で渡すことも、sed で直接変更することもできます。 vim をコンテナにインストールする場合は、次の方法を使用します。
[root@kong ~]# docker exec -it nginx-lb sh # apt-get update ...省略 # apt-get install vim ...省略変更前
# cat default.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the php scripts to apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the php scripts to fastcgi server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param script_filename /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
#
# cat default.conf
upstream nginx_lb {
server 192.168.163.117:7001;
server 192.168.163.117:7002;
}
server {
listen 80;
server_name www.liumiao.cn 192.168.163.117;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
#root /usr/share/nginx/html;
#index index.html index.htm;
proxy_pass http://nginx_lb;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the php scripts to apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the php scripts to fastcgi server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param script_filename /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
#
[root@kong ~]# docker restart nginx-lb
nginx-lb
[root@kong ~]#
ポーリングが次の順序で実行されていることがはっきりとわかります:
[root@kong ~]#curlhello、サービス :ユーザー サービス 1: 7001[root@kong ~]#curl
##ロード バランシングのデモンストレーション例: ウェイト ポーリング
hello、サービス :ユーザー サービス 1: 7002
[root@kong ~]#カール
こんにちは、サービス:ユーザーサービス1:7001
[root@kong ~]#カール
こんにちは、サービス:ユーザーサービス1:7002
[root@kong ~]
#これに基づいて、ウェイト ポーリングを実行するにはウェイトを追加するだけで済みます
#default.conf を変更します#default.conf を次のように変更します
# cp default.conf default.conf.org # vi default.conf # diff default.conf default.conf.org 2,3c2,3 < server 192.168.163.117:7001 weight=100; < server 192.168.163.117:7002 weight=200; --- > server 192.168.163.117:7001; > server 192.168.163.117:7002; #
nginx コンテナを再起動します
[root@kong ~]# docker restart nginx-lb nginx-lb [root@kong ~]#結果の確認
1/3 と 2/3 の比率で投票結果が行われていることがわかります:
[root @kong ~]#curlhello、サービス :ユーザー サービス 1: 7001
[root@kong ~]#curlhello、サービス :ユーザー サービス 1: 7002
[root@kong ~] #カールこんにちは、サービス:ユーザーサービス1: 7002[root@kong ~]
#
以上が負荷分散にnginxを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Stock Market GPT
AIを活用した投資調査により賢明な意思決定を実現

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

1. PHP開発の質問と回答コミュニティにおけるLaravel MySQL VUE/Reactの組み合わせの最初の選択は、生態系の成熟度と高開発効率のため、Laravel MySQL Vue/Reactの組み合わせの最初の選択肢です。 2。高性能では、キャッシュ(REDIS)、データベース最適化、CDN、非同期キューへの依存が必要です。 3.入力フィルタリング、CSRF保護、HTTPS、パスワード暗号化、許可制御を使用してセキュリティを行う必要があります。 4。オプションの広告、メンバーのサブスクリプション、報酬、委員会、知識の支払い、その他のモデル、コアはコミュニティトーンとユーザーのニーズに合わせることです。

nginxが「ToomyopenFiles」エラーを経験する場合、通常、システムまたはプロセスがファイル記述子の制限に達したためです。ソリューションには、次のものが含まれます。1。Linuxシステムのソフト制限とハードリミットを増やし、nginxの関連パラメーターを設定するか、/etc/security/limits.confでユーザーを実行します。 2. NginxのWorker_Connections値を調整して、予想されるトラフィックに適応し、過負荷の構成を確認します。 3.システムレベルのファイル記述子の上限を増やし、file-max、edit /etc/sysctl.confを編集し、変更を適用します。 4. open_lの使用など、ログとリソースの使用を最適化し、不要なファイルハンドルの使用量を削減します

MAC環境の構築におけるHomebrewの中心的な役割は、ソフトウェアのインストールと管理を簡素化することです。 1. Homebrewは、依存関係を自動的に処理し、複雑な編集プロセスとインストールプロセスを簡単なコマンドにカプセル化します。 2。ソフトウェアのインストールの場所と構成の標準化を確保するために、統一されたソフトウェアパッケージエコシステムを提供します。 3.サービス管理機能を統合し、BrewServicesを介してサービスを簡単に開始および停止できます。 4.便利なソフトウェアのアップグレードとメンテナンス、およびシステムのセキュリティと機能を改善します。

PHP環境と生産の間の矛盾の問題を解決するために、コアはKubernetesのコンテナ化とオーケストレーション機能を使用して環境の一貫性を実現することです。特定の手順は次のとおりです。1。すべてのPHPバージョン、拡張機能、依存関係、Webサーバー構成を含む統一されたDockerイメージを構築して、開発と生産で同じ画像が使用されるようにします。 2. KubernetesのconfigMapとSecretを使用して、非感受性および敏感な構成を管理し、ボリュームマウントまたは環境可変噴射を介したさまざまな環境構成の柔軟な切り替えを実現します。 3.統一されたKubernetes展開定義ファイル(展開やサービスなど)を介してアプリケーションの動作の一貫性を確保し、バージョンコントロールに含める。 4。

nginx構成では、ロケーションブロック内の @シンボルを使用して、指定された場所を定義します。これらは内部で使用されているエンドポイントであり、クライアントリクエストによって直接一致することはできません。通常、ERROR_PAGE、try_files、または書き換えディレクティブを介して呼び出されます。 1。命名場所は @で始まります。たとえば、location@notfoundは直接リクエストに応答するのではなく、他の構成部品からトリガーします。 2。カスタムエラー処理、内部ルーティング、バックエンドエージェントのバッキングによく使用されます。 3.たとえば、try_filesと組み合わせて、静的ファイルが存在しない場合は@backendに転送します。 4。メモには、直接アクセスされず、紛争の命名を避け、記述名を使用します。名前付きの場所には含まれます

1. PHP Eコマースバックエンドの主流のフレームワークには、Laravel(高速開発、強力な生態学)、Symfony(エンタープライズレベル、安定した構造)、YII(優れたパフォーマンス、標準化されたモジュールに適しています)が含まれます。 2。テクノロジースタックには、MySQL Redisキャッシュ、RabbitMQ/Kafkaメッセージキュー、NGINX PHP-FPM、およびフロントエンド分離を装備する必要があります。 3.高並行性アーキテクチャを階層化し、モジュラー、データベースの読み取りおよび書き込み分離/分散データベース、キャッシュとCDNで加速し、タスクの非同期処理、ロードバランスとセッションの共有、徐々にマイクロサービス、および監視とアラームシステムの確立を行う必要があります。 4.複数の収益化パスには、製品価格の差額またはプラットフォームコミッション、サイト広告、SaaSサブスクリプション、カスタマイズされた開発およびプラグインマーケット、API接続が含まれます

NGINX構成を変更した後、最初に構文をテストしてからサービスをリロードする必要があります。 1. nginx-Tを使用して、構成ファイルの構文を確認します。プロンプト「Syntaxisok」と「testissuccessful」がプロンプトされた場合、それは正しいことを意味します。エラーがある場合、特定の問題行が表示されます。 2.構成ファイルのアクセス許可が高い場合、sudonginx-tを使用して実行する必要があります。 3.テストが実際にロードされていることを確認してください。 Nginx-T-C/path/to/your/nginx.confを介してパスを指定するか、メインプロセスでPS-EF | grepnginxを介して使用される構成ファイルを表示できます。 4。テストに合格したら、sudonginx-sreloadオーバーロードサービスを実行して、新しい構成を有効にします

MongoDBをサポートするPHP環境を構成するために、コアステップはMongoDBのPHPドライバーをインストールして有効にして、PHPアプリケーションがMongoDBデータベースと通信できるようにすることです。 1. MongoDBPHPドライバーをインストールすると、PECLを使用してインストールすることをお勧めします。 PECLがない場合は、最初にPHP開発パッケージと関連するコンピレーションツールをインストールする必要があります。 2。PHP.iniファイルを編集し、拡張機能= mongodb.so(または.dll)を追加して拡張機能を有効にします。 3. WebサーバーまたはPHP-FPMサービスを再起動して、構成を有効にします。 4.拡張機能がphpinfo()またはphp-mを介して正常にロードされているかどうかを確認します。よくある質問には、PECLコマンドの欠落、コンピレーションエラー、Php.iniが含まれます
