기술나눔

47. lvs의 DR

2024-07-12

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

1. DR 모드:

1.1, lvs 세 가지 모드:

  1. NAT 주소 변환

  2. DR 직접 라우팅 모드

  3. 터널 모드를 조정하세요

1.2. DR 모드의 특징:

  • 스케줄러는 전체 LVS 클러스터에서 가장 중요합니다. NAT 모드에서 로드는 요청을 수신하고 로드 밸런싱 알고리즘에 따라 트래픽을 전달하며 클라이언트에 응답을 보냅니다.

  • DR 모드: 스케줄러는 여전히 요청을 수신하고 로드 밸런싱 알고리즘에 따라 RS로 전달하는 역할을 담당합니다. 응답은 RS를 통해 클라이언트로 직접 전송됩니다.

  • 직접 라우팅은二层转发模式 .두 번째 레이어에서 전달되는 내용은 다음과 같습니다.数据帧 .~에 따르면源mac地址和目的mac地址앞으로.

  • 데이터 패킷의 소스 IP와 대상 IP는 수정되지 않으며, MAC 주소를 기준으로 데이터 패킷이 전달됩니다.

  • DR 모드에서 LVS는 가상 IP 주소도 유지하며 모든 요청은 두 번째 계층을 통해 전달되므로 클라이언트의 요청이 일정에 도달하면 로드 밸런싱 알고리즘과 RS에 따라 RS가 선택됩니다. VIP 서버가 수정되면 RS의 MAC 주소가 되며, RS는 요청을 처리한 후 스케줄러를 거치지 않고 메시지에 포함된 클라이언트의 소스 Mac 주소에 따라 클라이언트에 직접 응답을 보낼 수 있습니다.

스케줄러는 VIP로 구성되며 VIP 주소도 RS에서 구성됩니다.

  • VIP 주소 충돌, 스케줄러와 RS가 모두 동일한 네트워크 세그먼트에 있고 ARP 통신이 중단되었습니다. 전체 LAN이 브로드캐스트하므로 모든 장치가 이를 수신합니다.

  • 서버의 물리적 IP 주소만 응답하도록 lo의 루프백 응답을 차단하는 방법입니다.

커널 매개변수 수정:

  • arp_ignore=1------#서버 시스템의 물리적 IP 주소만 요청에 응답하며, ARP 요청에는 응답하지 않습니다.

  • 2. 메시지가 반환되면 VIP 주소가 그대로 유지됩니다. 클라이언트는 어떻게 응답을 받을 수 있나요?

  • arp_announce=2 - #시스템은 요청에 응답하기 위해 IP 패킷의 소스 주소를 사용하지 않고 물리적 인터페이스의 IP 주소를 직접 보냅니다.

1、调度器的ip地址和RS的ip要在同一网段,数据先进行二层转发。

2、RS是一个公网地址,互联网可以直接访问RS的地址(不用)。

3、DR模式是走内核转发,内核来判断数据包的地址,根据RS的地址把数据包重新封装,修改mac地址。
4、调度器的地址只可以做为集群访问的入口,不能作为网关。

5、所有的RS上的lo(本地回环地址)都要配置vip地址。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

DR 모드 구현:

nignx1:RS1 192.168.168.10+vip

nginx2: RS2 192.168.168.20+vip

귀빈: 192.168.168.100

test1: 스케줄러 VIP

테스트2: 클라이언트

스케줄러에서

vim /etc/sysctl.conf

net.ipv4.ip_forward=0
#关闭数据包转发功能
net.ipv4.conf.all.send_redirects=0
#禁止系统发送icmp重定向的消息。回环地址不接受ping得消息。只针对真实得ip地址。
net.ipv4.conf.default.send_redirects=0
#禁止默认网络接口发送icmp重定向的消息。
net.ipv4.conf.ens33.send_redirects=0
#针对ens33设备,禁止发送icmp重定向消息。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • -A는 가상 서버 VIP를 추가합니다.

  • -D 가상 서버 주소 삭제

  • -s는 로드 밸런싱 스케줄링 알고리즘을 지정합니다.

  • -실제 서버 추가

  • -d 실제 서버 삭제

  • -t는 VIP 주소와 포트를 지정합니다.

  • -r은 rip의 주소와 포트를 지정합니다.

  • -m은 NAT 모드를 사용합니다

  • -g DR 모드 사용

  • -i 터널 모드 사용

  • -w 가중치를 설정합니다

  • -p 60: 보존 시간을 설정하기 위해 60 동안 연결을 유지합니다.

  • -l: 목록 보기

  • -n: 디지털 디스플레이

  • -m 모드를 nat 모드로 지정합니다.

IP 주소를 192.168.168.100으로 설정하고 루프백 인터페이스에 lvs의 VIP로 추가합니다. 라우팅 모드를 통해 RS로 전달됨

이를 통해 VIP는 RS의 실제 서버를 식별할 수 있습니다.

