LVSのDRモード展開

1.LVS-DRデータパケットフロー分析

主成分分析を容易にするために、クライアントとクラスターマシンは同じネットワーク上に配置され、データパケットのルートは1-2-3-4です
ここに画像の説明を挿入
。1。クライアントはターゲットVIPに要求を送信し、ディレクター(ロードバランサー)がそれを受け取ります。このとき、送信元MACアドレスはクライアントMACアドレス、宛先MACアドレスはスケジューラーディレクターのMACアドレスです。

2. Directorは、負荷分散アルゴリズムに従ってRealServer_1を選択し、IPメッセージを変更またはカプセル化せずに、データフレームのMACアドレスをRealServer_1のMACアドレスに変更して、LANに送信します。このとき、送信元MACアドレスはDirectorのMACアドレス、宛先MACアドレスはRealServer_1のMACアドレスです。

3. RealServer_1はこのフレームを受信し、カプセル化解除後にターゲットIPがマシンと一致することを検出するため(RealServerは事前にVIPにバインドされています)、このメッセージを処理します。次に、メッセージを再カプセル化し、loインターフェイスを介して物理ネットワークカードに応答メッセージを送信してから送信します。このとき、送信元MACアドレスはRealServer_1のMACアドレスであり、宛先MACアドレスはクライアントのMACアドレスです。

4.クライアントは応答メッセージを受信します。クライアントは通常のサービスを受けていると思いますが、どのサーバーがそれを処理しているかわかりません。
注:ネットワークセグメントを通過する場合、メッセージはインターネット経由でルーター経由でユーザーに返されます

次に、LVS-DRのARPの問題

1. LVS-DR負荷分散クラスターでは、負荷分散とノードサーバーの両方を同じVIPアドレスで構成する必要があります。
2.ローカルエリアネットワークで同じIPアドレスを使用すると、必然的にサーバー間のARP通信が乱れます。

  • ARPブロードキャストがLVS-DRクラスターに送信されると、ロードバランサーとノードサーバーが同じネットワークに接続されているため、両方がARPブロードキャストを受信します。
  • フロントエンドロードバランサーのみが応答し、他のノードサーバーはARPブロードキャストに応答しないようにする必要があります。
    3.ノードサーバーを処理して、VIPのARP要求に応答しないようにします。
  • 仮想インターフェイスlo:0を使用してVIPアドレスを伝送します
  • カーネルパラメータarp_ignore = 1を設定します。システムは、宛先IPがローカルIPであるARP要求にのみ応答します。4。RealServerは
    、ルーターによって転送されたパケット(送信元IPはVIP)を返します。パケットを再カプセル化する場合、MAC最初にルーターのアドレスを取得する必要があります。
    5. ARP要求を送信する場合、Linuxはデフォルトで、送信インターフェイスのIPアドレスではなく、IPパケット(つまりVIP)の送信元IPアドレスをARP要求パケットの送信元IPアドレスとして使用します(例:ens33
    6)。ルーターがARP要求を受信した後、ARPエントリ
    7を更新します。ディレクターのMACアドレスに対応する元のVIPは、RealServer
    8のMACアドレスに対応するVIPに更新されます。ルーターは、新しい要求メッセージをに転送します。 ARPエントリによるとRealServerは、DirectorのVIP障害
    ソリューションになります。
  • ノードサーバーを処理するには、カーネルパラメータarp_announce = 2を設定します。システムはIPパケットの送信元アドレスを使用してARP要求の送信元アドレスを設定しませんが、送信インターフェイスのIPアドレスを選択します。
    ARPの2つの問題を解決するための設定方法
    /etc/sysctl.confファイルを変更します
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2

3.LVS負荷分散クラスターのDRモード

1.データパケットフロー分析

(1)クライアントがDirector Server(ロードバランサー)に要求を送信し、要求されたデータメッセージ(送信元IPはCIP、宛先IPはVIP)がカーネルスペースに到達します。
(2)DirectorServerとRealServerは同じネットワーク内にあり、データは第2層のデータリンク層を介して送信されます。
(3)カーネル空間は、データパケットのターゲットIPがローカルVIPであると判断します。このとき、IPVS(IP仮想サーバー)は、データパケットが要求するサービスがクラスタサービスであるかどうかを比較し、次の場合にデータパケットを再パッケージ化します。クラスターサービスです。送信元MACアドレスをDirectorサーバーのMACアドレスに変更し、宛先MACアドレスを実サーバーのMACアドレスに変更します。送信元IPアドレスと宛先IPアドレスは変更されていないため、データパケットを実サーバーに送信します。
(4)実サーバーに到着するリクエストメッセージのMACアドレスは自身のMACアドレスであり、メッセージを受信します。データパケットはメッセージを再カプセル化し(送信元IPアドレスはVIP、宛先IPはCIP)、応答メッセージはloインターフェイスを介して物理ネットワークカードに送信されてから送信されます。
(5)Real Serverは、応答メッセージをクライアントに直接送信します。

