LVS로드 밸런싱 클러스터-LVS-NAT로드 밸런싱 클러스터의 이론적 상세 설명 및 구성 실제 전투


머리말

  • 다양한 인터넷 응용 프로그램에서 사이트는 하드웨어 성능, 응답 속도, 서비스 안정성, 데이터 안정성 등에 대한 요구 사항이 점점 더 높아 지므로 단일 서버가 모든 액세스 (즉,로드 균형 조정 및 고 가용성 요구 사항)를 처리 할 수 ​​없습니다.
  • 값 비싼 메인 프레임과 전용 부하 분산 장비를 사용하는 것 외에도 회사는 문제를 해결할 수있는 또 다른 옵션이 있습니다. 즉, 저렴한 일반 서버의 여러 쌍을 통합하여 동일한 주소로 동일한 외부 주소를 제공함으로써 클러스터 서버를 구축하는 것입니다. 서비스
  • 다음으로 기업에서 일반적으로 사용되는 클러스터 기술인 LVS (Linux Virtual Server, Linux Virtual Server)를 배웁니다.

1. LVS 클러스터 애플리케이션 기반

클러스터 (또는 클러스터)라는 이름은 그룹 또는 무리를 의미하는 영어 단어 "Cluster"에서 유래되었으며 서버 필드에서 사용되는 경우 단일 서버와 구별하기위한 많은 수의 서버의 기하학을 의미합니다.

1. 클러스터 기술 개요

  • 기업의 실제 환경에 따라 클러스터에서 제공하는 기능도 다르며 사용되는 기술적 세부 사항도 다를 수 있습니다.
  • 그러나 전체적으로 클러스터의 몇 가지 공통된 특성을 먼저 이해해야 클러스터를 구성하고 유지하는 작업을 인식하고 맹목적으로 서쪽으로 이동하는 것을 피할 수 있습니다.

1.1 클러스터 분류

  • 클러스터 유형에 관계없이 최소한 두 개의 노드 서버를 포함하며 외부 적으로는 전체적으로 나타나며 하나의 액세스 항목 (도메인 이름 또는 IP 시스템) 만 제공합니다.
  • 클러스터의 목표 차이에 따라 다음 세 가지 유형으로 나눌 수 있습니다.

1.1.1 부하 분산 클러스터

  • 애플리케이션 시스템의 응답 성을 개선하고, 가능한 한 많은 액세스 요청을 처리하고, 목표에 따라 지연 시간을 줄이고, 높은 동시성과 높은로드 (LB) 전체 성능을 확보합니다.
  • 예를 들어, "DNS 폴링", "애플리케이션 계층 전환"및 "역방향 프록시"는 모두로드 밸런싱 클러스터로 사용될 수 있습니다.
  • LB의 부하 분산은 마스터 노드의 오프 로딩 알고리즘에 의존하여 클라이언트의 액세스 요청을 여러 서버 노드로 공유하여 전체 시스템의 부하를 완화합니다.

1.1.2 고 가용성 클러스터

  • 애플리케이션 시스템의 안정성을 개선하고 중단 시간을 최대한 줄이고 서비스의 연속성을 보장하며 고 가용성 (HA) 내결함성 효과를 달성합니다.
  • 예를 들어 "장애 조치"및 "이중 시스템 상시 대기"는 모두 고 가용성 클러스터 기술입니다.
  • HA의 작동 모드에는 이중 모드와 마스터-슬레이브 모드가 포함됩니다. 이중은 모든 노드가 동시에 온라인 상태임을 의미하고 마스터-슬레이브는 마스터 노드 만 온라인 상태임을 의미하지만 장애가 발생하면 슬레이브 노드가 자동으로 마스터 노드로 전환 할 수 있음을 의미합니다.

1.1.3 고성능 컴퓨터 클러스터

  • 애플리케이션 시스템의 CPU 컴퓨팅 속도 향상, 하드웨어 리소스 및 분석 기능 확장, 대규모 슈퍼 컴퓨터에 해당하는 고성능 컴퓨팅 (HPC) 기능 확보를 목표로
  • 예를 들어, "클라우드 컴퓨팅"및 "그리드 컴퓨팅"도 고성능 컴퓨팅의 한 유형으로 간주 될 수 있습니다.
  • 고성능은 "분산 컴퓨팅"및 "병렬 컴퓨팅"에 의존합니다. 여러 서버의 CPU, 메모리 및 기타 리소스는 전용 하드웨어 및 소프트웨어를 통해 통합되어 대형 컴퓨터와 슈퍼 컴퓨터에만있는 컴퓨팅 기능을 구현합니다.

