.LVSの基本的な考え方
1.定義
- LVSはLinuxカーネルの中にカプセル化されたLinux仮想サーバー、つまりLinux仮想サーバー、の略です。LVS自体は、ロードバランサでリクエストを処理するためには受け付けておりませんが、要求は、バックエンドサーバー、実際のRealServerの上に置くに転送されているので理由は、仮想サーバーです。
- LVSは、(トランスポート層のTCP / UDP)、7(アプリケーション層)負荷分散ツールが、一般的にその4つの負荷分散IPVSを使用するパブリック4であるコンテンツ配信負荷ツールktcpvsの7(カーネルのTCPながら、仮想サーバーは)多くの人は使用しないで、非常に完璧ではありません。
- IPVSカーネルはフレームに統合、ツールはツールは、カーネルのIPVSを管理するためのルールを定義することができ、プログラムのipvsadmのユーザー・スペースで管理することができます。iptablesのと同じnetfilterの間の関係が好きです。
2、LVS-IPVSいくつかの関連IP
-
VIP:仮想IP:外部ネットワークカードがサーバーLVSのIPアドレスにパケットを受信します
-
DIP:ディレクターのIP:RealServerのLVSサーバ上のLAN IPアドレスにパケットを転送
-
RIP:RealServerの(略しRS)取締役は、IP、IPサーバが提供するサービスを転送するパケットを受信します。
-
CIP:クライアントのIP
3、LVSモード(DR)
の基本的な考え方モード1.DR -
DR(直接ルーティング)モード、ダイレクトルーティングモード
-
データパケットのスケジューラ処理は、宛先MACアドレスは、リンク層の負荷分散にデータフレームを書き換えています。
-
DRは、宛先MACアドレス要求パケットを書き換えることにより、実サーバに要求を送信し、実サーバが直接ユーザに戻って応答します。
-
通信は、データパケットを転送するMACアドレスを使用するように、スケジューラは、実サーバと同一の物理ネットワークに接続されたネットワークカードの両方を必要とします。
2.DRモード動作
- (1)データフレームの宛先MACアドレスを書き換えるディレクター、ディレクターを受信した後、クライアントに送信されるRSの後端のMACアドレスは、ロードバランシングアルゴリズムに応じて、実際にLANを介して送信されるRS(にデータパケットを転送しますが、唯一のRS MACアドレスは破棄しません)
- (2)RSがパケットを受信した後、VIP、VIPおよびRS自体について見出さパケットの宛先IPアドレスは、独自のインタフェースに配置されているので、RSは、パケットを受信し、処理します。
- 処理が完了した後3)、応答してクライアントに直接応答メッセージをRS。このとき、送信先IP CIPとしてIPパケットの送信元VIP、など。
モードの基本的な性質と要件3.DR
- DIPとRIPのRealServerのディレクターは、同じネットワークセグメント、通信に使用するMACアドレスでなければなりません。
- RealServerのVIPアドレスは、ディレクターによって転送されたデータパケットを受信するための、および応答パケットの送信元IPとして、設定する必要があります。
- VIP-> CIPクライアントへの送信元と送信先IPパケットにRealServerの応答
- ディレクターは唯一の着信要求、要求完了応答のRealServerを処理します。
IV。DRアナログモード
実験環境:
ホストコンピューター | サービス |
---|---|
172.25.254.1 | スケジューラLVS |
172.25.254.2 | RealServerの |
172.25.254.3 | RealServerの |
スケジューラは、DS設定されている
負荷分散スケジューリングポリシーを設定し、管理ツールLVS 1インストール
#安装lvs管理工具
[root@toto1 ~]# yum install ipvsadm -y
# 使用管理工具添加策略
[root@toto1 ~]# ipvsadm -A -t 172.25.254.100:80 -s rr # 添加轮询调度策略
[root@toto1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.2:80 -g
[root@toto1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3:80 -g
# 添加两个RIP # 查看设置好的策略
[root@toto1 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.47.100:http rr
-> 172.25.254.2:http Route 1 0 0
-> 172.25.254.3:http Route 1 0 0
2 VIPカードのeth0に追加
IP addrは一時的にIPを追加する172.25.254.100/24のdevのeth0の#1のeth0 NICを追加
[root@toto1 ~]# ip addr add 172.25.254.100/24 dev eth0 # 添加vip
[root@toto1 ~]# ip addr show eth0 # 查看网卡信息
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
pfifo_fast state UP qlen 1000
link/ether 52:54:00:9e:0d:c8 brd ff:ff:ff:ff:ff:ff
inet 172.25.254.1/24 brd 172.25.47.255 scope global eth0
valid_lft forever preferred_lft forever
inet 172.25.254.100/24 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe9e:dc8/64 scope link
valid_lft forever preferred_lft forever
RS構成は、(すべてのサーバが同じ設定)
ページにアクセスするのhttpd起動時の設定をインストール、1
注意:検証するためにどこ負荷分散効果、実際のバックエンドサーバ設定異なるアクセス内容、異なるバックエンドサーバから明確にマークされたコンテンツ。
図2に示すように、VIPは、各物理NIC(toto1、toto2、TOTO3)に添加しました
一時的にIPを追加する172.25.254.100/24のdevのeth0の#1のeth0 NICをIP addrに追加
3、DSに取り組むための設定arptable戦略は、むしろVIPのRSの要求よりも、すべてのユーザーに送信されます
yum install arptables -y # 安装管理工具
arptables -A INPUT -d 172.25.254.100 -j DROP # 设置不回应对自己VIP的请求
arptables -A OUTPUT -s 172.25.254.100 -j mangle --mangle-ip-s 172.25.254.2 ##设置将发送出去的数据包的源ip修改成VIP
すべての実サーバのIPが彼らの実際の状況に応じて設定します。
クライアントのテスト:
[root@foundation47 yum]# curl 172.25.254.100
toto2
[root@foundation47 yum]# curl 172.25.254.100
toto3
[root@foundation47 yum]# curl 172.25.254.100
toto2
[root@foundation47 yum]# curl 172.25.254.100
toto3
[root@foundation47 yum]# curl 172.25.254.100
toto2
[root@foundation47 yum]# curl 172.25.254.100
toto3
[root@foundation47 yum]# curl 172.25.254.100
toto2
#負荷分散スケジューラ
[root@toto1 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP toto1:http rr
-> 172.25.254.2:http Route 1 0 4
-> 172.25.254.3:http Route 1 0 3