2.DRモードの特徴

(1)DirectorServerとRealServerは同じ物理ネットワーク内にある必要があります。
(2)実サーバーはプライベートアドレスまたはパブリックネットワークアドレスを使用できます。パブリックネットワークアドレスを使用すると、インターネットを介してRIPに直接アクセスできます。
(3)Director Serverは、クラスターのアクセス入口として機能しますが、ゲートウェイとしては機能しません。
(4)すべての要求メッセージはDirector Serverを通過しますが、応答応答メッセージはDirectorServerを通過できません。
(5)実サーバーのゲートウェイがDirectorサーバーのIPを指すことは許可されていません。つまり、実サーバーによって送信されたデータパケットがDirectorサーバーを通過することは許可されていません。
(6)実サーバーのloインターフェースはVIPIPアドレスで構成されています。

4つの簡単な小さな実験LVS-DRモード

########DR模式LVS负载均衡群集部署#########
DR 服务器:192.168.241.3
Web 服务器1:192.168.241.4
Web 服务器2:192.168.241.5
vip :192.168.241.200
客户端:192.168.241.6
1、配置负载调度器(192.168.241.3)
systemctl stop firewalld.service
setenforce 0
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm

(1)配置虚拟IP地址(VIP:192.168.241.200)
cd /etc/sysconfig/network-scripts
#若隧道模式,复制为ifcfg-tunl0
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.241.200
NETMASK=255.255.255.255
ifup ens33:0
ifconfig ens33:0
(2)调整proc响应参数
#由于LVS负载调度器和各节点需要共用VIP地址,应该关闭Linux内核的重定向参数响应,不充当路由器
vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p
(3)配置负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -C
ipvsadm -A -t 192.168.241.200:80 -s rr
ipvsadm -a -t 192.168.241.200:80 -r 192.168.241.4:80 -g		#若隧道模式,-g替换为-i
ipvsadm -a -t 192.168.241.200:80 -r 192.168.241.5:80 -g
ipvsadm
ipvsadm -ln				#查看节点状态,Router代表DR模式
2、部署共享存储(NFS服务器:192.168.241.6)
systemctl stop firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benet

vim /etc/exports
/opt/kgc 192.168.241.0/24(rw,sync,no_root_squash)
/opt/benet 192.168.241.0/24(rw,sync,no_root_squash)
echo 'this is benet web' > /opt/benet/index.html
echo 'this is kgc web' > /opt/kgc/index.html

systemctl start nfs
systemctl start rpcbind
3、配置节点服务器(192.168.241.4、192.168.241.5)
systemctl stop firewalld.service
setenforce 0
(1)配置虚拟IP地址(VIP:192.168.241.200)
#此地址仅用作发送Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用需接口lo:0来承载VIP地址,并为本机添加一条路由记录,将访问VIP的数据限制在本地,以避免通信紊乱
cd /etc/sysconfig/network-scripts		##需要将ens33的网关和DNS注释
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.241.200
NETMASK=255.255.255.255
ifup lo:0
ifconfig lo:0

route add -host 192.168.241.200 dev lo:0
或者vim /etc/rc.local
/sbin/route add -host 192.168.241.200 dev lo:0
chmod +x /etc/rc.d/rc.local

(2)调整内核的ARP响应参数以阻止更新VIP的MAC地址,避免发生冲突
vim /etc/sysctl.conf
......
net.ipv4.conf.lo.arp_ignore = 1				#系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce = 2			#系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p
或者
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

yum -y install nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd

####192.168.241.4
mount 192.168.241.6:/opt/kgc /var/www/html


####192.168.241.5
mount 192.168.241.6:/opt/benet /var/www/html


4. LVSクラスターをテストします
。クライアントのブラウザーを使用してhttp://192.168.241.200にアクセスすると、デフォルトゲートウェイは192.168.241.200を指します。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_51432789/article/details/112861134