LVSロードバランシングの原則、NATモードでのLVSロードバランシングの実際の展開(詳細な図とテキスト!)

LVSロードバランシングの原則、NATモードでのLVSロードバランシングの実際の展開(詳細な図とテキスト!)

1つは、クラスターテクノロジーです。

1.クラスターの意味

いわゆるクラスターは、クラスター(クラスター)とも呼ばれます。複数のホストで構成されていますが、全体として外部にのみ表示され、1つのアクセスエントリ(ドメイン名またはIP)のみを提供します。これは、大規模なコンピューターに相当します。

実際のアプリケーションでは、Webサーバークラスターの前に常に負荷分散サーバーがあります。負荷分散デバイスのタスクは、Webサーバートラフィックへの入り口として機能し、最適なWeb​​サーバーを選択し、クライアントの要求をに転送することです。クライアントから実サーバーへの透過的な転送。
LVS、Nginx、およびHAProxyは、現在最も広く使用されている3つのソフトウェア負荷分散ソフトウェアです。

2.該当するシナリオ

負荷分散の使用は、一般に、Webサイトの規模が大きくなるにつれて、さまざまな段階でさまざまなテクノロジーを使用することに基づいています。
たとえば、中小規模のWebアプリケーションの場合、1日あたりのPVは1,000万未満であり、Nginxを使用してもまったく問題ありません。
マシンが多い場合は、DNSポーリングを使用できます。LVSは多くのマシンを消費します。
大規模なWebサイトや重要なサービスで、サーバーの数が多い場合は、LVSの使用を検討できます。
現在、Webサイトアーキテクチャには一般的に合理的で人気のあるアーキテクチャスキームがあります。Nginx/ HAProxy + KeepalivedがWebのフロントエンドのロードバランサーとして使用され、バックエンドは1つのマスターと複数のスレーブを備えたMySQLデータベースと読み取り/書き込みを使用します。分離し、LVS + Keepalivedアーキテクチャが採用されています。

3.クラスターの存在の重要性

3.1問題の出現

インターネットアプリケーションでは、サイトのハードウェアパフォーマンス、応答速度、サービスの安定性、およびデータの信頼性に対する要件がますます高まっているため、単一のサーバーで負荷分散と高可用性の要件を満たすことができなくなりました。

3.2解決策

方法1:高価なミニコンピューターとメインフレームを使用します。(高コスト)
方法2:比較的安価な複数の通常のサーバーを使用してサービスクラスターを構築します。(低価格)

ほとんどの企業は、方法2を選択して複数のサーバーを統合し、LVSを使用して高いサーバー可用性と負荷分散を実現し、同じIPアドレスから外部に同じサービスを提供します。そして、これは企業で一般的に使用されているクラスターテクノロジーです-LVS(Linux Virtual Server、Linux VirtualServer)。

注:最初のタイプは垂直方向の拡張で、2番目のタイプは水平方向の拡張です。

2.クラスターの種類

1.クラスターのターゲットの違いに応じて、3つのタイプに分けることができます

負荷分散クラスター
高可用性クラスター
高性能コンピューティングクラスター

2.3つのクラスターの概要

負荷分散クラスター

  • アプリケーションシステムの応答性を改善し、可能な限り多くのアクセス要求を処理し、待ち時間を短縮することを目的として、高い同時実行性と負荷(LB)の全体的なパフォーマンスが得られます。
  • LBの負荷分散は、マスターノードのオフロードアルゴリズムに依存しています。マスターノードは、クライアントからのアクセス要求を複数のサーバーノードに分散するため、システム全体の負荷が軽減されます。

高可用性クラスター

  • アプリケーションシステムの信頼性を向上させ、中断時間を可能な限り短縮し、サービスの継続性を確保し、高可用性(HA)のフォールトトレランス効果を実現します。
  • HAの動作モードには、デュプレックスモードとマスタースレーブモードがあります。デュプレックスとは、すべてのノードが同時にオンラインであることを意味します。マスタースレーブとは、マスターノードのみがオンラインであることを意味しますが、障害が発生すると、スレーブノードは自動的にマスターノード。
    例:「フェイルオーバー」、「デュアルシステムホットバックアップ」など。

