DRモードを構築するのLVSロードバランシングクラスタ、あなたが今行うことができます!!!

LVSロードバランシングクラスタは、ボーエンを参照することができますについての関連概念:LVS負荷分散クラスタの詳細

I.ケースの概要

-DR LVS負荷分散モードモード:クラスタのアクセスエントリとしてLVSロードバランサが、ゲートウェイとして使用されていない、それぞれのアクセスインターネットのすべてで、プール内のノードサーバは、クライアントに送信する(インターネット)のパケットは、ウェブからの応答を必要としません。 LVSロードバランサの後。

-DR LVS負荷分散モードモード:
利点:ロードバランサは、物理サーバへの要求のパッケージのための唯一の責任であり、ユーザへの直接サーバーの物理的な応答パケット。したがって、ロードバランサは、ロードバランサは、もはやシステムのボトルネックになって、負荷分散が100台の以上の物理サーバを提供することができ、この方法でリクエストの非常に大きな金額を扱うことはできません。ロードバランサは、それの全二重ネットワークカード100Mを持っている場合、あなたは全体の仮想サーバーは、1Gのスループットを達成することができますすることができ、VS-DRの方法を使用します。さらに高い;
不十分:しかし、このアプローチは、すべてのDIR RIPと同じブロードキャストドメイン内にある必要があり、リモート惨事復旧をサポートしていません。
概要:LVS-DRは、LVS-NATのRSは毎日アプリケーションに、ネットワーク環境上より通常には約100、より高い要件を果たすまでの負荷モードよりもモードがある3つのモードの最高性能であります動作モード。

第二に、環境の場合

実験環境に、それほど大きなトポロジ図を取得する必要はありません、10個のノードを持つ2つのWebサービスノードWebサーバーの意味は同じであり、および設定方法は同じなので、実験環境は、2つのWebサーバーノードを展開します。次のように実験トポロジは次のとおりです。

DRモードを構築するのLVSロードバランシングクラスタ、あなたが今行うことができます! ! !

LVSロードバランシングモード-DRモード機能:

  1. 各Webサーバー・ノードは、同じネットワーク(同じブロードキャストドメイン)に負荷スケジュールをLVSなければなりません。
  2. RIP LVS負荷スケジューラは、パブリックネットワークアドレスが設定を容易にするために使用することができるプライベートIPアドレスを使用することができます。
  3. サポートは、ポートマッピングをサポートしていません。
  4. LVS負荷がスケジューラは、オペレーティングシステム(OS)は使用することができますuninxなければなりません。そしてVIP LVSロードバランサは、ヤンシステムのARPに必要、あなたはループバックを設定する必要があります。
  5. LVSロードバランサは、サーバーノードのWebクライアントに直接、応答パケットを着信要求を処理するための唯一の責任です。
  6. ウェブ・サーバ・ノードは、ゲートウェイDIPに直接要求メッセージに応答するために使用するゲートウェイのフロントエンドを指すことはできません。

第三に、知識のポイントを説明します

同じネットワークセグメントにあるVIPのWebサーバーノードを持つのはなぜLVSロードバランサ?
:DRモード時にマウントVIPでIP VIPとWebサーバロードバランサノードのみARPブロードキャスト状況により、Webサーバー・ノードのMACアドレスを見つけるためにパッケージを変更し、それはLVSは、同じネットワークセグメントも必要で、それは、あるため、 DRモードならば、LVSの動作モードを確認し、IPは以下のこのLVSに掛けることができるかどうかを確認する必要があります。

カーネルリダイレクション:VIPアドレスLVSは、ロードバランサやノードを共有する必要があり、応答をリダイレクトするLinuxカーネルパラメータを閉じる必要があります。どのように達成するために?
:必要ルータはICMPは、ソースにリダイレクト送信、2つの状況があります。

  • インターフェイスからルータがパケットを受信するだけでなく、先に同じインターフェイスから送られたデータパケットは、インタフェースルータがエクスポート先を宛先とするパケットがICMPソースを送信する意志で受信されたとき直接その次のホップに送信されたピア・データ・パケットを知らせるためにリダイレクトしますが、自分自身に再送信されません。
  • ソースIPパケットと転送が同じネットワークセグメントである、独自のネクストホップIPアドレスは、それがICMPソースにリダイレクト送信されます、その次のホップに送信されたデータパケットに直接相手方通知。
    注意:ICMPを送信するためにルータがデータソースをリダイレクトしている間、データパケットを受信し転送すると、ネットワークを中断することはありません。

