LVS로드 밸런싱 클러스터의 실제 배치에 대한 자세한 설명 (이론과 실제 전투)

LVS로드 밸런싱 클러스터의 실제 배치에 대한 자세한 설명 (이론과 실제 전투)

1. 엔터프라이즈 클러스터 응용 프로그램 개요

(1) 클러스터의 의미

클러스터, 클러스터, 클러스터는
여러 호스트로 구성되지만 전체적으로 만 외부 적으로 만 구성됩니다.

(2), 문제

인터넷 응용 프로그램에서 사이트는 하드웨어 성능, 응답 속도, 서비스 안정성, 데이터 안정성 등에 대한 요구 사항이 점점 더 높아지기 때문에 단일 서버로는이를 수행 할 수 없습니다.

(3) 솔루션

값 비싼 미니 컴퓨터 및 메인 프레임
사용 일반 서버를 사용하여 서비스 클러스터 구축

둘째, 엔터프라이즈 클러스터 분류

(1) 클러스터의 목표 차이에 따라 세 가지 유형으로 나눌 수 있습니다.

부하 분산 클러스터
고 가용성 클러스터
고성능 컴퓨팅 클러스터

(2) 부하 분산 클러스터

애플리케이션 시스템의 응답 성을 개선하고, 가능한 한 많은 액세스 요청을 처리하고, 목표에 따라 대기 시간을 줄이고, 높은 동시성과 높은로드 (LB) 전체 성능을 확보
합니다. LB의로드 분산은 마스터 노드의 분산 알고리즘에 따라 다릅니다.

(3 개), 고 가용성 클러스터 (High Availability Cluster)

목표는 애플리케이션 시스템의 안정성을 높이고 중단 시간을 최대한 줄이고 서비스의 연속성을 보장하며 고 가용성 (HA)의 내결함성 효과를 달성하는 것입니다. HA
의 작업 모드에는 이중 모드와 마스터-슬레이브 모드가 포함됩니다.

(4) 고성능 컴퓨터 클러스터

목표는 응용 프로그램 시스템의 CPU 컴퓨팅 속도를 높이고 하드웨어 리소스 및 분석 기능을 확장하며 대형 및 슈퍼 컴퓨터에 해당하는 고성능 컴퓨팅 (HPC) 기능을 확보하는 것입니다.
고성능은 전용 하드웨어를 통한 "분산 컴퓨팅"및 "병렬 컴퓨팅"에 의존합니다 . 그리고이 소프트웨어는 여러 서버의 CPU, 메모리 및 기타 리소스를 통합하여 대형 및 슈퍼 컴퓨터에만있는 컴퓨팅 성능을 달성합니다.

세, 부하 분산 클러스터 아키텍처

(1) 부하 분산 구조

첫 번째 계층,로드 밸런서 (Load Balancer 또는 Director)
두 번째 계층, 서버 풀 (Server Pool)
세 번째 계층, 공유 스토리지 (Share Storage)

(2), 부하 분산 클러스터는 현재 기업에서 가장 많이 사용되는 클러스터 유형입니다.

(3) 클러스터로드 스케줄링 기술에는 세 가지 작업 모드가 있습니다.

주소 변환 (NAT 모드)
IP 터널 (TUN 모드)
직접 라우팅 (DR 모드)
여기에 사진 설명 삽입

1. NAT 모드

주소 변환 :

NAT 모드라고하는 네트워크 주소 변환.
방화벽의 사설 네트워크 구조와 유사하게로드 스케줄러는 모든 서버 노드의 게이트웨이, 즉 클라이언트의 액세스 입구 역할을하며 각 노드는 클라이언트의 액세스에 응답합니다.
서버 노드는 개인 IP 주소를 사용합니다 . 로드 스케줄러는 동일한 물리적 네트워크에 있으며 보안이 다른 두 가지 방법보다 우수합니다.

2. IP 터널

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

