LVS解析およびNAT,DRモデル構成の詳細

6219 ワード

一、lvs概要
Lvs:linux virtual server(linux仮想サーバ)は、仮想サーバ負荷等化システムです.
現在、4種類のIP負荷等化技術があります.
NAT、DR、TUN、FNAT:FullNAT
10種類のスケジューリングアルゴリズム:
静態の4種類:rr、wrr、SH、DH
動的6種類:lc、wlc、sed、nq、lblc、lblcr
二、四種類のモデル&&十種類のスケジューリングアルゴリズム
1、四種類のモデルのトポロジーと特徴
<1>NATモデル
解析:クライアントはDirector(スケジューラ)に要求を出して、スケジューラはクライアントの要求を受け取って、スケジューラによってバックエンドreal_を選択しますserverはクライアント要求に返信し、返信メッセージはスケジューラを介してクライアントに返される.
特徴と配置要点:
1>real_serverはプライベートIPアドレスを使用するべきです
2>real_serverのゲートウェイはDIPを指すべきです
3>RIPとDIPは同じセグメント内にあるはずです
4>出入りするメッセージはすべてDirector経由で、高負荷でDirectorがシステム性能のボトルネックになる
5>ポートマッピングのサポート
6>real_サーバは任意のOSであってもよい
<2>DRモデルDirectorRouting:ダイレクトルーティング
解析:クライアントはDirector(スケジューラ)に要求を出して、スケジューラはクライアントの要求を受け取って、スケジューラによってバックエンドreal_を選択しますserverはクライアント要求に返信し、返信メッセージはスケジューラを経ずにクライアントに直接返信し、返信メッセージはスケジューラを経ないため、スケジューラの圧力を大幅に低減し、システム系は大幅に向上した.
特徴と配置要点:
1>real_serverはプライベートIPアドレスを使用できます
2>real_サーバのゲートウェイは必ずDIPを指さすことはできません
3>RIPとDIPは同じセグメント内にあるはずです
4>インバウンドのメッセージはDirector経由、アウトバウンドはreal_サーバはクライアントに直接応答する
5>ポートマッピングはサポートされていません
6>real_serverはほとんどの一般的なOSに使用できます
<3>TUNモデルTuneling:DRモデルに近いがIPトンネルをサポートする必要がある
解析:クライアントはDirector(スケジューラ)に要求を出して、スケジューラはクライアントの要求を受け取って、スケジューラによってバックエンドreal_を選択しますserverはクライアント要求に返信し、返信メッセージはスケジューラを経ずにクライアントに直接返信し、返信メッセージはスケジューラを経ないため、スケジューラの圧力を大幅に低減し、システム系は大幅に向上した.
特徴と配置要点:
1>real_serverはプライベートIPアドレスではありません
2>real_サーバのゲートウェイは必ずDIPを指さすことはできません
3>RIPとDIPは同じセグメント内にあるはずです
4>インバウンドのメッセージはDirector経由、アウトバウンドはreal_サーバはクライアントに直接応答する
5>ポートマッピングはサポートされていません
6>real_サーバはIPトンネルをサポートする必要があります
2、十種類のスケジューリングアルゴリズム及び応用シーン
静的4つ:
rr:round-robinホイール調整;サーバ上の実際の接続数やシステム負荷にかかわらず、各サーバに対して均等です.
wrr:weight重み付けホイール調整;実際のサーバの異なる処理能力に基づいてアクセス要求をスケジューリングし、処理能力の強いサーバがより多くのアクセストラフィックを処理できることを保証します.
sh:source hashingソースアドレスハッシュアルゴリズム;要求されたソースIPアドレスに基づいて、ハッシュキーとして静的に割り当てられたハッシュ・リストから対応するサーバを探し出し、そのサーバが利用可能であり、オーバーロードされていない場合、要求をそのサーバに送信し、そうでなければ空に戻る.
dh:ターゲットアドレスハッシュアルゴリズム;要求された宛先IPアドレスに基づいて、ハッシュキーとして静的に割り当てられたハッシュ・リストから対応するサーバを探し出し、そのサーバが利用可能で過負荷ではない場合、要求をそのサーバに送信し、そうでなければ空に戻る.(主にキャッシュサーバ用)
ダイナミック6:
lc:最小接続;Active(アクティブ)+Inactive(非アクティブ)=overload(負荷);スケジューラは、確立されたリンク数が最も少ないサーバ(システムのパフォーマンスが似ているサーバ)にネットワーク要求を動的にスケジューリングします.
wlc:重み付け最小接続;overload/weight;権限値の高いサーバは、アクティブな接続負荷の割合が大きくなります.スケジューラは、実際のサーバの負荷状況を自動的に尋ね、システムのパフォーマンスの差が大きいサーバで使用される重み値を動的に調整します.
sed:最短期待遅延;(Active+1)*256/weight;
nq:並ばない;
lblc:ローカルベースの最小接続;dh+lc
lblcr:レプリケーションされたローカルベースの最小接続;
三、LVS/NAT実戦
1.環境計画
Director(フロントエンドスケジューラ)
eth0:192.168.1.15(DIP)
eth1:172.16.15.15
eth1:0:172.16.15.119(VIP)
# sysctl -w net.ipv4.ip_forward=1  #  IP  