高性能コンピュータークラスター

  • アプリケーションシステムのCPUコンピューティング速度を向上させ、ハードウェアリソースと分析機能を拡張することを目的として、大規模なスーパーコンピューターのハイパフォーマンスコンピューティング(HPC)機能と同等の機能を取得します。
  • ハイパフォーマンスコンピューティングクラスターのハイパフォーマンスは、「分散コンピューティング」と「並列コンピューティング」に依存しています。複数のサーバーのCPU、メモリ、その他のリソースが専用のハードウェアとソフトウェアによって統合され、大型のスーパーコンピューターだけが持つコンピューティング機能を実現します。 。

3、負荷分散クラスターアーキテクチャ

1.負荷分散構造

  • 最初のレベルでは、ロードスケジューラ(ロードバランサーまたはディレクター)
    がクラスターシステム全体の一意の入り口にアクセスし、外部のすべてのサーバーで共有されるVIPアドレス(クラスターIPアドレスとも呼ばれます)を使用します。通常、メインとバックアップの2つのスケジューラは、ホットバックアップを実現するように構成されています。メインスケジューラに障害が発生した場合、高可用性を確保するために、メインスケジューラをバックアップスケジューラにスムーズに置き換えることができます。
  • 2番目の層で
    あるサーバープール(サーバープール)クラスターによって提供されるアプリケーションサービスは、サーバープールによって支えられます。サーバープールでは、各ノードが独立したRIPアドレス(実際のIP)を持ち、スケジューラーによって分散されたクライアント要求のみを処理します。ノードに一時的な障害が発生すると、ロードスケジューラのフォールトトレラントメカニズムがノードを分離し、エラーが解消されるのを待ってから、ノードをサーバープールに再入力します。
  • 第3層の共有ストレージ
    は、サーバープール内のすべてのノードに安定した一貫性のあるファイルアクセスサービスを提供し、クラスター全体の統合を保証します。共有ストレージは、NASデバイスを使用することも、NFS共有サービス専用のサーバーを提供することもできます。

2.LVSロードバランシングメカニズム

  • LVSは4層の負荷分散であり、OSIモデルの4番目の層であるトランスポート層に基づいて構築されています。トランスポート層には使い慣れたTCP / UDPがあり、LVSはTCP / UDP
    負荷分散をサポートしています
  • LVSは4層の負荷分散であるため、DNSドメイン名のローテーション解決、アプリケーション層の負荷スケジューリング、クライアントスケジューリングなど、他の高レベルの負荷分散ソリューションと比較して、その効率は非常に高くなっています。

3.負荷分散クラスターの動作モードの分析

  • 負荷分散クラスターは、現在、企業で最も一般的に使用されているクラスタータイプです。
  • クラスター負荷スケジューリングテクノロジーには3つの動作モードがあり、モードは次のとおりです。

3.1 NATモード:アドレス変換

  • NATモードと呼ばれるネットワークアドレス変換
  • ファイアウォールのプライベートネットワーク構造と同様に、ロードスケジューラは、すべてのサーバーノードのゲートウェイとして機能します。つまり、クライアントのアクセス入口として機能し、クライアントに応答する各ノードのアクセス出口としても機能します。
  • サーバーノードはプライベートIPアドレスを使用し、ロードスケジューラと同じ物理ネットワーク上にあります。セキュリティは他の2つの方法よりも優れています。

3.2 TUNモード:IPトンネル

  • TUNモードと呼ばれるIPトンネル
  • オープンネットワーク構造を採用しているため、ロードスケジューラはクライアントのアクセス入口としてのみ機能し、各ノードはロードスケジューラを通過するのではなく、独自のインターネット接続を介してクライアントに直接応答します。
  • サーバーノードはインターネットのさまざまな場所に分散しており、独立したパブリックIPアドレスを持ち、専用のIPトンネルを介してロードスケジューラと通信します。