3. 직접 라우팅

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

네, LVS 가상 서버에 대해

(一) 、 Linux 가상 서버

Linux 커널 용로드 밸런싱 솔루션은
1998 년 5 월 중국의 Zhang Wensong 박사가 만들었습니다.
공식 웹 사이트 : http://www.linuxvirtualserver.org/

LVS에 대한 커널의 지원을 확인합니다.

modprobe ip_vs					#加载 ip_vs模块
cat /proc/net/ip_vs				#查看 ip_vs版本信息

(2), LVS로드 스케줄링 알고리즘

1. 라운드 로빈

수신 된 액세스 요청은 클러스터의 각 노드 (실제 서버)에 차례로 할당되며 서버의 실제 연결 수와 시스템 부하에 관계없이 각 서버가 동일하게 처리됩니다.

2. 가중 라운드 로빈

스케줄러에서 설정 한 가중치 값에 따라 요청을 분배합니다. 가중치 값이 높은 노드가 먼저 작업을받습니다. 할당 된 요청 수가
많을수록 더 많은 액세스 트래픽 을 처리 할 수있는 고성능 서버가 보장됩니다.

3. 최소 연결

실제 서버에서 설정 한 연결 수에 따라 할당하고 연결 수가 가장 적은 노드에 수신 된 액세스 요청의 우선 순위를 지정합니다.

4. 가중 최소 연결

서버 노드의 성능 차이가 클 경우 실제 서버에 맞게 가중치를 자동으로 조정할 수 있습니다
. 성능이 높은 노드는 더 많은 활성 연결 부하를 부담합니다.

다섯, ipvsadm 도구

(1) ipvsadm 도구 소개

2.4 버전부터 Linux 커널은 기본적으로 LVS를 지원합니다. LVS 기능을 사용하려면 LVS 관리 도구 ipvsadm 만 설치하면됩니다.

LVS의 구조는 주로 두 부분으로 나뉩니다.

  • 커널 공간에서 작동하는 IPVS 모듈. LVS의 기능은 실제로 IVPS 모듈에 의해 실현됩니다.
  • 사용자 공간에서 작동하는 ipvsadm 관리 도구. 그 기능은 구성된 가상 서비스와 실제 서비스를 IPVS 모듈로 전송하기위한 명령 인터페이스를 사용자에게 제공하는 것입니다.

(2), ipvsadm 도구 설치

ipvsadm工具支持yum安装

yum -y install ipvsadm
也可以编译源码安装,下载地址:

http://www.linuxvirtualserver.org/software/ipvs.html

(3) ipvsadm 도구 사용

ipvsadm工具常用的参数选项有:

-A:添加虚拟服务器
-D:删除整个虚拟服务器

-E :编辑虚拟服务

-C:清除所有的虚拟服务规则

-R:恢复虚拟服务规则

-s:指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc)
-a:表示添加真实服务器(节点服务器)
-d:删除某一个节点服务器

-e:编辑某个真实服务器

-t:指定 VIP地址及 TCP端口
-r:指定 RIP地址及 TCP端口
-m:表示使用 NAT群集模式
-g:表示使用 DR模式
-i:表示使用 TUN模式
-w:设置权重(权重为 0 时表示暂停节点)
-p 60:表示保持长连接60秒
-l:列表查看 LVS 虚拟服务器(默认为查看所有)
-n:以数字形式显示地址、端口等信息,常与“-l”选项组合使用。ipvsadm -ln

예:

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

2. 실제 서비스 관리

- 添加一个真实服务器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

3. 통계보기

- 查看当前配置的虚拟服务和各个RS的权重

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

  ipvsadm -lnc
- 查看ipvs模块的转发情况统计

  ipvsadm -Ln --stats | --rate

여섯, NAT 모드 LVS 부하 분산 클러스터 배포 시뮬레이션 실제 전투

1. 실험 환경

5 개의 Linux 가상 머신