Server 1:(バックエンドサービス1)
IP:192.168.1.5
GW:192.168.1.15(DIP)
Server 2:(バックエンドサービス2)
IP:192.168.1.6
GW:192.168.1.15(DIP)
2.ipvsadm追加ルールのインストール
#yum -y install ipvsadm
#  :    rr
#ifconfig eth1:0 172.16.15.119
[root@stu_yxm15 ~]# ipvsadm -A -t 172.16.15.119:80 -s rr
[root@stu_yxm15 ~]# ipvsadm -a -t 172.16.15.119:80 -r 192.168.1.5 -m
[root@stu_yxm15 ~]# ipvsadm -a -t 172.16.15.119:80 -r 192.168.1.6 -m

ステータスの表示
[root@stu_yxm15 ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
-> RemoteAddress:Port
TCP  172.16.15.119:80                   28      129      128    13341    12547
-> 192.168.1.5:80                     14       57       57     5053     4779
-> 192.168.1.6:80                     14       72       71     8288     7768

スケジューリングアルゴリズムwrr
[root@stu_yxm15 ~]# ipvsadm -A -t 172.16.15.119:80 -s wrr
[root@stu_yxm15 ~]# ipvsadm -a -t 172.16.15.119:80 -r 192.168.1.5 -m -w 2
[root@stu_yxm15 ~]# ipvsadm -a -t 172.16.15.119:80 -r 192.168.1.6 -m -w 3

ステータスの表示
[root@stu_yxm15 ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
-> RemoteAddress:Port
TCP  172.16.15.119:80                   20       96       94    10866     9800
-> 192.168.1.5:80                     12       58       57     6568     6154
-> 192.168.1.6:80                      8       38       37     4298     3646

四、LVS/DR実戦
1.環境計画
Director(フロントエンドスケジューラ)
eth1:172.16.15.15(DIP)
eth1:0:172.16.15.108(VIP)
#sysctl-wnet.ipv4.ip_forward=1#IP転送を開く
Server 1:(バックエンドサービス1)
IP:172.16.15.5
lo:0:172.16.15.108(VIP)
Server 2:(バックエンドサービス2)
IP:192.168.1.6
lo:0:172.16.15.108(VIP)
2.構成
<1>バックエンドReal_server
カーネルパラメータを変更してReal_を禁止servers上のVIPとフロントエンドルーティングの直接通信
#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
####  VIP
#ifconfig lo:0 172.16.15.108 broadcast 172.16.15.108 netmask 255.255.255.255 up
####    
#route add -host 172.16.15.108 dev lo:0

<2>Director(フロントエンドスケジューラ)
#####   VIP
#ifconfig eth1:0 172.16.15.108 broadcast 172.16.15.108 netmask 255.255.255.255 up
#####    
route add -host 172.16.15.108 dev eth1:0
####        
echo 1 > /proc/sys/net/ipv4/ip_forward
####     :(    wlc)
[root@stu_yxm15 ~]# ipvsadm -A -t 172.16.15.108:80 -s wlc
[root@stu_yxm15 ~]# ipvsadm -a -t 172.16.15.108:80 -r 172.16.15.5 -g -w 2
[root@stu_yxm15 ~]# ipvsadm -a -t 172.16.15.108:80 -r 172.16.15.6 -g -w 4

ステータスの表示
[root@stu_yxm15 ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
-> RemoteAddress:Port
TCP  172.16.15.108:80                  258     1272        0   143824        0
-> 172.16.15.5:80                     90      435        0    44927        0
-> 172.16.15.6:80                    168      837        0    98897        0

転載先:https://blog.51cto.com/dreamwolf/1304163