汽车配件外贸网站,wordpress下载整站源码,十款免费软件app下载入口,个人网站心得从零开始搭建 LVS 高性能集群 #xff08;DR模式#xff09;
架构 本设计方案采用三台服务器构建集群#xff0c;使用Linux Virtual Server (LVS) 作为负载均衡器#xff0c;运行在直接路由 (DR) 模式下。集群中的每一台服务器都将运行相同的服务#xff0c;以实现 高可用…从零开始搭建 LVS 高性能集群 DR模式
架构 本设计方案采用三台服务器构建集群使用Linux Virtual Server (LVS) 作为负载均衡器运行在直接路由 (DR) 模式下。集群中的每一台服务器都将运行相同的服务以实现 高可用性 和 可扩展性 。LVS 将作为前端节点接收所有进入的请求并将它们分发到后端服务器。
流程
配置三台服务器安装必要的操作系统和软件。
关闭防火墙: systemctl disable firewalld系统支持 lvs安装 ipvsadm
在一台服务器上安装并配置 LVS设置为直接路由模式。在另外两台服务器上部署相同的应用服务。配置 LVS 规则将流量分发到后端服务器。使用 ApacheBench (ab) 作为压测工具对集群进行性能测试。
各服务功能
LVS 节点作为集群的前端负载均衡器负责接收客户端请求并分发到后端服务器。后端服务器运行应用服务处理来自 LVS 的请求。ab 工具用于生成高并发请求测试集群的性能。
部署
在三台服务器上安装 Linux 操作系统并确保网络配置正确。
在 LVS 节点上安装 LVS 软件包。在后端服务器上部署应用服务并确保服务可以正常运行。配置 LVS 规则包括 虚拟IP 地址、后端服务器的IP地址和端口等。配置网络确保 LVS 节点和后端服务器之间可以正常通信。使用 ab 工具在客户端机器上对集群进行压力测试。
文件目录
.
├── director-dr.sh
├── director-nat.sh
├── director-tunl.sh
├── README.en.md
├── README.md
└── realsever-dr.shDirector 节点上运行director-dr.sh
#! /bin/bash
echo 1 /proc/sys/net/ipv4/ip_forwardipv/sbin/ipvsadmvip192.168.152.131rs1192.168.152.129
rs2192.168.152.133ifconfig ens33:0 down
ifconfig ens33:0 $vip broadcast $vip netmask 255.255.255.0 up
route add -host $vip dev ens33:0$ipv -C
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -w 1 -g
$ipv -a -t $vip:80 -r $rs2:80 -w 1 -g查看部署结果
# vip ens33:0 是否成功创建成功
[rootlocalhost lvs]# ip a
2: ens33: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:02:6a:99 brd ff:ff:ff:ff:ff:ffinet 192.168.152.128/24 brd 192.168.152.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet 192.168.152.131/24 brd 192.168.152.131 scope global secondary ens33:0 # vip 创建成功valid_lft forever preferred_lft foreverinet6 fe80::c4cc:bc59:19a3:dc4c/64 scope link noprefixroute valid_lft forever preferred_lft forever# 查看是否创建 lvs: dr 模式成功
[rootlocalhost lvs]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size4096)
Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.152.131:80 rr- 192.168.152.129:80 Route 1 0 0 - 192.168.152.133:80 Route 1 0 0 RealServer 上分别运行 realserver.sh
#!/bin/bash
vip192.168.152.131ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0echo 1 /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 /proc/sys/net/ipv4/conf/all/arp_announce查看部署结果
[rootmaster lvs]# ip a
1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet 192.168.152.131/32 brd 192.168.152.131 scope global lo:0 # vip 部署 lo:0 成功valid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever# docker创建nginx nginx:1.23.0-alpine 自带netstat 容器统计 负载数
[rootmaster lvs]# docker run --name nginx -d -p 80:80 nginx:1.23.0-alpine压测
使用 Jemter 或 ab 进行压力测试。
1. 监听Drector lvs负载
# 在 director 上执行
[rootlocalhost lvs]# watch ipvsadm -Ln
IP Virtual Server version 1.2.1 (size4096)
Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.152.131:80 rr- 192.168.152.129:80 Route 1 0 0 - 192.168.152.133:80 Route 1 0 0 2. ab模拟负载进行连接
# 非 lvs 集群的主机进行执行ab -n 50000 请求数 -c 20000 并发
ab -n 50000 -c 20000 http://192.168.152.131/3. 统计RealServer负载
# rs1 统计nginx的负载数
[rootmaster lvs]# docker exec -it openui-nginx netstat -nat|grep :80|wc -l
2# rs2 统计nginx的负载数
[rootmaster lvs]# docker exec -it openui-nginx netstat -nat|grep :80|wc -l
2压测结果
# Director
Every 2.0s: ipvsadm -Ln Fri Aug 16 02:06:02 2024IP Virtual Server version 1.2.1 (size4096)
Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.152.131:80 rr- 192.168.152.129:80 Route 1 10001 25000- 192.168.152.133:80 Route 1 9999 24992# RS 1
[rootmaster lvs]# docker exec -it openui-nginx netstat -nat|grep :80|wc -l
25002# RS 2
[rootmaster lvs]# docker exec -it openui-nginx netstat -nat|grep :80|wc -l
25002优劣势
优势
高可用性通过 LVS 实现的负载均衡可以提高系统的可用性。可扩展性可以轻松添加更多的后端服务器来扩展集群。性能LVS 的 DR 模式提供了高性能的负载均衡能力。成本效益使用开源软件减少了成本。
劣势
复杂性配置 LVS 和后端服务器可能相对复杂。单点故障LVS 节点作为单点如果出现故障可能会影响整个集群。资源消耗LVS 节点需要足够的资源来处理负载均衡任务。性能测试使用 ab 工具可以模拟大量并发请求帮助评估集群的性能。
监控和日志集成监控系统来监控集群状态并记录日志以便于问题排查。
通过综合考虑这些因素可以设计并实现一个高效、可靠且易于维护的基于 LVS 的集群系统。通过使用 DR 模式我们能够实现高性能的负载均衡同时通过 ab 工具进行性能测试确保系统满足预期的性能要求。
ISSUE Director 节点端口连接数不足 永久修改端口范围 net.ipv4.ip_local_port_range 1024 65535 windows 执行ab报错: 由于系统缓冲区空间不足或队列已满不能执行套接字上的操作 修改windows 端口范围
netsh int ipv4 set dynamicport tcp start5001 num60535 reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v TcpTimedWaitDelay /t REG_DWORD /d 30 /f项目地址
gitee
参考博客
Jmeter性能测试 linux如何查看系统端口范围 Linux添加虚拟网卡的多种方法 LVS原理详解以及部署 就是要你懂负载均衡–lvs和转发模式 connect failed error 10055 由于系统缓冲区空间不足