3.3DRモード:直接ルーティング

  • DRモードと呼ばれる直接ルーティング
  • TUNモデルの構造と同様のセミオープンネットワーク構造を採用していますが、ノードはどこにでも散在しているわけではなく、スケジューラと同じ物理ネットワーク上にあります。
  • ロードスケジューラは、専用のIPトンネルを確立することなく、ローカルネットワークを介して各ノードサーバーに接続されます。

上記の3つの動作モードで

  • NAT方式ではパブリックIPアドレスが1つだけ必要なため、セキュリティが強化された負荷分散モードを最も簡単に使用できます。多くのハードウェア負荷分散デバイスはこの方式を使用します。
  • DRモードとTUNモードは、より強力な負荷容量とより広いアプリケーション範囲を備えていますが、ノードのセキュリティはわずかに劣っています。

4、LVS仮想サーバーについて

1.Linux仮想サーバー

●Linuxカーネル用に開発された負荷分散ソリューション
●1998年5月に中国のZhangWensong博士によって設立されました
●公式ウェブサイト:http://www.linuxvirtualserver.orgl●LVS
は、実際にはIPアドレスに基づく仮想化アプリケーションと同等です。 IPアドレスとコンテンツリクエストの配布は効率的なソリューションを提案します

2.LVSの重要性

LVSはLinuxカーネルの一部になり、デフォルトでip_ vsモジュールとしてコンパイルされ、必要に応じて自動的に呼び出すことができます。CentOS 7システムでは、次の操作でip_ vsモジュールを手動でロードし、現在のシステムのip_vsモジュールのバージョン情報を表示できます。

#加载ip_va模块
modprobe ip_vs
#确认内核对LVS的支持
cat /proc/net/ip_vs

ここに画像の説明を挿入

3. LVS管理ツール:ipvsadm

ipvsadm関数とオプションの説明

オプション 関数
-A 仮想サーバーを追加する
-D 仮想サーバー全体を削除します
-s ロードスケジューリングアルゴリズムを指定します(ポーリング:rr、加重ラウンドロビン:wrr、最小接続:lc、加重最小接続:wlc)
-a 実サーバー(ノードサーバー)を追加する手段
-d ノードを削除します
-t VIPアドレスとTCPポートを指定します
-r RIPアドレスとTCPポートを指定します
-m NATクラスターモードの使用を示します
-g DRモードの使用を示します
-私 TUNモードを使用する手段
-w 重みを設定します(重みが0の場合、ノードは一時停止されます)
-p 60 60秒間長い接続を維持する手段
-l リスト内のLVS仮想サーバーを表示します(デフォルトではすべてを表示します)
-n アドレス、ポート、その他の情報をデジタル形式で表示します。多くの場合、「-l」オプションと組み合わせて使用​​されます。ipvsadm -ln

4.LVSロードスケジューリングアルゴリズム

1)ラウンドロビン

●受信したアクセス要求は、クラスター内の各ノード(実サーバー)に順番に割り当てられ、実際の接続数やサーバーのシステム負荷に関係なく、各サーバーは同等に扱われます。

2)加重ラウンドロビン

●スケジューラによって設定された重み値に従ってリクエストを分散します。重み値が高いノードが最初にタスクを取得し、より多くのリクエストが割り当てられます。
●パフォーマンスの高いサーバーがより多くのアクセストラフィックを処理できるようにします。

3)最小の接続

●実サーバーによって確立された接続数に応じて、受信したアクセス要求は、最初に接続数が最も少ないノードに割り当てられます。

4)加重最小接続(加重最小接続)

●サーバーノードのパフォーマンスの差が大きい場合、実サーバーの重みを自動的に調整できます
●パフォーマンスの高いノードは、アクティブな接続負荷の大部分を負担します

5、LVS負荷分散NATモードクラスター展開