次のように図です。
DRモードを構築するのLVSロードバランシングクラスタ、あなたが今行うことができます! ! !

过程分析如下:
1.server2如果要与internet通讯,首先是要把报文发送给server1的,因为server2的网关指向server1的;
2.server1收到报文并检查它的路由表,发现router是发送改报文的下一跳。当它把报文发送给router时,server1检测到这个报文的发送出去的接口与接收到的接口是相同的,这样ICMP重定向就触发了;
3.server1认为server2应该把默认路由指向router,所以就发送ICMP重定向报文给server2;

在真实的节点服务器上要给lo:0设置vip,并调整内核的arp响应参数以阻止更新VIP的mac地址,避免发生冲突,如何实现?

示意图如下:
DRモードを構築するのLVSロードバランシングクラスタ、あなたが今行うことができます! ! !
在配置LVS负载均衡架构的时候需要在Web节点服务器上抑制ARP,
具体是arp_ignore=1,arp_announce=2
arp_ignore: (回应ARP),选项如下:

0:回应任何网口上收到的对任何本机IP地址的ARP查询请求(默认)
1:只回应Target IP是接收网口的IP的ARP查询请求
2:只回应Target IP是接收网口的IP的ARP查询请求,且Sender IP必须与该网口属于同一网段
4-7:保留未使用
8:不回应所有的arp查询

arp_announce: (宣告ARP),选项如下:

0:使用发送(或转发)的数据包的源IP作为发送ARP请求的Sender IP(默认) ;(可使用ping -I 验证)
1:IP数据包的目的IP属于本地某个接口的网段时,Sender IP则使用IP数据包源IP,不属于则按2处理;
2:忽略数据包的源IP,使用能与目标主机会话的最佳地址来作为发送ARP的Sender IP,优先选择对外接口的主IP;(loopback不是对外接口)
注:ARP表没有网关对应的条目时,在发送IP数据包前会触发 arp_announce;
Sender MAC跟系统无关,Sender MAC=源MAC,源MAC由物理地址决定,网络非法进入除外。

关于lvs-dr模式下一些疑问:
LVS负载均衡群集DR模式如何处理请求报文的,会修改IP包内容吗?
答:DR模式的LVS负载均衡群集本身不会关心IP层以上的信息,即使是端口号也是tcp/ip协议栈去判断是否正确,DR模式的LVS负载均衡群集本身主要做这么几个事:
①接收client的请求,根据你设定的负载均衡算法选取一台Web节点服务器的ip;
②以选取的这个ip对应的mac地址作为目标mac,然后重新将IP包封装成帧转发给这台Web节点服务器;
③在hash table中记录连接信息。
DR模式的LVS负载均衡群集做的事情很少,也很简单,所以它的效率很高,不比硬件负载均衡设备差多少,数据包、数据帧的大致流向是这样的:client –> LVS –> Web 节点服务器 –> client

Web节点服务器为什么要在lo接口上配置VIP?在出口网卡上配置VIP可以吗?
答:既然要让Web节点服务器能够处理目标地址为VIP的IP包,首先必须要让Web节点服务器能接收到这个包。在lo网卡上配置VIP能够完成接收包并将结果返回client。不可以将VIP设置在出口网卡上,否则会响应客户端的ARP request,造成ARP紊乱,以至于整个LVS群集环境都不能正常工作。

Web节点服务器为什么要抑制ARP?
答:对所有的物理网卡设置ARP仰制。对仰制所有的物理网卡设置ARP抑制是为了让客户端发送的请求顺利转交给LVS负载调度器以及防止整个LVS环境ARP混乱,不然容易导致整个lvs不能工作。

DR模式的LVS负载调度器与Web节点服务器为什么要在同一网段中?
答:DR模式的LVS负载调度器是在数据链路层来实现的,即VIP必须能够接受LVS负载调度器的arp请求,如果不在同一网段则会隔离arp,这样arp请求就不能转发到指定的Web节点服务器上,所以LVS负载调度器必须和Web节点服务器在同一网段里面。

为什么LVS负载调度器上ens33接口除了VIP另外还要配一个IP(即VIP)?
答:如果是用了keepalived等工具做HA或者LB,则在健康检查时需要用到VIP。 没有健康检查机制的HA或者LB则没有存在的实际意义。

DR模式的LVS负载调度器路由转发功能需要开启吗?
答:不需要。因为LVS负载调度器跟Web节点服务器是同一个网段,无需开启转发。