route add -host 192.168.233.100 dev lo:0

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1
#设置回环接口忽略来自任何接口的ARP请求net.ipv4.conf.lo.arp_announce =2
设置回环地址仅仅公告本地的ip地址,但是不响应ARP请求net.ipv4.conf.all.arp_ignore = 1
#设置所有接口忽略来自任何接口的ARP请求net.ipv4.conf.all.arp_announce =2
#设置所有接口仅仅公告本地的ip地址,但是不响应ARP请求。
  • 1
  • 2
  • 3
  • 4
  • 5

3. 리눅스 시스템에서는,net.ipv4.conf.all.arp_ignore 네트워크 인터페이스가 들어오는 ARP(주소 확인 프로토콜) 요청을 처리하는 방법을 제어하는 ​​커널 매개변수입니다. 이 매개변수는 ARP 스푸핑이나 기타 네트워크 공격으로 인한 보안 위험을 줄이기 위해 서버 및 네트워크 장치에 특별히 구성됩니다.

설정시 net.ipv4.conf.all.arp_ignore = 1 이는 시스템이 대상 IP 주소가 로컬 수신 인터페이스의 주소인 ARP 요청에만 응답한다는 것을 의미합니다. 즉, ARP 요청의 대상 IP 주소가 요청을 받는 인터페이스의 IP 주소와 일치하지 않으면 시스템은 ARP 요청을 무시합니다. 이 설정은 ARP 스푸핑 공격에 대한 시스템의 저항력을 강화하는 데 특히 유용합니다.

구체적으로,arp_ignore 매개변수는 여러 값을 가질 수 있으며 각각 다른 동작을 나타냅니다.

  • 0(기본값): 요청된 대상 IP 주소가 이 시스템의 IP 주소와 일치하는 한 모든 네트워크 인터페이스에서 모든 ARP 요청에 응답합니다.
  • 1 : 대상 IP 주소가 수신 인터페이스의 IP 주소인 ARP 요청에만 응답합니다. 이는 인터페이스가 다른 시스템의 프록시로 사용되는 것을 방지하는 데 도움이 됩니다.
  • 2: ARP 요청의 대상 IP 주소가 수신 인터페이스의 IP 주소이고 해당 인터페이스가 기본인 경우에만(즉, 인터페이스가 여러 IP 주소로 구성된 경우 기본 IP 주소와 일치하는 ARP 요청만 응답됩니다.) ).

4. 리눅스 시스템에서는net.ipv4.conf.all.arp_announce ARP(주소 확인 프로토콜) 요청 또는 응답을 보낼 때 네트워크 인터페이스에서 사용하는 IP 주소 선택 정책을 제어하는 ​​커널 매개변수입니다. 이 매개변수는 시스템이 ARP 트래픽에 사용되는 소스 IP 주소를 보다 신중하게 선택할 수 있도록 하므로 ARP 스푸핑 및 네트워크 주소 충돌을 방지하는 데 특히 유용합니다.

설정시 net.ipv4.conf.all.arp_announce = 2 이는 시스템이 ARP 요청 또는 응답을 보낼 때 요청의 대상 IP 주소(사용 가능한 경우)와 동일한 서브넷에 있는 인터페이스의 기본 IP 주소만 사용한다는 의미입니다. 해당 인터페이스가 없으면 ARP 요청이나 응답이 전송되지 않습니다. 이 설정은 ARP 트래픽을 보낼 수 있는 인터페이스와 IP 주소를 제한하므로 ARP 스푸핑으로 인해 발생하는 네트워크 문제를 줄이는 데 도움이 될 수 있습니다.

arp_announce 매개변수는 다음 값을 가질 수 있습니다.

  • 0 (기본값): ARP 요청 또는 응답을 위해 모든 인터페이스에서 IP 주소를 선택합니다. 공격자가 ARP 통신에 사용해서는 안 되는 IP 주소를 사용하도록 시스템을 속일 수 있으므로 보안 문제가 발생할 수 있습니다.
  • 1 : 요청하지 않는 인터페이스의 IP 주소를 ARP 요청의 소스 IP 주소로 사용하지 마십시오. 그러나 다른 옵션이 없는 경우에는 비요청 인터페이스의 IP 주소를 계속 사용할 수 있습니다.
  • 2 : 요청된 대상 IP 주소(사용 가능한 경우)와 동일한 서브넷에 있는 인터페이스의 기본 IP 주소만 사용하십시오. 이는 가장 제한적인 설정이며 ARP 스푸핑을 방지하는 데 도움이 됩니다.

lvs의 세 가지 작업 모드:

나트박사큰 술통
이점간단한 구성, 주소 변환최고의 성능WAN은 장거리 데이터 패킷 전달을 실현할 수 있습니다.
결점성능 병목 현상교차 네트워크 세그먼트는 지원되지 않습니다.전용 채널, VPN을 개설해야 함(비용 발생)
RS 요구 사항제한 없는비물리적 인터페이스에 대한 ARP 응답은 정지되어야 합니다.터널 모드를 지원하려면
RS 수량10-20100개 단위100개 단위

VIP 폴링 알고리즘을 수정합니다.

ipvsadm -E -t 192.168.233.100:80 -s wrr

ipvsadm -e -t 192.168.233.100:80 -r 192.168.233.61:80 -w 3

2. 면접질문

lvs의 세 가지 모드와 차이점을 간략하게 설명합니다.