LVSスケジューラーはWebサーバープールのゲートウェイとして使用されます。LVSには、ラウンドロビン(rr)スケジューリングアルゴリズムを使用して、それぞれ内部ネットワークと外部ネットワークに接続された2つのネットワークカードがあります。

環境の展開

ホスト オペレーティング・システム IPアドレス 必要なツール/サービス
ロードスケジューラ CentOS7
7-2
内部ゲートウェイ:192.168.2.4
外部ゲートウェイ:12.0.0.1
ipvsadm
NFSサーバー CentOS7
7-3
192.168.2.5 rpcbind、nfs-utils
Webノードサーバー1 CentOS7
7-4
192.168.2.6 rpcbind、nfs-utils、httpd
Webノードサーバー2 CentOS7
7-5
192.168.2.7 rpcbind、nfs-utils、httpd
クライアント ウインドウズ10 12.0.0.10

ここに画像の説明を挿入

注:ロードディスパッチャーのゲートウェイは、独自のIPに設定することも、設定しないこともできます。サーバーとクライアントのゲートウェイを設定する必要があります。アドレスは、ロードディスパッチャーの内部および外部ゲートウェイアドレスです。(クロスネットワークアクセスにはゲートウェイが必要です)

ここに画像の説明を挿入

1.NFS共有ストレージを展開します

CentOS7-3 192.168.2.5

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind

systemctl start rpcbind.service
systemctl start nfs.service

systemctl enable nfs.service
systemctl enable rpcbind.service

mkdir /opt/test1
mkdir /opt/test2

chmod 777 /opt/test1
chmod 777 /opt/test2

vim /etc/exports
/opt/test1 192.168.2.0/24(rw,sync)
/opt/test2 192.168.2.0/24(rw,sync)

exportfs -rv

ここに画像の説明を挿入

2.ノードサーバーを構成します

Web1サーバー:CentOS7-4 192.168.2.6

Web2サーバー:CentOS7-5 192.168.2.7

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum install httpd -y
systemctl start httpd.service
systemctl enable httpd.service

yum -y install nfs-utils rpcbind

systemctl start rpcbind
systemctl enable rpcbind

showmount -e 192.168.2.5

ここに画像の説明を挿入

Web1サーバー:CentOS7-4 192.168.2.6

mount.nfs 192.168.2.5:/opt/test1 /var/www/html
df -h
echo 'this is test1 web!' > /var/www/html/index.html

ここに画像の説明を挿入

Web2サーバー:CentOS7-5 192.168.2.7

mount.nfs 192.168.2.5:/opt/test2 /var/www/html
df -h
echo 'this is test2 web!' > /var/www/html/index.html

ここに画像の説明を挿入

3.ロードスケジューラを構成します

ロードスケジューラ:内部ゲートウェイens33:192.168.2.4、外部ゲートウェイens36:12.0.0.1

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

ここに画像の説明を挿入

1)SNAT転送ルールを構成する

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
或
echo '1' > /proc/sys/net/ipv4/ip_forward
sysctl -p

iptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ens36 -j SNAT --to-source 12.0.0.1

ここに画像の説明を挿入

2)LVSカーネルモジュールをロードします

#加载 ip_vs模块
modprobe ip_vs
#查看 ip_vs版本信息
cat /proc/net/ip_vs

ここに画像の説明を挿入

3)ipvsadm管理ツールをインストールします

yum -y install ipvsadm

#启动服务前须保存负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm
或
ipvsadm --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

ここに画像の説明を挿入

4)負荷分散戦略を構成します(NATモードはサーバーでのみ構成する必要があり、ノードサーバーに特別な構成は必要ありません)

#清除原有策略
ipvsadm -C

ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.2.6:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.2.7:80 -m
#启用策略
ipvsadm

#查看节点状态,Masq代表 NAT模式
ipvsadm -ln
#保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm

ここに画像の説明を挿入

4.テスト結果

ブラウザを使用して、IPが12.0.0.10のクライアントでhttp://12.0.0.1/にアクセスし、定期的に負荷分散効果を更新してテストします。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_35456705/article/details/113628547