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/를 방문하고 지속적으로 브라우저를 새로 고쳐 부하 분산 효과를 테스트합니다. 새로 고침 간격은 더 길어야합니다.