同時実行性の高いサイトでは、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最適化ソリューション: スロークエリログを有効にする
誰もが自分の Web ページの背景にふさわしい画像を見つけることに悩むことが多いと思います。これは事...
[LeetCode] 197.気温上昇Weather テーブルが指定されている場合、前の日付 (昨...
目次ブラウザのレンダリングメカニズムリフローと再塗装リフロー逆流を引き起こす行為:再描画再描画を引き...
目次序文ブラウザコンパイル版ローカルプリコンパイルバージョン要約する参照する序文vue3サンドボック...
Web デザインは、個人の好みや Web ページの内容に応じて、デザインのレイアウトが常に変化します...
目次1. 初期SQLの準備2.MysqlはSQL文の実行時間をチェックします3. さまざまなクエリの...
背景: position:sticky はスティッキー配置とも呼ばれます。スティッキー配置の要素は、...
1. MYSQLのインストール1. ダウンロードしたMySQLインストールファイルmysql-5.5...
1. インストール前の準備1. 公式ウェブサイトからUbuntu 20.04のイメージファイルを直接...
実は多くの会社がユーザー権限ツリーに似た機能を持っています。最近、追加、削除、修正のツリー構造を書き...
偶然、素晴らしい人工知能のチュートリアルを発見したので、みんなと共有せずにはいられませんでした。この...
1. 丸い境界線: CSSコードコンテンツをクリップボードにコピー境界線の半径: 4px ; 2....
効果デモ.html <html> <ヘッド> <メタ文字セット=&qu...
目次序文始めるちょっとした考えコードの実装真似する実装トラックトリガーの実装観察の実装計算の実装序文...
テーブルを画面全体(残りの空白領域)に表示するために、幅属性は 100% と定義されることが多く、セ...