고 가용성로드 밸런싱 클러스터와 같이 필요한 경우 여러 유형의 클러스터를 결합 할 수 있습니다.

1.2 부하 분산의 계층 구조

  • 일반적인로드 밸런싱 클러스터에는 세 가지 수준의 구성 요소가 있으며 하나 이상의로드 스케줄러 (로드 밸런서 또는 디렉터)가 프런트 엔드에서 클라이언트의 액세스 요청에 응답하고 배포하는 역할을합니다.
  • 백엔드는 실제 애플리케이션 서비스를 제공하는 서버 풀 (Server Pool)을 형성하기 위해 다수의 실제 서버로 구성되며 서버 노드를 추가 및 삭제하여 전체 클러스터의 확장 성을 완성하며 이러한 프로세스는 클라이언트에게 투명합니다.
  • 서비스 일관성을 유지하기 위해 모든 노드는 공유 저장 장치를 균일하게 사용합니다.
    표

1.2.1 첫 번째 계층로드 스케줄러

  • 모든 서버가 외부에서 공유하는 VIP (가상 IP) 주소 (클러스터 IP 주소라고도 함)를 사용하여 전체 클러스터 시스템에 액세스 할 수있는 유일한 입구
  • 일반적으로 두 개의 스케줄러 (기본 및 백업 스케줄러)가 핫 백업을 수행하도록 구성됩니다. 기본 스케줄러가 실패하면 고 가용성을 보장하기 위해 백업 스케줄러로 원활하게 교체 할 수 있습니다.

1.2.2 2 계층 서버 풀

  • 클러스터에서 제공하는 애플리케이션 서비스 (예 : HTTP, FTP)는 서버 풀에서 담당합니다. 각 노드는 독립적 인 RIP 주소 (실제 IP)를 가지며 스케줄러가 배포 한 클라이언트 요청 만 처리합니다.
  • 노드가 일시적으로 실패하면로드 스케줄러의 내결함성 메커니즘이 노드를 분리하고 서버 풀에 다시 들어가기 전에 오류가 제거 될 때까지 기다립니다.

1.2.3 공유 스토리지의 세 번째 계층

  • 서버 풀의 모든 노드에 안정적이고 일관된 파일 액세스 서비스를 제공하여 전체 클러스터의 통합을 보장합니다.
  • 공유 스토리지는 NAS 장치 또는 NFS (네트워크 파일 시스템) 공유 서비스를 제공하는 전용 서버를 사용할 수 있습니다.

1.3 부하 분산의 작업 모드

  • 클러스터 부하 스케줄링 기술은 IP 기반의 부하 스케줄링이 가장 효율적인 IP, 포트, 콘텐츠 등을 기반으로 분산이 가능합니다.
  • IP 기반 부하 분산에는 주소 변환, IP 터널 및 직접 라우팅의 세 가지 일반적인 작업 모드가 있습니다.

1.3.1 네트워크 주소 변환

표

  • NAT 모드라고하며 방화벽의 사설망 구조와 유사하며,로드 스케쥴러는 모든 서버 노드의 게이트웨이, 즉 클라이언트의 액세스 입구 역할을하며 클라이언트에 대한 응답으로 각 노드의 액세스 출구 역할을합니다.
  • 서버 노드는 사설 IP 주소를 사용하며로드 스케줄러와 동일한 물리적 네트워크에 위치하므로 다른 두 방법보다 더 안전합니다.

1.3.2 IP 터널

표

  • TUN 모드라고하며 개방형 네트워크 구조를 채택하고 있으며로드 스케줄러는 클라이언트의 액세스 포털로만 사용되며 각 노드는로드 스케줄러를 거치지 않고 자체 인터넷 연결을 통해 클라이언트에 직접 응답합니다.
  • 서버 노드는 인터넷의 여러 위치에 흩어져 있고 독립적 인 공용 IP 주소를 가지며 전용 IP 터널을 통해로드 스케줄러와 통신합니다.