LVS의 작업 모드 및 작업 프로세스:

LVS에는 세 가지 로드 밸런싱 모드, 즉 VS/NAT(nat 모드), VS/DR(라우팅 모드) 및 VS/TUN(터널 모드)이 있습니다.

1. NAT 모드(VS-NAT)

원리: 먼저 로드 밸런서는 고객의 요청 패킷을 수신하면 스케줄링 알고리즘을 기반으로 어느 백엔드 실제 서버(RS)에 요청을 보낼지 결정합니다.
그런 다음 로드 밸런서는 클라이언트가 보낸 요청 패킷의 대상 IP 주소와 포트를 백엔드 실제 서버의 IP 주소(RIP)로 변경합니다.
실제 서버는 요청에 응답한 후 기본 경로를 확인하고 응답 데이터 패킷을 로드 밸런서로 보냅니다.
패킷의 소스 주소를 가상 주소(VIP)로 변경하고 클라이언트로 다시 보냅니다.

장점: 클러스터의 서버는 로드 밸런서에 합법적인 IP 주소가 있는 한 TCP/IP를 지원하는 모든 운영 체제를 사용할 수 있습니다.

단점: 확장성이 제한됩니다. 서버 노드가 너무 많이 커지면 모든 요청과 응답이 로드 밸런서를 통과해야 하기 때문에
따라서 로드 밸런서는 전체 시스템의 병목 현상이 됩니다.

2. 직접 라우팅 모드(VS-DR)

원리: 먼저 로드 밸런서는 고객의 요청 패킷을 수신하면 스케줄링 알고리즘을 기반으로 어느 백엔드 실제 서버(RS)에 요청을 보낼지 결정합니다.
그런 다음 로드 밸런서는 클라이언트가 보낸 요청 패킷의 대상 MAC 주소를 백엔드 실제 서버의 MAC 주소(R-MAC)로 변경합니다.
실제 서버는 요청에 응답한 후 기본 경로를 확인하고 로드밸런서를 거치지 않고 클라이언트에 직접 응답 패킷을 보냅니다.

장점: 로드 밸런서는 백엔드 노드 서버에 요청 패킷을 배포하는 역할만 담당하는 반면 RS는 응답 패킷을 사용자에게 직접 보냅니다.
따라서 로드 밸런서를 통한 대량의 데이터 흐름이 줄어듭니다. 로드 밸런서는 더 이상 시스템의 병목 현상이 아니며 엄청난 양의 요청을 처리할 수 있습니다.

단점: 로드밸런서와 실제 서버 RS 모두 동일한 물리적 네트워크 세그먼트에 연결된 네트워크 카드가 있어야 하며 동일한 LAN 환경에 있어야 합니다.

3. IP 터널 모드(VS-TUN)

원리: 먼저 로드 밸런서는 고객의 요청 패킷을 수신하면 스케줄링 알고리즘을 기반으로 어느 백엔드 실제 서버(RS)에 요청을 보낼지 결정합니다.
그런 다음 로드 밸런서는 클라이언트가 보낸 요청 메시지를 IP 터널(T-IP) 계층으로 캡슐화하여 실제 서버(RS)로 전달합니다.
실제 서버는 요청에 응답한 후 기본 경로를 확인하고 로드밸런서를 거치지 않고 클라이언트에 직접 응답 패킷을 보냅니다.

장점: 로드 밸런서는 백엔드 노드 서버에 요청 패킷을 배포하는 역할만 담당하는 반면 RS는 응답 패킷을 사용자에게 직접 보냅니다.
따라서 로드 밸런서를 통한 대량의 데이터 흐름이 줄어듭니다. 로드 밸런서는 더 이상 시스템의 병목 현상이 아니며 엄청난 양의 요청을 처리할 수 있습니다.

단점: 터널 모드의 RS 노드에는 합법적인 IP가 필요하며 이 방법을 사용하려면 모든 서버가 "IP 터널링"을 지원해야 합니다.

lvs 클러스터의 고가용성 아키텍처는 스케줄러의 고가용성만을 위한 것입니다.

vrrp를 기반으로 기본 및 백업 스케줄러가 구현됩니다.

고가용성 HA 아키텍처.

메인 스케줄러, 백업 스케줄러(다중 유닛)

메인 스케줄러가 정상적으로 작동하면 백업은 완전히 중복 상태(대기)가 됩니다. 클러스터 운영에는 참여하지 않습니다. 기본 스케줄러가 실패한 경우에만 대기가 기본 스케줄러의 작업을 맡습니다. 기본 스케줄러가 기능을 다시 시작하면 기본 스케줄러는 계속해서 클러스터의 입구 역할을 하고 대기 스케줄러는 계속해서 중복 상태에 있습니다(우선순위에 따라).

Keepaliva는 vrrp 프로토콜을 기반으로 고가용성 솔루션을 구현합니다.

1. 멀티캐스트 주소:

224.0.0.18은 멀티캐스트 주소를 기반으로 통신하고 기본 장치와 보조 장치 간에 메시지를 보냅니다. 상대방이 살아 있는지 확인합니다.

2. 우선순위에 따라 기본 위치와 보조 위치를 결정합니다.

