同時実行性の高いサイトでは、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最適化ソリューション: スロークエリログを有効にする
なお、これはvue-cliで作成したプロジェクトではありません。vue.jsを参照して記述したHTM...
目次2. フィールドの連結2. MySQL関数の例をいくつか挙げてください。 2.1 シンボル処理2...
カーネル 2.6 の時代には、アクセス制御セキュリティ ポリシーのメカニズムを提供するために新しいセ...
最近、製品部門のユーザーエクスペリエンスチームの学生は、アライアンス環境における広告に関する一連の研...
オリンピック期間中にIE8ベータ2がリリースされ、英語版のリリースに合わせて中国語版も第一波でリリー...
<テンプレート> <div id="ルート"> <...
1. nacosデータベースを再開します。データベース名nacos_configユーザー名とパスワー...
MySQLマスタースレーブを設定した後、スレーブの状態が正常かどうかわからないことが多く、例外が発生...
1. 4つのrpmパッケージをダウンロードする mysql-コミュニティクライアント-5.7.26-...
正式な環境でアップグレードする場合は、データと重要な設定をバックアップしてください。アップグレードに...
1. CentOS 7 仮想マシンを開きます。 2. 仮想マシンにログインし、リストにないユーザー名...
今日ご紹介したいのは、ネイティブ JS を使用してプログレス バーをドラッグし、要素の透明度を変更す...
目次前面に書かれた予防開発環境構築開発構成に関する注意事項前面に書かれたuni-app は、Vue....
パブリックアカウントのファンデータを同期してバッチプッシュするときに、サーバーがエラー502を報告し...
職業的な観点からも、人生の観点からも、良い再建をすることは本当に簡単ではありません。楽観的で熱心で前...