1.3.3 직접 라우팅

표

  • DR 모드라고하며 TUN 모드의 구조와 유사한 반 개방형 네트워크 구조를 채택하지만 노드가 어디에나 흩어져 있지 않고 스케줄러와 동일한 물리적 네트워크에 위치합니다.
  • 로드 스케줄러는 전용 IP 터널을 설정할 필요없이 로컬 네트워크를 통해 각 노드 서버에 연결됩니다.

위의 세 가지 작업 모드 중 NAT 모드는 하나의 공용 IP 주소 만 필요하므로 보안이 더 좋은 가장 많이 사용되는로드 균형 조정 모드라고하며 많은 하드웨어로드 균형 조정 장치가이 방법을 사용합니다. 즉, DR 모드와 TUN 모드의 부하 용량이 더 강력하고 사용 범위가 넓지 만 노드의 보안이 약간 나빠집니다.

2. LVS 가상 서버

  • Linux Virtual Server (LVS)는 Linux 커널 용으로 개발 된로드 밸런싱 솔루션으로 1998 년 5 월 중국의 Wensong Zhang 박사가 만들었습니다. 공식 웹 사이트는 http://www.linuxvirtualserver.org/에 있습니다.
  • LVS는 실제로 IP 주소를 기반으로 한 가상화 된 애플리케이션과 동일하며 IP 주소 및 콘텐츠 요청 배포를 기반으로로드 밸런싱을위한 효율적인 솔루션을 제안합니다.
  • LVS는 이제 Linux 커널의 일부가되었으며 기본적으로 ip_vs 모듈로 컴파일되었으며 필요할 때 자동으로 호출 될 수 있습니다.
  • CentOS 7 시스템에서 다음 작업을 수행하면 ip_vs 모듈을 수동으로로드하고 현재 시스템에서 ip_vs 모듈의 버전 정보를 볼 수 있습니다.
[root@localhost ~]# modprobe ip_vs          #加载 ip_vs 模块
[root@localhost ~]# cat /proc/net/ip_vs     #查看 ip_vs 版本信息
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

2.1 LVS로드 스케줄링 알고리즘

다양한 네트워크 서비스 및 구성 요구를 위해 LVS 스케줄러는 다양한로드 스케줄링 알고리즘을 제공하며, 그중 가장 일반적인 네 가지 알고리즘에는 라운드 로빈, 가중치 기반 라운드 로빈, 최소 연결 및 가중치 기반 최소 연결이 포함됩니다.

2.1.1 라운드 로빈 :

  • 수신 된 액세스 요청을 클러스터의 각 노드 (실제 서버)에 차례로 할당합니다.
  • 실제 서버 연결 수 및 시스템 부하에 관계없이 각 서버를 동일하게 취급

2.1.2 가중 라운드 로빈 :

  • 실제 서버의 처리 용량에 따라 수신 된 액세스 요청이 차례로 할당됩니다.
  • 스케줄러는 각 노드의 부하 상태를 자동으로 쿼리하고 동적으로 가중치를 조정할 수 있습니다.
  • 이를 통해 강력한 처리 기능을 갖춘 서버가 더 많은 액세스 트래픽을 처리 할 수 ​​있습니다.

2.1.3 최소 연결 :

  • 실제 서버에서 설정 한 연결 수에 따라 배포
  • 연결 수가 가장 적은 노드에 수신 된 액세스 요청의 우선 순위를 지정합니다.
  • 모든 서버 노드의 성능이 비슷한 경우이 방법을 사용하면로드 균형을 더 잘 조정할 수 있습니다.

2.1.4 가중 최소 연결

  • 서버 노드의 성능이 크게 다를 경우 실제 서버에 맞게 가중치를 자동으로 조정할 수 있음
  • 가중치가 더 높은 노드는 활성 연결 부하의 더 큰 비율을 지닙니다.

2.2 ipvsadm 관리 도구 사용

  • ipvsadm은로드 스케줄러에서 사용되는 LVS 클러스터 관리 도구입니다. ip_vs 모듈을 호출하여 서버 노드를 추가 및 삭제하고 클러스터의 실행 상태를 볼 수 있습니다.

2.2.1 설치

CentOS 7 시스템에서는이 패키지를 수동으로 설치해야합니다.