3. 장애 조치, 기본 머신이 중단되면 백업 머신이 계속 작동하고 마스터 머신이 복구되면 백업 머신이 계속 대기합니다.

4. 기본과 보조 사이의 전환은 VIP 주소의 전환입니다.

Keepalive는 LVS용으로 특별히 나타나지만 LVS 전용은 아닙니다.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

3. 로드 밸런싱을 위한 lvs와 nginx의 차이점:

LVS는 4계층 포워딩 커널 상태 IP + 포트 계층 4개 프록시입니다.

nginx 4계층 프록시는 7계층 프록시가 될 수도 있습니다.

lvs(DR 모드)+nginx+tomcat

LVS는 레이어 4 전달을 구현하고 nginx는 레이어 7 전달(동적)을 구현합니다.

LVS의 VIP 주소에 액세스하면 동적 및 정적 분리를 실현할 수 있습니다.

여기에 이미지 설명을 삽입하세요.

4. 실험적 작동 1. DR 모드 구현:

여기에 이미지 설명을 삽입하세요.

DR 모드 구현:

nignx1:RS1 192.168.168.10

nginx2: RS2 192.168.168.20

귀빈: 192.168.168.100

test1:스케줄러 192.168.168.50

테스트2: 클라이언트 192.168.168.60

test1:스케줄러

modprobe ip_vs가 커널을 시작합니다.
yum -y install ipvsadm* lvs 관리 도구 설치

[root@test5 ~]# cd /etc/sysconfig/network-scripts/
[root@test5 네트워크 스크립트]# vim ifcfg-ens33:0

DEVICE=ens33:0 ##가상 네트워크 카드 추가
ONBOOT=예
IP주소=192.168.168.100
넷마스크=255.255.255.0

ifup ens33:0
이프컨피그

여기에 이미지 설명을 삽입하세요.

vim /etc/sysctl.conf

net.ipv4.ip_forward=0

#关闭数据包转发功能

net.ipv4.conf.all.send_redirects=0

#禁止系统发送icmp重定向的消息。###lo回环接口不接收icmp消息。只针对真实的ip地址。

net.ipv4.conf.default.send_redirects=0

#禁止网络接口发送icmp重定向的消息。

net.ipv4.conf.ens33.send_redirects=0

#针对ens33设备,禁止发送icmp重定向消息。

sysctl -p
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

스케줄러는 전달을 활성화합니다.

ipvsadm -A -t 192.168.168.100:80 -s rr
[root@test5 opt]# ipvsadm -a -t 192.168.168.100:80 -r 192.168.168.10:80 -g
[root@test5 opt]# ipvsadm -a -t 192.168.168.100:80 -r 192.168.168.20:80 -g
[root@test5 opt]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@test5 opt]# 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.168.100:80 rr
  -> 192.168.168.10:80            Route   1      0          0         
  -> 192.168.168.20:80            Route   1      0          0  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

가상 루프백 인터페이스 설정

服务器1:

vim /usr/local/nginx/html/index.html 

this is nginx1

systemctl restart nginx

服务器2:

vim /usr/local/nginx/html/index.html 

this is nginx2

systemctl restart nginx

同时开启:

DEVICE=lo:0
IPADDR=192.168.168.100
NETMASK=255.255.255.255

ONBOOT=yes
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

cd /etc/sysconfig/network-scripts/

vim /etc/sysctl.conf

경로 추가 -호스트 192.168.168.100 dev lo:0

루프백 인터페이스에만 LVS의 VIP로 추가되도록 IP 주소를 192.168.168.100으로 설정합니다. 라우팅 모드를 통해 RS로 전달하면 VIP가 실제 서버를 식별할 수 있습니다.

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1

#모든 인터페이스의 ARP 요청을 무시하도록 루프백 인터페이스를 설정합니다.
net.ipv4.conf.lo.arp_announce = 2
#로컬 IP 주소만 알리고 ARP 요청에는 응답하지 않도록 루프백 주소를 설정합니다.
net.ipv4.conf.all.arp_ignore = 1
##모든 인터페이스의 ARP 요청을 무시하도록 모든 인터페이스 설정
net.ipv4.conf.all.arp_announce = 2
##로컬 IP 주소만 광고하고 ARP 요청에는 응답하지 않도록 모든 인터페이스를 설정합니다.

시스템 설정 -p

컬 192.168.168.100

여기에 이미지 설명을 삽입하세요.

5. DR 모드+nginx+Tomcat:

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

DR 모드 구현:

nignx1:RS1 192.168.168.10

nginx2: RS2 192.168.168.20

귀빈: 192.168.168.100

test1:스케줄러 192.168.168.50

테스트2: 클라이언트 192.168.168.60

test1:스케줄러

modprobe ip_vs가 커널을 시작합니다.
yum -y install ipvsadm* lvs 관리 도구 설치

[root@test5 ~]# cd /etc/sysconfig/network-scripts/
[root@test5 네트워크 스크립트]# vim ifcfg-ens33:0

DEVICE=ens33:0 ##가상 네트워크 카드 추가
ONBOOT=예
IP주소=192.168.168.100
넷마스크=255.255.255.0

