技術共有

LVS-DR クラスター

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

LVS-DR クラスター

LVS-DR (Linux Virtual Server DIrector Server) 動作モードは、運用環境で最も一般的に使用される動作モードです。

LVS-DRの動作原理

LVS-DR モードでは、Director Server はクラスターへのアクセス入口として機能し、ゲートウェイとしては使用されません。DirectorServer ノードと Real Server ノードは同じネットワーク内にある必要があり、クライアントに返されるデータを送信する必要はありません。ディレクターサーバー経由。クラスタ全体へのアクセスに応答するには、Director Server と Real Server の両方に VIP アドレスを設定する必要があります。

LVS-DR パケット フロー分析

DR モードの仕組み

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

LVS-DRモードの特徴

  • Director サーバーと実サーバーは同じ物理ネットワーク上に存在する必要があります
  • Real Server はプライベート アドレスまたはパブリック アドレスを使用できます。パブリック ネットワーク アドレスを使用する場合は、インターネット経由で RIP に直接アクセスできます。
  • すべての要求メッセージは Director サーバーを通過しますが、応答応答メッセージは Director サーバーを通過できません。
  • Real Server のゲートウェイは Director サーバー IP を指すことを許可されていません。つまり、データ パケットが Director サーバーを通過することは許可されていません。
  • 実サーバー上の lo インターフェイスは、VIP の IP アドレスを構成します。

LVS ダイレクト ルーティング モードの例

#配置负载调度器
#配置虚拟IP地址VIP
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# vi ifcfg-ens33:0
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.172
NETMASK=255.255.255.0
[root@localhost network-scripts]# systemctl restart network
#调整内核参数,禁止转发重定向报文由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭Linux 内核的重定向
[root@localhost ~]# vi /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
#配置负载分配策略
[root@localhost ~]#yum -y install ipvsadm
[root@localhost ~]#ipvsadm -v           \查看版本
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]#ipvsadm -C
[root@localhost ~]# ipvsadm -A -t 192.168.10.172:80 -s wrr
[root@localhost ~]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.102 -g -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.103 -g -w 1
[root@localhost ~]# ipvsadm-save
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.10.102:http -g -w 1
-a -t localhost.localdomain:http -r 192.168.10.103:http -g -w 2
[root@localhost ~]# systemctl enable ipvsadm
-g:直接路由模式
#配置web节点服务器
#配置虚拟ip地址VIP
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0
#修改
DEVICE=lo:0
NETMASK=255.255.255.255           子网掩码必须为255.255.255.255
IPADDR=192.168.10.172
ONBOOT=yes
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifconfig
[root@localhost network-scripts]# cd 
[root@localhost ~]# vi /etc/rc.local
#添加
/sbin/route add -host 192.168.10.172 dev lo:0
[root@localhost ~]# route add -host 192.168.10.172 dev lo:0
#调整内核参数
[root@localhost ~]# vi /etc/sysctl.conf
#添加
net.ipv4.conf.all.arp_ignore = 1 #忽略arp请求
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
[root@localhost ~]# sysctl -p
#安装httpd创建测试网页
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# yum install nfs-utils
[root@localhost ~]# mount 192.168.10.104:/opt/wwwroot /var/www/html
[root@localhost ~]#vi /var/www/html/index.html