[root@localhost ~]# yum -y install ipvsadm
...
...
已安装:
  ipvsadm.x86_64 0:1.27-7.el7                                                                                 

完毕!


[root@localhost ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)

2.2.2 작동 방법

LVS 클러스터 관리에는 주로 가상 서버 생성, 서버 노드 추가, 클러스터 노드 상태보기, 서버 노드 삭제 및 부하 분산 전략 저장이 포함됩니다.

일반적인 옵션 기술
-ㅏ 가상 서버 추가
-디 전체 가상 서버 삭제
-에스 로드 스케줄링 알고리즘 지정 (폴링 : rr, 가중 라운드 로빈 : wrr, 최소 연결 : lc, 가중 최소 연결 : wlc)
-ㅏ 실제 서버 (노드 서버)를 추가하는 방법
-디 노드 삭제
-티 VIP 주소 및 TCP 포트 지정
-아르 자형 RIP 주소 및 TCP 포트 지정
-미디엄 NAT 클러스터 모드 사용을 나타냅니다.
-지 DR 모드 사용을 나타냅니다.
-나는 TUN 모드를 사용하는 방법
-w 가중치 설정 (가중치가 0이면 노드가 일시 중단됨)
-p 60 60 초 동안 긴 연결을 유지하는 것을 의미합니다.
-엘 LVS 가상 서버 나열 (기본값은 모두보기)
-엔 종종 "-l"옵션과 함께 사용되는 디지털 형식으로 주소, 포트 및 기타 정보를 표시합니다. ipvsadm -ln

2.2.3 예

  1. 가상 서비스 관리
#添加一个虚拟服务192.168.1.100:80,使用轮询算法
ipvsadm -A -t 192.168.1.100:80 -s rr


#修改虚拟服务的算法为加权轮询
ipvsadm -E -t 192.168.1.100:80 -s wrr


#删除虚拟服务
ipvsadm -D -t 192.168.1.100:80
  1. 실제 서비스 관리
#添加一个真实服务器192.168.1.123,使用DR模式,权重2
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.123 -g -w 2


#修改真实服务器的权重
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.123 -g -w 5


#删除真实服务器
ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.123
  1. 통계보기
#查看当前配置的虚拟服务和各个RS的权重
ipvsadm -Ln


#查看当前ipvs模块中记录的连接(可用于观察转发情况)
ipvsadm -lnc


#查看ipvs模块的转发情况统计

ipvsadm -Ln --stats | --rate

2. LVS-NAT로드 밸런싱 클러스터 구축

주소 변환 모드 (LVS-NAT)

1. 준비

1.1 개요

  • NAT 모드 클러스터에서 LVS로드 스케줄러는 모든 노드가 인터넷에 액세스하는 게이트웨이 서버이며 전체 클러스터의 VIP 주소 역할도합니다.
  • LVS 스케줄러에는 각각 내부 및 외부 네트워크에 연결된 두 개의 네트워크 카드가 있습니다.
    표
  • LVS로드 밸런싱 스케줄러의 경우 노드 서버가 인터넷에 액세스 할 수 있도록 iptables를 사용하여 아웃 바운드 응답에 대한 SNAT 전달 규칙을 구성해야합니다.
  • 모든 노드 서버와 공유 스토리지는 사설 네트워크에 있으며 기본 게이트웨이는 LVS로드 스케줄러의 내부 네트워크 주소로 설정됩니다.

1.2 환경

  • 이 실험에서는 5 개의 가상 머신이 배포되었습니다. 세부 정보는 다음과 같습니다.

클라이언트 (Win10) : 12.0.0.12
로드 스케줄러 (CentOS 7-1) : 내부 게이트웨이 ens33 : 192.168.126.11, 외부 게이트웨이 ens32 : 12.0.0.1
웹 노드 서버 1 (CentOS 7-2) : 192.168.126.12
웹 노드 서버 2 (CentOS 7-3) : 192.168.126.13
NFS 서버 (CentOS 7-4) : 192.168.126.14

호스트 : Windows 10 전문가 용 워크 스테이션 버전
VWware 16 Pro (16.1.0)
CentOS7
가상 머신 네트워크 어댑터는 모두 NAT 모드에 있으며
네트워크 카드 구성은 정적으로 확보됩니다.
로컬 YUM 소스웨어 하우스