VIPサブネットマスクLVS負荷スケジューラは、255.255.255.255がしなければなりませんか?
DRモードでLVSロードバランサは、VIPのサブネットマスクLVSロードバランサが255.255.255.255に必要ではない、LVSロードバランサのVIPは行いませんが、外部円形などの通常のIPアドレスのようになりもともとそんなに特別な。

DR LVS負荷分散クラスタモードの原理は非常に複雑ですが、実装プロセスは非常に簡単です。

第四に、例の実装

1.設定LVSロードバランサ

(1)仮想IPアドレス(VIP)を設定

仮想インターフェイス(ens33:0)を使用して、マナーVIPアドレスへの結合は、クラスタへのアクセスに対応するために、NICをens33。以下のような構成は以下のとおりです。

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
自行修改网卡配置文件
[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.1  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::a5f4:262:9bbe:d04  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:00:11:89  txqueuelen 1000  (Ethernet)
        RX packets 2  bytes 501 (501.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 35  bytes 4894 (4.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~]# ifconfig ens33:0
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.254  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 00:0c:29:00:11:89  txqueuelen 1000  (Ethernet)

(2)調整/ PROC応答パラメータ

LVSロードバランサおよび各ノードがVIPアドレスを共有する必要があるためDRクラスタモードでは、Linuxカーネルは、リダイレクトパラメータに対応して閉じる必要があります。以下のような構成は以下のとおりです。

[root@localhost ~]# vim /etc/sysctl.conf
         ………………                  //省略部分内容,添加以下内容
net.ipv4.conf.all.send_redirects  =  0     
net.ipv4.conf.default.send_redirects  =  0
net.ipv4.conf.ens33.send_redirects  = 0     
[root@localhost ~]# sysctl -p
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

(3)負荷の割り当てポリシーを設定します

[root@localhost ~]# ipvsadm -C 
[root@localhost ~]# ipvsadm -A -t 192.168.1.254:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.1.254:80 -r 192.168.1.2 -g -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.1.254:80 -r 192.168.1.3 -g -w 1
[root@localhost ~]# ipvsadm-save
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.1.2:http -g -w 1
-a -t localhost.localdomain:http -r 192.168.1.3:http -g -w 1

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

DRモードを使用する場合、ノードサーバは、VIPアドレスを設定する必要があり、競合を避けるために、MACアドレスを更新するARP応答VIPを防ぐために、カーネルパラメータを調整します。また、構成やNATモードのWebサーバー・ノードに似ています。

両方のサーバーがコンテンツと同じように構成します!Webサーバー・ノードのこの例を見てみましょう。

(1)仮想IPアドレスを設定します

各Webサーバーでは、ノードはまた、VIPアドレス192.168.1.254を持っている必要がありますが、このアドレスのみWeb応答パケットの送信元アドレスとして使用され、クライアントがアクセス要求(耳を傾け、スケジューラによって分散を変更する)をリッスンする必要はありません。したがって、仮想インターフェイスのLOを使用した:0をネイティブ記録されたデータは、通信の混乱を避けるために、地元のVIPへのアクセスを制限するためにVIPアドレスを負担し、デフォルトルートを追加します。

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.1.254
NETMASK=255.255.255.255                                    //掩码必须全为1
ONBOOT=yes
NAME=loopback:0
[root@localhost network-scripts]# ifdown lo;ifup lo
[root@localhost network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.1.254  netmask 255.255.255.255
        loop  txqueuelen 1  (Local Loopback)
[root@localhost ~]# vim /etc/rc.local                                       //永久添加一条路由信息
                      ………………             //省略部分内容,添加以下内容
/sbin/route add -host 192.168.1.254 dev lo:0
[root@localhost ~]# route add -host 192.168.1.254 dev lo:0                //临时添加一条路由信息

(2)調整/ PROCカーネルパラメータ

[root@localhost ~]# vim /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
[root@localhost ~]# sysctl -p
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

(3)テストページを作成するには、HTTPDをインストール

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.1.4:/var/www/html /var/www/html
[root@localhost ~]# systemctl start httpd

3テストLVSクラスタ

クライアントアクセス192.168.1.254は、LVSクラスタサーバー上の効果を見るために!

[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.254:80 rr
  -> 192.168.1.2:80               Route   1      1          0         
  -> 192.168.1.3:80               Route   1      1          0 

結果達成し、実験は完了です!

--------この記事の最後に、これまで、読んでくれてありがとう--------

おすすめ

転載: blog.51cto.com/14157628/2437805