同時実行性の高いサイトでは、Web サイトのバックエンド サービスの安定性だけでなく、次の図に示すように、サービスが大量のトラフィックにアクセスしてそれに耐えられるかどうかも考慮する必要があります。 1: トラフィックアクセス、Lvs+Nginxクラスタを使用できます。この方法では、数百万までのQPSにアクセスできます。 2: Lvsを介してNginxクラスタを実装し、Nginx + Tomcatでバックエンドサービスクラスタを実装し、アクセス層トラフィック処理からバックエンドサービスクラスタの高並列処理までのプロセスを完了します。 1. Lvsの紹介LVS (Linux Virtual Server) は Linux 仮想サーバーです。複数のサーバーの負荷分散に使用され、ネットワークの第 4 層で動作します。高性能で高可用性のサーバー クラスター テクノロジーを実現できます。安定性と信頼性に優れています。クラスター内のサーバーが正常に動作しなくなった場合でも、全体の効果には影響しません。 TCP/IP ルーティングと転送に基づいており、非常に高い安定性と効率性を備えています。 LVS クラスターには、多くの場合、次のロールが含まれます。
2. Lvs負荷分散モードLVS は 3 つの負荷分散モードを提供します。各負荷分散モードは、異なるシナリオに適用できます。これら 3 つの負荷分散モードについて説明します。 2.1 NATユーザーの要求がディストリビューターに到達すると、要求されたデータ パケットは、事前に設定された iptables ルールを通じてバックエンド RS に転送されます。 RS はゲートウェイをディストリビューターの内部 IP に設定する必要があります。ユーザーが要求したデータ パケットとユーザーに返されるデータ パケットはすべてディストリビューターを通過するため、ディストリビューターはボトルネックと呼ばれます。 NAT モードでは、ディストリビューターのみがパブリック IP を持つ必要があるため、パブリック IP リソースが節約されます。 2.2 ターンこのモードでは、ディストリビューターとすべての RS にパブリック IP (VIP と呼びます) を設定する必要があります。クライアントが要求するターゲット IP は VIP です。ディストリビュータは要求データ パケットを受信すると、データ パケットを処理してターゲット IP を RS の IP に変更し、データ パケットが RS に到達するようにします。データ パケットを受信した後、RS は元のデータ パケットを復元し、ターゲット IP が VIP になるようにします。この VIP はすべての RS に設定されているため、RS はそれが自分自身であると認識します。 2.3 DRモードこれは IP トンネルに似ていますが、データ パケットの MAC アドレスを RS の MAC アドレスに変更するという点が異なります。実際のサーバーは応答をクライアントに直接返します。 この方法では IP トンネルのオーバーヘッドがなく、クラスター内の実サーバーが IP トンネル プロトコルをサポートする必要はありませんが、スケジューラと実サーバーに同じ物理ネットワーク セグメントに接続されたネットワーク カードが必要です。 3. Lvs DRモードの設定上記の分析に基づいて、DR モードはパフォーマンス効率が比較的高く、セキュリティも高いため、ほとんどの企業が DR モードの使用を推奨していると結論付けることができます。ここで DR モードも構成して、Lvs+Nginx クラスターを実装します。 3 台のマシンを用意しました。まず、3 台のマシンすべてに Nginx がインストールされていることを確認します。 1:192.168.183.133 (DS) 192.168.183.150 外部サービスを提供 2:192.168.183.134 (RS) 192.168.183.150 実際のサービス処理ビジネスプロセス 3:192.168.183.135 (RS) 192.168.183.150 実際のサービス処理ビジネスプロセス 電話番号: 3.1 VIP 構成ネットワーク構成マネージャーを閉じます(各マシンでこれを実行してください) systemctl 停止 NetworkManager systemctl 無効化 NetworkManager 仮想 IP を構成する (VIP 192.168.183.133 で構成) BOOTPROTO=静的 デバイス=ens33:1 ONBOOT=はい IPアドレス=192.168.183.150 ネットマスク=255.255.255.0 ネットワーク サービスを再起動します。 サービスネットワークの再起動 元のネットワーク カードに仮想 IP 150 が追加されていることがわかります。 同時に、 IPADDR=127.0.0.1、ここで 127.0.0.1 はローカル ループバック アドレスであり、どのクラスフル アドレス クラスにも属しません。これはデバイスのローカル仮想インターフェースを表すため、デフォルトではダウンしないインターフェースであると見なされます。 ネットマスク=255.255.255.255 更新する場所: イフアップロー IP を確認すると、lo の下にさらに 150 個の IP があることがわかります。 3.2 LVSクラスタ管理ツールのインストールipvsadm は lvs クラスターを管理するために使用され、手動でインストールする必要があります。 DSをインストールできます。 インストールコマンド: yum インストール ipvsadm バージョン表示: ipvsadm -Ln 効果は以下のとおりです。 3.3 アドレス解決プロトコル
arp_ignore および arp_announce パラメータはどちらも ARP プロトコルに関連しており、主にシステムが arp 応答を返したり arp 要求を送信したりする際の動作を制御するために使用されます。これら 2 つのパラメータは、特に LVS の DR シナリオでは非常に重要です。これらの設定は、DR 転送が正常かどうかに直接影響します。 arp-ignore: arp_ignore パラメータは、外部 ARP 要求を受信したときにシステムが ARP 応答を返すかどうかを制御するために使用されます (0~8、2-8 はほとんど使用されません) 設定ファイル: ネット.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.default.arp_ignore = 1 ネット.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_announce = 2 構成を更新します: sysctl -p ルートを追加します。この時点でルートを認識できない場合は、関連 ルート追加 -host 192.168.183.150 dev lo:1 データ パケットを受信するためにホスト アドレスが追加されます。データ パケットを受信すると、lo:1 に渡されて処理されます。 (シャットダウンの失敗を防ぐには、上記のコマンドを/etc/rc.localに追加する必要があります) ホストを追加した後、 3.4 クラスタ構成ipvsadm コマンドの説明:
クラスター TCP サービス アドレスを追加します: (外部要求は、この構成で指定された VIP によって処理されます) ipvsadm -A -t 192.168.183.150:80 -s rr パラメータの説明:
負荷分散アルゴリズム:
DSでrs(2)ノードを構成する: ipvsadm -a -t 192.168.183.150:80 -r 192.168.183.134:80 -g ipvsadm -a -t 192.168.183.150:80 -r 192.168.183.135:80 -g パラメータの説明:
ノードを追加した後、ipvsadm -Ln で確認すると、さらに 2 つのノードがあることがわかります。 このとき、クラスター リスト内のクライアント要求データと TCP 通信データは永続的に保存されます。効果をよりよく確認するには、次のように保存時間を 2 秒に設定できます。 ipvsadm --set 2 2 2 今回は リクエストが 2 つの Nginx ポーリング間で切り替えられることがわかります。 Lvs+Nginx クラスターを使用して高並列アーキテクチャを構築する実装例に関するこの記事はこれで終わりです。Lvs Nginx クラスターを使用して高並列アーキテクチャを構築する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援してください。 以下もご興味があるかもしれません:
|
<<: 純粋なCSSを使用してスクロールシャドウ効果を実現します
>>: MySQL最適化ソリューション: スロークエリログを有効にする
目次1. 親コンポーネントが子コンポーネントに値を渡す1. 親コンポーネント.vue 2. サブコン...
背景最近、リーダーからコンポーネント ライブラリを構築するように依頼があり、プロジェクトで現在使用さ...
テーブルを美しくするために、テーブルにさまざまな境界線の色を設定できます。基本的な構文<テーブ...
序文metaはhtml言語のhead領域にある補助タグです。おそらく、これらのコードは不要だと思うで...
1. 準備例: 2 台のマシン: 192.168.219.146 (マスター)、192.168.21...
モバイル デバイスでは、フレックス レイアウトが非常に便利です。デバイスの幅に応じてコンテナーの幅を...
目次1. プロトタイプの関係2. プロトタイプチェーン3. 結論序文:前回の記事では、JavaScr...
同僚から、LINUX サーバー上の多くのコマンドが (コマンドが見つかりません) というプロンプトで...
HTML の再利用は、あまり話題に上らない言葉です。今日は、この問題を次のようにまとめたいと思います...
まず解決策を見てみましょう #------------mysql の root ユーザーに権限を付与...
はじめに使えるかもしれないが、あまり使われていない、シンプルで実用的なDockerコマンドをいくつか...
フォーム項目を動的に追加するiview の動的なフォーム追加は非常に簡単です。フォーム項目を配列に設...
最近、サーバーのストレステストを再度行う必要が出てきました。ここでは、最近学んだ見積もりスキームと見...
序文DBA として、仕事中に MySQL マスターとスレーブの同期遅延の問題に遭遇することがよくあり...
目次1. 問題の説明2. 問題解決1. 仮想マシンシステムのインストール時にネットワークがない場合2...