기술나눔

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 Server와 Real Server는 동일한 네트워크에 있으며, 데이터는 2계층 데이터링크 계층을 통해 전송됩니다.
  3. 이때 IPVS는 데이터 패킷이 요청한 서비스가 클러스터 서비스인지 비교하여 데이터 패킷을 다시 캡슐화합니다. . Source MAC 주소를 Director Server의 MAC 주소로 수정하고, Destination MAC 주소를 Real Server의 MAC 주소로 수정하고, Source IP 주소와 Destination IP 주소는 그대로 유지한 후 Real Server로 데이터 패킷을 보냅니다.
  4. Real Server에 도착하는 요청 메시지의 MAC 주소가 자신의 MAC 주소인 경우 해당 메시지를 수신하게 됩니다. 데이터 패킷은 다시 캡슐화되고(소스 IP 주소는 VIP이고 대상 IP는 CIP임) 응답 메시지는 lo 인터페이스를 통해 물리적 네트워크 카드로 전송된 후 전송됩니다.
  5. Real Server는 응답 메시지를 클라이언트에게 직접 전송합니다.

LVS-DR 모드의 특징

  • Director Server와 Real Server는 동일한 물리적 네트워크에 있어야 합니다.
  • Real Server는 개인 주소 또는 공용 주소를 사용할 수 있습니다.공용 네트워크 주소를 사용하는 경우 인터넷을 통해 RIP에 직접 액세스할 수 있습니다.
  • 모든 요청 메시지는 Director Server를 통과하지만 응답 응답 메시지는 Director Server를 통과할 수 없습니다.
  • Real Server의 게이트웨이는 Director Server IP를 가리키는 것이 허용되지 않습니다. 즉, 데이터 패킷이 Director Server를 통과하는 것이 허용되지 않습니다.
  • 실제 서버의 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