第 5 章 LVS ロード バランシング クラスター
スキルの表示
1. クラスターの構造と動作モードを理解する
2. NFS 共有サービスの構成を学習する
3. LVS ロード バランシング クラスターの構築を学習する
集群技术概述
**インターネットでは、サイトにはハードウェアのパフォーマンス、応答速度、サービスの安定性、データの信頼性に対する高い要件が求められます。(1 つのサーバーですべてのアクセス ニーズに対応できるわけではありません)
。メインフレーム(高価)を使用します
。特別な負荷分散装置
。クラスタサーバの構築(比較的安価な一般サーバを複数統合し、同一アドレスで外部サービスを提供)
。LVS - 企業でよく使われるクラスターサービス(Linux Virtual Server 仮想サーバー)
1. クラスターの意味
*クラスター、クラスター、クラスター
* 複数のホスト (少なくとも 2 つのノード サーバー) で構成されますが、外部には全体としてのみ表示され、1 つのアクセス インターフェイス (ドメイン名または IP) のみを提供します。
2. クラスターの種類
1)。ロード バランサー クラスター
* は、アプリケーション システムの応答性を向上させます。高い同時実行性と高負荷 (LB) の全体的なパフォーマンスを実現します。例(DNSポーリング、アプリケーション層スイッチング、リバースプロキシ)など。
2) 高可用性 (High Availability) クラスター
* により、アプリケーション システムの信頼性が向上します。例 (フェイルオーバー、ダブルクリックホットスタンバイ、マルチマシンホットスタンバイ)
*作業方法: a. 二重化: すべてのノードが同時にオンライン
b. 二重化: すべてのノードが同時にオンラインになります。マスター/スレーブ: マスター ノードがオンラインであり、マスター ノードに障害が発生すると、スレーブ ノードが自動的にマスター ノードに切り替わります。
3) 高性能コンピュータクラスタ [使用頻度が低い]
* アプリケーションシステムの CPU 計算速度を向上させ、ハードウェアリソースと分析機能を拡張します。例 (クラウド コンピューティング、グリッド コンピューティング) は、「分散コンピューティング」と「並列コンピューティング」に依存します。
必要に応じて複数のクラスタ モードを組み合わせることができます
3. 負荷分散構造
第 1 層、ロードスケジューラ(ロードバランサまたはディレクタ)(少なくとも 1 つ)
※本クラスタシステムにアクセスするための唯一の入り口です。外部的には VIP アドレス (仮想 IP/クラスター IP アドレス) です。通常、マスターとスレーブのデュアル マシンのホット スタンバイは、高可用性を確保するように構成されています。
第2層 サーバープール(多数の実サーバー)
※各ノードは独立したリップ(実IP)を持ち、スケジューラによって振り分けられたクライアントリクエストのみを処理します。
*ノードに一時的な障害が発生すると、スケジューラを担当するフォールト トレランス メカニズムがそのノードを隔離します。エラーが解消されたら、サーバー プールに追加し直します。
3 番目の層、共有ストレージ (Share Storage)
* サーバー プールに安定した一貫したファイル アクセス サービスを提供し、クラスタの統一性を確保します。
*NAS デバイスまたは NFS 共有サービスを提供する専用サーバーを使用できます。
4. 負荷分散動作モード (IP、ポート、コンテンツなどに基づきます。最高の効率は IP に基づきます)
*IP に基づく:
。【アドレス変換(NAT)モード】
※スケジューラは、サーバノードのゲートウェイ、クライアントのアクセス入口、各ノードの応答出口となります。
*サーバーとスケジューラーはプライベート IP を使用し、同じ物理ネットワーク上にあります。セキュリティは次の 2 つよりも優れています。
【IPトンネル(TUN)モード】
※オープンなネットワーク構造です。
※スケジューラはクライアントアクセスの入り口
※ノードサーバーは独立したパブリックネットワークIPを持ち、各地に点在し、クライアントに直接応答します。
*専用のIPトンネルを介してスケジューラと通信します。
【ダイレクトルーティング(DR)モード】
※セミオープン
※スケジューラはクライアントへのアクセスのみを提供
※ノードサーバはスケジューラと同一の物理ネットワーク上に集中して配置されます。ローカル接続経由。
*ノードサーバーはクライアントに直接応答します。
*NAT はパブリック IP を 1 つだけ必要とし、最も使いやすく、セキュリティが優れており、多くのハードウェア負荷分散デバイスで使用されています。
*DR と TUN は、負荷容量が強く、適用範囲が広く、ノードのセキュリティがわずかに劣ります。
关于LVS虚拟服务器
1.Linux 仮想サーバー
*Linux カーネルの一部。
* Linux カーネル用の負荷分散ソリューション
* 1998 年 5 月、中国の Zhang Wensong 博士によって作成
* 公式 Web サイト: http://www.linuxvirtualserver.org/
[モジュールのロード]
[root@localhost ~]# modprobe ip_vs
[LVS のカーネル サポートを確認する]
[root@localhost ~]# cat /proc/net/ip_vs
IP 仮想サーバー バージョン 1.2.1 (サイズ = 4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
2.LVS ロード スケジューリング アルゴリズム
*ラウンド ロビン
。実際の接続数やシステム負荷に関係なく、順番に分散されます。
*加重ラウンドロビン
。各ノードの負荷ステータスを自動的に照会し、その重みを動的に調整します。
*最小接続数
。接続数が最も少ないノードを優先する
*重み付けされた最小接続
。サーバーノード間の性能差が大きい場合、重みは自動的に調整されます。重みが大きいものは、アクティブな接続の負荷のより大きな割合を負担します。
…
使用ipvsadm工具(LVS群集管理工具)
1. 仮想サーバーの作成
yum -y ipvsadm をインストールします
ipvsadm -v
[スケジューラの VIP は、このマシンで実際に有効になっている IP アドレスである必要があります]
ipvsadm -A -t 202.1.1.1:80 -s rr
-A 仮想サーバーを追加します
-t vip アドレスと tcp ポート
-s ロード スケジューリング アルゴリズム (ポーリング rr、加重ポーリング wrr、最小接続 lc、加重最小接続 wlc)
2. サーバーノードの追加と削除
ipvsadm -a -t 202.1.1.1:80 -r 192.168.10.1:80 -m -w 1
-a 実サーバーを追加します
-t vip アドレスと tcp ポート
-r rip アドレスとポート
-m nat クラスター モードを使用します (-g DR モード、-i TUN モード)
-w 重みを設定します (ノードを 0 で一時停止します)
ipvsadm -a -t 202.1.1.1:80 -r 192.168.10.2:80 -m -w 1
ipvsadm -a -t 202.1.1.1:80 -r 192.168.10.3:80 -m -w 1
ipvsadm -a -t 202.1.1.1:80 -r 192.168.10.4:80 -m -w 1
【ノードの削除】
ipvsadm -d -r 192.168.10.4:80 -t 202.1.1.1:80
[仮想サーバー全体を削除]
ipvsadm -D -r 202.1.1.1:80
3. クラスターとノードのステータスを確認する
ipvsadm -ln
*マスクNATモード
- ルート DR モード
4. 負荷分散戦略を保存する
ipvsadm-save > /etc/sysconfig/ipvsadm
cat /etc/sysconfig/ipvsadm
サービス ipvsadm 停止
サービスipvsadmの開始
NFS共享存储服务(负载均衡群集常用)
1. ネットワーク ファイル システム、ネットワーク ファイル システム
* RPC (リモート プロシージャ コール) に依存
* nfs-utils (NFS 共有パブリッシングおよびアクセス)、rpcbind (rpc サポート) ソフトウェア パッケージをインストールする必要があります
* システム サービス: nfs、rpcbind
* 共有設定ファイル:/etc/exports
2. NFS を使用して共有リソースを公開する
*nfs-utils および rpcbind ソフトウェア パッケージをインストールする
yum -y nfs-utils rpcbind をインストールします
chkconfig NFS がオン
chkconfig rpcbind がオン
※共有ディレクトリを設定
[ディレクトリの場所 クライアントアドレス(権限操作)]
/etc/exports
[フォルダー /opt/wwwroot を 172.16.16.0/24 と共有し、読み取りおよび書き込み操作を許可します]
vi /etc/exports
/opt/wwwroot 172.16.16.0/24 (rw [読み取りおよび書き込み]、sync [同期書き込み]、no_root_squash [クライアントが root としてアクセスするときにローカル root 権限を付与])
*NFSサービスプログラムを開始します
[最初に rpcbind を開始し、次に nfs を開始します]
サービスrpcbindの開始
サービスNFSの開始
netstat -anpt |grep rpcbind
*このマシンによって公開されている NFS 共有ディレクトリを表示します
ショーマウント -e
※クライアントPCからサーバーの共有状況を確認できます。
showmount -e サーバー IP
3. クライアントの NFS 共有リソースにアクセスします (クラスター サービスの場合、安定性を確保するために、NFS サーバーとクライアントの間で専用のネットワーク接続を使用することが最善です)。
※rpcbindパッケージをインストールし、rpcbindサービス(クライアント)を起動します。
yum -y rpcbind nfs-utils をインストールします
chkconfig rpcbind がオン
サービスrpcbindの開始
showmount -e サーバー IP
*NFS 共有ディレクトリを手動でマウントする
マウント 172.16.16.172:/opt/wwwroot /var/www/html
尾部 -1 /etc/mtab
vi /var/www/html/index.html
*fstab自動マウント設定
私たちは /etc/fstab
172.16.16.172:/opt/wwwroot /var/www/html nfs のデフォルト、_netdev 0 0
考えてみてください:
サーバー クラスターの一般的なタイプは何ですか?
ipvsadm を使用して LVS クラスターをセットアップする基本的なプロセスは何ですか?
NFS 共有ディレクトリを構成して使用するにはどうすればよいですか?
构建LVS-NAT群集
[ケース環境]
1. LVS スケジューラが Web サーバー プールのゲートウェイとして機能します。
2. ラウンド ロビン (rr) スケジューリング アルゴリズムを使用します。
[設定プロセス]
1. LVS スケジューラの設定: SNAT ポリシー、LVS-NAT ポリシー
2. Web ノード サーバーの設定: httpd サービス
3. http://172.16.16.172/ にアクセスし、クラスターの割り当てを確認します。
构建LVS-DR群集
LVS/DRモードの原理分析(FAQ)
LVS には、LVS-DR、LVS-NAT、LVS-TUN の 3 つのモードがあります。この記事では、LVS-DR モードの関連原則を FAQ 形式で紹介します。DR モードでは、スケジューラーと実際のサーバーの両方に、同じ物理ネットワーク セグメントに接続されたネットワーク カードがあります。vs/dr 自体は IP 層より上の情報は考慮せず、ポート番号さえも tcp/ip プロトコル スタックによって判断され、それが正しいかどうかが判断されます。
- LVS/DR はリクエスト メッセージをどのように処理しますか? IP パケットの内容は変更されますか?
1.1 vs/dr 自体は、IP 層より上の情報は気にしません。ポート番号さえも、TCP/IP プロトコル スタックによって正しいかどうかが判断されます。vs/dr 自体は、主に次のことを行います。
1) クライアントのリクエストを受信し、設定した負荷分散アルゴリズムに従ってリアルサーバーの IP を選択します。
2) 選択した IP に対応する MAC アドレスをターゲット MAC として使用し、IP パケットをフレームに再カプセル化して RS に転送します。
3) 接続情報をハッシュ テーブルに記録します。
vs/dr は実行する処理が非常に少なく、非常にシンプルであるため、効率が非常に高く、ハードウェア負荷分散装置と比べてもそれほど劣りません。
データ パケットとデータ フレームの一般的なフロー方向は次のとおりです。クライアント --> VS --> RS --> クライアント
1.2 前に回答したように、vs/dr は IP パケットの内容を変更しません。
- RealServer が lo インターフェイスで VIP を構成するのはなぜですか? 出力ネットワーク カードに VIP を設定することは可能ですか?
2.1 RS が宛先アドレス vip を持つ IP パケットを処理できるようにするには、RS はまずこのパケットを受信できなければなりません。
vip on lo を設定すると、パケットの受信を完了し、結果をクライアントに返すことができます。
2.2 答えは、出口ネットワーク カードに VIP を設定できないということです。そうしないと、VIP がクライアントの ARP リクエストに応答し、クライアント/ゲートウェイ ARP テーブルに混乱が生じ、その結果、全体のロード バランスが適切に機能しなくなります。
- RealServer が ARP フレームを抑制するのはなぜですか?
この問題は前の質問で説明されており、実装コマンドと併せてここでさらに詳しく説明します。デプロイメントの実装時に次の調整を行います。
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
多くの人はその機能が何であるかを理解していないと思いますが、ただそこに存在する必要があることだけを知っています。ここでは詳しくは説明しませんが、補足として少しだけ説明します。
3.1
echo “1” >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo “2” >/proc/sys/net/ipv4/conf/lo/arp_announce
arp は非常に重要であるため、これら 2 つの項目は省略できます。インターフェイスは意味がありません。
3.2 RS の外部ネットワーク インターフェイスが eth0 の場合、
echo “1” >/proc/sys/net/ipv4/conf/all/arp_ignore
echo “2” >/proc/sys/net/ipv4/conf/all/arp_announce
実際に実行する必要があるのは次のとおりです。
echo “1” >/proc/sys/net/ipv4/conf/eth0/arp_ignore
echo “2” >/proc/sys/net/ipv4/conf/eth0/arp_announce
したがって、個人的には上記の 2 つの項目を追加することをお勧めしますシステム上の上記 2 つの値のデフォルト値が 0 でない場合、問題が発生する可能性があるため、スクリプトを実行します。
- LVS/DR ロード バランサー (ディレクター) と RS が同じネットワーク セグメントに存在する必要があるのはなぜですか?
最初の質問から、vs/dr がリクエストを RS に転送する方法を理解する必要がありますよね? これはデータ リンク層で実装されるため、ディレクタは RS と同じネットワーク セグメント内に存在する必要があります。
- ディレクター上の eth0 インターフェイスには、VIP に加えて IP (つまり DIP) を装備する必要があるのはなぜですか?
5.1 HA またはロード バランスに keepalived やその他のツールを使用する場合、ヘルス チェック中に DIP を使用する必要があります。
5.2 ヘルスチェックメカニズムのない HA またはロードバランスには実用的な意味がありません。
- LVS/DR ip_forward を有効にする必要がありますか?
不要。ディレクタとリアルサーバは同じネットワーク セグメント上にあるため、転送を有効にする必要はありません。
- ディレクターの VIP ネットマスクは 255.255.255.255 でなければなりませんか?
lvs/dr では、ディレクターの VIP のネットマスクを 255.255.255.255 に設定する必要はなく、再度そこにアクセスする必要もありません。
Route add -host $VIP dev eth0:0
ディレクターの VIP は、本来、通常の IP アドレスと同様に外部に公開されることを目的としているため、あまり特別なものにしないでください。
- LVS/DR は TCP スリーウェイ ハンドシェイクをどのように実行しますか?
【事例環境】
1. LVS スケジューラは Web アクセスの入口のみとなる
2. Web アクセスの出口は各ノードサーバが負担する。
[設定プロセス - LVS スケジューラ]
1. 外部ネットワーク インターフェイス eth0、クラスター インターフェイス eth0:0
[ファイアウォールとネットワーク管理サービスをオフにする]
サービス iptables が停止する
chkconfig iptables オフ
サービス NetworkManager の停止
chkconfig NetworkManager オフ
セットフォース0
[仮想IPを構成し、パブリックIPと同じネットワークセグメントに配置します]
cp ifcfg-eth1 ifcfg-eth1:0
vi ifcfg-eth1:0
DEVICE=eth1:0
ONBOOT=yes
BOOTPROTO=static
IPADDR=173.16.16.200
NETMASK=255.255.255.0 [必要に応じて 255.255.255.255 に構成可能]
ifup eth1:0
ifconfig eth1:0
eth1:0 リンクのカプセル化:イーサネット HWaddr 00:0C:29:65:16:13
inet addr:173.16.16.200 Bcast:173.16.16.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
2. /proc カーネルパラメータを調整し、リダイレクト応答をオフにします
vi /etc/sysctl.conf
……
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth1.send_redirects = 0
……
sysctl -p
3. LVS-DR クラスターポリシーの構成
サービス ipvsadm ステータス
サービス ipvsadm 停止
ipvsadm -A -t 172.16.16.200:80 -s rr
ipvsadm -a -t 172.16.16.200:80 -r 172.16.16.10 -g -w 1
ipvsadm -a -t 172.16.16.200:80 -r 172.16.16.20 -g -w 1
サービス ipvsadm 保存
chkconfig ipvsadm オン
【設定手順 - Webノードサーバー】
1. 外部ネットワーク インターフェイス eth0、クラスター インターフェイス lo:0
[ファイアウォール、ネットワーク管理、selinux をオフにするため、詳細は説明しません]
セットフォース0
vi ifcfg-lo:0
DEVICE=lo:0
IPADDR=173.16.16.200[vip 仮想 IP]
NETMASK=255.255.255.255[32 ビット all-1 マスクである必要があります]
ONBOOT=yes
ifup lo:0
ifconfig lo:0
2. /proc カーネルパラメータを調整し、ARP 応答をオフにします
vi /etc/sysctl.conf
……
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4。 conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
……
sysctl -p
3. クラスター IP アドレスにローカル ルート レコードを追加します。
vi /etc/rc.local
……
[ルーティングレコードの保存]
/sbin/route add -host 173.16.16.200 dev lo:0
ルート追加 -ホスト 173.16.16.200 dev lo:0
4. httpd サービスを設定して有効にする
サービスrpcbindの開始
サービスNFSの開始
showmount -e 192.168.10.100
マウント 192.168.10.100:/web1 /var/www/html
サービスhttpdの再起動
[LVS-DRクラスターのテスト]