ifup ens33:0
이프컨피그

여기에 이미지 설명을 삽입하세요.

vim /etc/sysctl.conf

net.ipv4.ip_forward=0

#关闭数据包转发功能

net.ipv4.conf.all.send_redirects=0

#禁止系统发送icmp重定向的消息。###lo回环接口不接收icmp消息。只针对真实的ip地址。

net.ipv4.conf.default.send_redirects=0

#禁止网络接口发送icmp重定向的消息。

net.ipv4.conf.ens33.send_redirects=0

#针对ens33设备,禁止发送icmp重定向消息。

sysctl -p
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

스케줄러는 전달을 활성화합니다.

ipvsadm -A -t 192.168.168.100:80 -s rr
[root@test5 opt]# ipvsadm -a -t 192.168.168.100:80 -r 192.168.168.10:80 -g
[root@test5 opt]# ipvsadm -a -t 192.168.168.100:80 -r 192.168.168.20:80 -g
[root@test5 opt]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@test5 opt]# 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.168.100:80 rr
  -> 192.168.168.10:80            Route   1      0          0         
  -> 192.168.168.20:80            Route   1      0          0  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

가상 루프백 인터페이스 설정

服务器1:

vim /usr/local/nginx/html/index.html 

this is nginx1

systemctl restart nginx

服务器2:

vim /usr/local/nginx/html/index.html 

this is nginx2

systemctl restart nginx

同时开启:

DEVICE=lo:0
IPADDR=192.168.168.100
NETMASK=255.255.255.255

ONBOOT=yes
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

cd /etc/sysconfig/network-scripts/

vim /etc/sysctl.conf

경로 추가 -호스트 192.168.168.100 dev lo:0

루프백 인터페이스에만 LVS의 VIP로 추가되도록 IP 주소를 192.168.168.100으로 설정합니다. 라우팅 모드를 통해 RS로 전달하면 VIP가 실제 서버를 식별할 수 있습니다.

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1

#모든 인터페이스의 ARP 요청을 무시하도록 루프백 인터페이스를 설정합니다.
net.ipv4.conf.lo.arp_announce = 2
#로컬 IP 주소만 알리고 ARP 요청에는 응답하지 않도록 루프백 주소를 설정합니다.
net.ipv4.conf.all.arp_ignore = 1
##모든 인터페이스의 ARP 요청을 무시하도록 모든 인터페이스 설정
net.ipv4.conf.all.arp_announce = 2
##로컬 IP 주소만 광고하고 ARP 요청에는 응답하지 않도록 모든 인터페이스를 설정합니다.

시스템 설정 -p

컬 192.168.168.100

여기에 이미지 설명을 삽입하세요.

nginx1 및 nginx2는 Tomcat으로 보내도록 계층 7 프록시를 구성합니다.

vim /usr/local/nginx/conf/nginx.conf

#keepalive_timeout  0;
keepalive_timeout  65;
upstream tomcat {
    server 192.168.168.40:8080 weight=2;
    server 192.168.168.90:8080 weight=1;
            }
#gzip  on;