负载调度器:内网关 ens33:192.168.126.10,外网关 ens36:12.0.0.1
Web节点服务器1:192.168.126.20
Web节点服务器2:192.168.126.30
NFS服务器:192.168.80.40
客户端:192.168.80.50

2. 실험 단계

1. 공유 스토리지 배포 (NFS 서버 : 192.168.126.40)

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install nfs-utils rpcbind -y
systemctl start nfs.service
systemctl start rpcbind.service
systemctl enable nfs.service
systemctl enable rpcbind.service
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benet

여기에 사진 설명 삽입

vim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.80.0/24(rw,sync)
/opt/benet 192.168.80.0/24(rw,sync)
--发布共享---
exportfs -rv

여기에 사진 설명 삽입

2. 노드 서버 (192.168.126.20, 192.168.126.30) 구성

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install httpd -y
systemctl start httpd.service
systemctl enable httpd.service
yum install nfs-utils rpcbind -y
showmount -e 192.168.80.13
systemctl start rpcbind
systemctl enable rpcbind

여기에 사진 설명 삽입
여기에 사진 설명 삽입
여기에 사진 설명 삽입

192.168.126.20

mount.nfs 192.168.126.40:/opt/kgc /var/www/html
echo 'this is kgc web!' > /var/www/html/index.html
vim /etc/fstab
192.168.126.40:/opt/kgc		/myshare	nfs defaults,_netdev	0  0 #永久挂载

192.168.126.30

mount.nfs 192.168.126.40:/opt/benet /var/www/html
echo 'this is benet web!' > /var/www/html/index.html
vim /etc/fstab
192.168.126.40/opt/benet		/myshare	nfs defaults,_netdev	0  0 #永久挂载

3.로드 스케줄러를 구성합니다 (내부 게이트웨이 ens33 : 192.168.126.10, 외부 게이트웨이 ens36 : 12.0.0.1).

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

여기에 사진 설명 삽입

(1) SNAT 전달 규칙 구성

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
echo '1' > /proc/sys/net/ipv4/ip_forward
sysctl -p
iptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.126.0/24 -o ens37 -j SNAT --to-source 12.0.0.1

여기에 사진 설명 삽입

(2) LVS 커널 모듈로드

modprobe ip_vs					#加载 ip_vs模块
cat /proc/net/ip_vs				#查看 ip_vs版本信息

(3) ipvsadm 관리 도구 설치

yum -y install ipvsadm

여기에 사진 설명 삽입

--启动服务前须保存负载分配策略---
ipvsadm-save > /etc/sysconfig/ipvsadm
或者 ipvsadm --save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service

여기에 사진 설명 삽입

(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.20:80 -m [-w 1]
ipvsadm -a -t 12.0.0.1:80 -r 192.168.126.30:80 -m [-w 1]
ipvsadm						#启用策略

ipvsadm -ln					#查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm						#保存策略

ipvsadm -d -t 12.0.0.1:80 -r 192.168.126.20:80 -m [-w 1]		#删除群集中某一节点服务器
ipvsadm -D -t 12.0.0.1:80									#删除整个虚拟服务器
systemctl stop ipvsadm										#停止服务(清除策略)
systemctl start ipvsadm										#启动服务(重建规则)、
ipvsadm-restore < /etc/sysconfig/ipvsadm					#恢复LVS 策略

여기에 사진 설명 삽입
여기에 사진 설명 삽입

4. 테스트 결과

IP가 12.0.0.12 인 클라이언트는 브라우저를 사용하여 http://12.0.0.1/를 방문하고 지속적으로 브라우저를 새로 고쳐 부하 분산 효과를 테스트합니다. 새로 고침 간격은 더 길어야합니다.

여기에 사진 설명 삽입
여기에 사진 설명 삽입
여기에 사진 설명 삽입

추천

출처blog.csdn.net/weixin_51573771/article/details/112840316