2. NFS 공유 스토리지 배포

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

#安装nfs共享所需软件包及开启nfs功能
yum install nfs-utils rpcbind -y
systemctl start nfs.service
systemctl start rpcbind.service
systemctl enable nfs.service
systemctl enable rpcbind.service

#给予共享文件最大权限
mkdir /opt/xcf /opt/zxc
chmod 777 /opt/xcf /opt/zxc

#给共享文件输出内容,以作网站首页内容
cd /opt/xcf
echo 'Hello xcf' > index.html
cd /opt/zxc
echo 'Hello zxc' > index.html

vim /etc/exports
/usr/share *(ro,sync)
/opt/xcf 192.168.126.0/24(rw,sync)
/opt/zxc 192.168.126.0/24(rw,sync)


#发布共享
exportfs -rv
showmount -e

표

3. 노드 서버 구성

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum -y install httpd 
systemctl start httpd.service
systemctl enable httpd.service

yum -y install nfs-utils rpcbind
systemctl start rpcbind.service
systemctl enable rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service

showmount -e 192.168.126.14

mount 192.168.126.14:/opt/xcf /var/www/html
cd /var/www/html/
ls
cat index.html

vim /etc/fstab
192.168.126.14:/opt/xcf /var/www/html nfs defaults,_netdev 0 0

mount -a
  • 다른 노드 서버는 위와 동일하므로 두 개의 다른 공유 폴더를 구별하는 데주의하십시오.

4.로드 스케줄러 구성

systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0

#添加一块网卡后开机
ifconfig ens32 12.0.0.1/24

표

4.1 SNAT 전달 규칙 구성

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

sysctl -p

#先清空iptables规则
iptables -t nat -F
iptables -F

iptables -t nat -A POSTROUTING -s 192.168.126.0/24 -o ens32 -j SNAT --to-source 12.0.0.1

표
표

4.2 LVS 커널 모듈로드

#加载ip_vs模块
modprobe ip_vs

#查看ip_vs版本信息
cat /proc/net/ip_vs

표

4.3 ipvsadm 관리 도구 설치

yum install -y ipvsadm


#启动服务前须保存负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm
ipvsadm --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

표

4.4 부하 분산 전략 구성 (NAT 모드는 서버에서만 구성하면되고 노드 서버에는 특별한 구성이 필요하지 않음)

#清除原有策略
ipvsadm -C

ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.126.12:80 -m -w 1
ipvsadm -a -t 12.0.0.1:80 -r 192.168.126.13:80 -m -w 1

#启用策略
ipvsadm

#查看节点状态,Masq代表 NAT模式
ipvsadm -ln

#保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm

표

4.5 참고

로드 밸런싱을위한 두 개의 호스트. 게이트웨이가 스케줄러의 게이트웨이를 가리켜 야합니다.
표
표

4.6 보충

#删除群集中某一节点服务器
ipvsadm -d -t 12.0.0.1:80 -r 192.168.126.12:80 -m [-w 1]

#删除整个虚拟服务器
ipvsadm -D -t 12.0.0.1:80

#停止服务(清除策略)
systemctl stop ipvsadm

#启动服务(重建规则)
systemctl start ipvsadm

#恢复LVS 策略
ipvsadm-restore < /etc/sysconfig/ipvsadm

5. LVS 클러스터 테스트

  1. Win10을 열고 네트워크 어댑터를 수정하면 테스트 머신의 게이트웨이가 스케줄러의 게이트웨이를 가리켜 야합니다.
    표

  2. 브라우저를 열고 http : /12.0.0.1을 방문하면 실제 서버에서 제공하는 웹 페이지의 내용을 볼 수 있습니다. 각 노드의 웹 페이지가 다를 경우 클라이언트마다 표시되는 웹 페이지가 다를 수 있습니다 (여러 번 새로 고침해야합니다. , 간격은 잠시 기다려야합니다)
    표
    표

  3. LVS로드 스케줄러에서 노드 상태를 확인하여 현재로드 분포를 관찰 할 수 있으며, 폴링 알고리즘의 경우 각 노드에서 얻은 연결로드는 대략 동일해야합니다.
    표

추천

출처blog.csdn.net/weixin_51486343/article/details/112855219