server {
    listen       80;
    server_name  localhost;
#charset koi8-r;

#access_log  logs/host.access.log  main;
location ~ .*.jsp$ {
proxy_pass http://tomcat;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

tomcat1:

vim /usr/local/tomcat/conf/server.xml

 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />
  • 1
  • 2

mkdir -p /usr/local/tomcat/webapps/test

cd /usr/local/tomcat/webapps/test

vim 인덱스.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>

<head>
<title>JSP test1 page</title>
</head>

<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

cd /usr/local/tomcat/bin/

./종료.sh

./스타트업.sh

넷스탯 -antp | grep 8080

tomcat2:

vim /usr/local/tomcat/conf/server.xml

 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />
  • 1
  • 2

mkdir -p /usr/local/tomcat/webapps/test

cd /usr/local/tomcat/webapps/test

vim 인덱스.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>

<head>
<title>JSP test2 page</title>
</head>

<body>
<% out.println("动态页面 2,http://www.test2.com");%>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

cd /usr/local/tomcat/bin/

./종료.sh

./스타트업.sh

넷스탯 -antp | grep 8080

여기에 이미지 설명을 삽입하세요.

1. 가상 IP(VIP)를 구성하는 이유:

레이어 2 전달은 Mac 헤더만 변경합니다.

데이터 링크 계층 전달은 IP 헤더를 변경하지 않고 mac 헤더만 변경하며 RS가 수신한 데이터 패킷의 대상 IP가 여전히 VIP이므로 RS를 보장하기 위해 데이터 패킷을 백엔드 RS ​​서버로 전달합니다. 올바르게 처리할 수 있습니다. 이 패킷을 삭제하는 대신 RS의 루프백 네트워크 카드(lo)에 VIP를 구성해야 합니다. 이런 식으로 RS는 이 VIP가 자신의 IP라고 생각하고 이 요청을 처리할 수 있습니다. -----자신의 주소 요청과 동일하며 arp 브로드캐스트를 통해 모든 호스트에 전송됩니다. 보호된 가상 호스트를 통해 클라이언트에 접근합니다.

  1. 고객에게 직접 반환 : DR 모드에서 클라이언트가 VIP에 요청을 보내면 이러한 요청은 LVS 스케줄러(Director Server)를 통해 백엔드 RS ​​서버로 전달됩니다. RS 서버는 요청을 처리한 후 LVS 스케줄러에 응답을 반환하는 대신 클라이언트에 직접 응답을 반환해야 합니다. 이를 달성하려면 클라이언트가 RS 서버로부터 응답을 인식하고 수신할 수 있도록 RS 서버를 LVS 스케줄러와 동일한 VIP 주소로 구성해야 합니다.클라이언트는 스케줄러의 IP에 액세스하므로 클라이언트가 이를 식별할 수 있도록 스케줄러의 가상 URL과 함께 이를 다시 전달합니다.
  2. MAC 주소 재작성 : DR 모드에서 LVS 스케줄러는 요청 메시지의 대상 MAC 주소를 다시 작성하여 요청을 RS 서버로 전달합니다. RS 서버가 요청을 받아 처리할 때 요청의 대상 IP가 VIP이므로 RS 서버는 LVS 스케줄러를 거치지 않고 클라이언트에 직접 응답을 보냅니다. 이때, RS 서버가 VIP로 구성되지 않은 경우, 클라이언트는 응답의 출처를 식별할 수 없기 때문에 응답 수신을 거부할 수 있습니다.

2. lo 인터페이스에 VIP 가상 IP를 설정한 이유

ARP 테이블 장애 방지 : RS의 송신 네트워크 카드에 VIP가 설정된 경우 RS는 클라이언트의 ARP 요청에 응답하게 되며, 이로 인해 클라이언트나 게이트웨이의 ARP 테이블에 혼란이 발생하여 전체 로드 밸런싱 시스템의 정상적인 작동에 영향을 미칠 수 있습니다.lo 인터페이스에 VIP를 구성하면 RS가 ARP 요청에 응답하는 것을 방지하여 네트워크 환경의 안정성을 유지할 수 있습니다.

RS(실제 서버) 서버에서 lo(로컬 루프백 주소)를 VIP(가상 IP, 가상 IP) 주소로 구성하는 것은 주로 로드 밸런싱 기술(예: LVS-DR 모드)의 특정 요구 사항 및 구현 메커니즘을 기반으로 합니다. 자세한 역할 분석은 다음과 같습니다.

1. RS가 대상 주소 VIP를 사용하여 IP 패킷을 처리할 수 있는지 확인합니다.

  • 요청 수신 및 처리 : LVS-DR과 같은 로드 밸런싱 모드에서는 클라이언트의 요청 패킷이 로드 밸런서에 도달한 후 대상 IP가 VIP로 설정되지만 로드 밸런서는 요청 패킷의 IP와 포트를 수정하지 않고 클라이언트의 IP만 수정합니다. MAC 주소. 최종 RS의 MAC 주소를 입력하고 데이터 패킷을 RS로 전달합니다. RS가 수신한 패킷의 대상 IP는 여전히 VIP이므로 RS가 패킷을 폐기하는 대신 올바르게 처리할 수 있도록 하려면 RS의 루프백 네트워크 카드(lo)에 VIP를 구성해야 합니다. 이런 식으로 RS는 이 VIP가 자신의 IP라고 생각하고 이 요청을 처리할 수 있습니다.

2. ARP 요청 및 응답의 혼동 방지

  • ARP 테이블 장애 방지 : RS의 송신 네트워크 카드에 VIP가 설정된 경우 RS는 클라이언트의 ARP 요청에 응답하게 되며, 이로 인해 클라이언트나 게이트웨이의 ARP 테이블에 혼란이 발생하여 전체 로드 밸런싱 시스템의 정상적인 작동에 영향을 줄 수 있습니다. lo 인터페이스에 VIP를 구성하면 RS가 ARP 요청에 응답하는 것을 방지하여 네트워크 환경의 안정성을 유지할 수 있습니다.

3. 시스템 보안 및 안정성 향상

  • TCP 연결의 견고성 향상 : 동적 라우팅 프로토콜(OSPF, BGP 등)을 구성할 때 일반적으로 루프백 인터페이스의 IP 주소를 라우터 ID로 사용합니다. 이는 루프백 인터페이스가 절대 다운되지 않는 인터페이스로 간주되어 안정성이 향상되기 때문입니다. TCP 연결의 안정성. VIP가 RS 서버의 Lo 주소로 직접 구성되는 시나리오에서는 이 역할이 직접적으로 반영되지는 않지만 시스템 안정성과 보안을 향상시키는 루프백 인터페이스의 보편적인 가치를 반영합니다.

4. 구성 및 관리 단순화

  • 통합 구성 및 관리 : RS 서버의 VIP 주소로 lo 인터페이스를 구성하면 모든 RS의 구성을 일관되게 만들고 통합 관리 및 유지 관리를 용이하게 할 수 있습니다. 동시에 루프백 인터페이스는 가상이고 물리적 네트워크 인터페이스의 리소스를 점유하지 않으므로 서버의 물리적 네트워크 구성에 영향을 미치지 않습니다.

5. 주의사항

  • RS와 클라이언트 간의 네트워크에 연결할 수 있는지 확인하세요. : RS가 요청을 처리한 후 응답이 클라이언트에 직접 반환되어야 하므로 RS와 클라이언트 간의 네트워크에 도달할 수 있어야 합니다. 이는 일반적으로 RS의 기본 게이트웨이 또는 라우팅이 올바르게 설정되었는지 확인함으로써 수행됩니다.
  • 적절한 커널 매개변수 구성: RS가 대상 주소가 VIP인 IP 패킷을 올바르게 처리할 수 있도록 하려면 일부 커널 매개변수(예: arp_ignore 및 arp_announce)를 구성하여 ARP 요청에 대한 RS의 응답 동작을 제어해야 할 수도 있습니다.

정리하면, RS 서버에서 lo를 VIP 주소로 구성하는 주요 기능은 RS가 대상 주소 VIP로 IP 패킷을 수신하고 처리할 수 있도록 하는 동시에 ARP 요청 및 응답의 혼란을 피하고 보안 및 안정성을 향상시키는 것입니다. 시스템의. 또한 이 구성은 구성 및 관리 프로세스를 단순화하는 데 도움이 됩니다.

루프백 인터페이스는 컴퓨터의 네트워크 프로토콜 스택에서 가상 네트워크 인터페이스로 사용되는 특수 네트워크 인터페이스입니다. 루프백 인터페이스의 주요 목적은 시스템이 물리적 네트워크 인터페이스를 통하지 않고 네트워크 자체와 통신할 수 있도록 하는 것입니다. 이러한 통신 방법을 루프백(Loopback) 또는 순환(Circular)이라고 합니다.

  1. LVS DR 모드에서의 사용법: LVS(Linux Virtual Server)의 DR(Direct Routing) 모드에서는 루프백 인터페이스를 사용하여 가상 IP 주소(VIP)를 구성하여 백엔드 실제 서버가 VIP의 ARP 요청에 응답하지 않도록 함으로써 주소 회피를 보장합니다. 갈등과 잠재적인 의사소통 문제.

6. 인터페이스 설명:

네트워크 인터페이스는 컴퓨터 네트워크에 연결된 컴퓨터 시스템의 장치 또는 소프트웨어로, 컴퓨터와 네트워크 간의 통신 인터페이스를 제공하고 컴퓨터와 네트워크 간의 브리지 역할을 합니다. 다음은 네트워크 인터페이스의 구체적인 정의 및 관련 정보입니다.

정의

  • 신체적 수준: 네트워크 인터페이스는 일반적으로 물리적 연결(예: 이더넷 케이블, 무선 네트워크 카드 등)을 통해 컴퓨터를 네트워크에 연결하는 포트 또는 장치를 의미합니다.
  • 소프트웨어 수준: 네트워크 인터페이스는 운영 체제에서 제공하는 네트워크 프로토콜 스택과 드라이버를 통해 네트워크와의 상호 작용을 구현합니다.

효과

  • 데이터 전송: 네트워크 인터페이스는 네트워크로 데이터를 전송하거나 네트워크로부터 데이터를 수신하는 역할을 담당하여 컴퓨터와 네트워크 간의 데이터 전송 기능을 실현합니다.
  • 프로토콜 처리: 네트워크 인터페이스는 다양한 네트워크 프로토콜(예: TCP/IP, UDP 등)을 처리하여 프로토콜에 지정된 방식으로 데이터가 전송되고 처리될 수 있도록 합니다.
  • 주소 관리: 네트워크 인터페이스는 IP 주소, 서브넷 마스크, 기본 게이트웨이와 같은 네트워크 매개변수의 구성 및 관리를 포함하여 네트워크 내 컴퓨터의 주소 할당 및 관리를 담당합니다.
  • 흐름 제어: 네트워크 인터페이스는 네트워크 정체 정도와 데이터 전송 요구 사항에 따라 데이터 전송 속도와 우선 순위를 조정하여 네트워크 부하의 균형을 맞추고 네트워크 안정성과 성능을 보장합니다.
  • 오류 감지 및 수정: 네트워크 인터페이스에는 오류 감지 및 정정 기능이 있으며, 체크섬, 오류 정정 코드 등의 기술을 통해 데이터 전송의 신뢰성과 정확성을 향상시킵니다.

유형

네트워크 인터페이스에는 다양한 유형이 있으며 각 유형의 네트워크 인터페이스에는 고유한 특성과 적용 가능한 시나리오가 있습니다.

  • 이더넷 인터페이스 : 이더넷 케이블을 통해 컴퓨터를 LAN 또는 WAN에 연결하는 가장 일반적인 유선 네트워크 인터페이스입니다. 이더넷 인터페이스는 데이터 전송을 위해 이더넷 프로토콜을 사용하여 고속 데이터 전송과 광범위한 네트워크 애플리케이션을 지원합니다.
  • 무선 LAN 인터페이스(WLAN 인터페이스): 컴퓨터가 무선 신호를 통해 근거리 통신망에 연결되며, 데이터 전송을 위해 무선 LAN 프로토콜(예: Wi-Fi)이 사용됩니다. 이는 무선 라우터, 노트북, 스마트폰 및 기타 장치에서 흔히 볼 수 있습니다.
  • 블루투스 인터페이스: 블루투스 신호를 통해 기기 간 무선 연결을 가능하게 하는 근거리 무선 통신 기술입니다.
  • 직렬 인터페이스: 직렬 통신을 통해 컴퓨터와 외부 장치 간에 데이터를 비트 단위로 전송합니다. 일반적인 직렬 인터페이스에는 프린터, 모뎀 및 기타 장치를 연결하는 데 사용되는 RS-232 및 USB 직렬 인터페이스가 포함됩니다.

공통 인터페이스 표준

  • RJ-45 인터페이스: 일반적으로 "크리스탈 헤드"로 알려진 가장 일반적인 네트워크 장치 인터페이스이며 기술 용어는 연선 이더넷 인터페이스 유형에 속하는 RJ-45 커넥터입니다.
  • SC 광섬유 인터페이스 : 이더넷 시대에도 사용되었으나 가격이 비싸 초기에는 인기가 없었다. 기가비트 네트워크의 발전으로 SC 광섬유 인터페이스가 다시 주목을 받았습니다.
  • AUI 인터페이스: 두꺼운 동축 케이블을 연결하는 데 특별히 사용됩니다. 초기 네트워크 카드의 일반적인 인터페이스이며 현재는 거의 사용되지 않습니다.
  • BNC 인터페이스: 얇은 동축 케이블에 연결하기 위해 특별히 설계된 인터페이스로, 현재는 스위치에서 덜 일반적으로 사용됩니다.

정리하자면, 네트워크 인터페이스는 컴퓨터와 네트워크 간의 통신을 위한 핵심 구성 요소로, 물리적 연결이나 무선 신호를 통해 컴퓨터와 네트워크 간의 데이터 전송 및 통신을 실현합니다. 다양한 유형의 네트워크 인터페이스는 다양한 시나리오와 애플리케이션에 적합하며 컴퓨터와 네트워크 간의 통신에 중요한 지원을 제공합니다.

인터뷰 질문들

Keepalive의 분할 브레인 문제를 해결하는 방법은 무엇입니까?

네트워크 인터페이스에는 다양한 유형이 있으며 각 유형의 네트워크 인터페이스에는 고유한 특성과 적용 가능한 시나리오가 있습니다.

  • 이더넷 인터페이스 : 이더넷 케이블을 통해 컴퓨터를 LAN 또는 WAN에 연결하는 가장 일반적인 유선 네트워크 인터페이스입니다. 이더넷 인터페이스는 데이터 전송을 위해 이더넷 프로토콜을 사용하여 고속 데이터 전송과 광범위한 네트워크 애플리케이션을 지원합니다.
  • 무선 LAN 인터페이스(WLAN 인터페이스): 컴퓨터가 무선 신호를 통해 근거리 통신망에 연결되며, 데이터 전송을 위해 무선 LAN 프로토콜(예: Wi-Fi)이 사용됩니다. 이는 무선 라우터, 노트북, 스마트폰 및 기타 장치에서 흔히 볼 수 있습니다.
  • 블루투스 인터페이스: 블루투스 신호를 통해 기기 간 무선 연결을 가능하게 하는 근거리 무선 통신 기술입니다.
  • 직렬 인터페이스: 직렬 통신을 통해 컴퓨터와 외부 장치 간에 데이터를 비트 단위로 전송합니다. 일반적인 직렬 인터페이스에는 프린터, 모뎀 및 기타 장치를 연결하는 데 사용되는 RS-232 및 USB 직렬 인터페이스가 포함됩니다.

공통 인터페이스 표준

  • RJ-45 인터페이스: 일반적으로 "크리스탈 헤드"로 알려진 가장 일반적인 네트워크 장치 인터페이스이며 기술 용어는 연선 이더넷 인터페이스 유형에 속하는 RJ-45 커넥터입니다.
  • SC 광섬유 인터페이스 : 이더넷 시대에도 사용되었으나 가격이 비싸 초기에는 인기가 없었다. 기가비트 네트워크의 발전으로 SC 광섬유 인터페이스가 다시 주목을 받았습니다.
  • AUI 인터페이스: 두꺼운 동축 케이블을 연결하는 데 특별히 사용됩니다. 초기 네트워크 카드의 일반적인 인터페이스이며 현재는 거의 사용되지 않습니다.
  • BNC 인터페이스: 얇은 동축 케이블에 연결하기 위해 특별히 설계된 인터페이스로, 현재는 스위치에서 덜 일반적으로 사용됩니다.

정리하자면, 네트워크 인터페이스는 컴퓨터와 네트워크 간의 통신을 위한 핵심 구성 요소로, 물리적 연결이나 무선 신호를 통해 컴퓨터와 네트워크 간의 데이터 전송 및 통신을 실현합니다. 다양한 유형의 네트워크 인터페이스는 다양한 시나리오와 애플리케이션에 적합하며 컴퓨터와 네트워크 간의 통신에 중요한 지원을 제공합니다.

인터뷰 질문들

Keepalive의 분할 브레인 문제를 해결하는 방법은 무엇입니까?