目录
基本概念
一、核心概念与架构
LVS(Linux Virtual Server)是工作在四层的负载均衡技术,通过虚拟IP(VIP)将客户端请求分发到后端真实服务器群集,形成单一高性能虚拟服务入口。其架构包含:
负载调度器(Director):运行IPVS内核模块,负责流量分发
服务器池(Real Server):实际处理请求的节点集群
共享存储:保证后端服务器的数据一致性
二、核心作用与价值
高并发处理:通过轮询、加权轮询等算法(如wrr、lc)实现请求分流,单集群可支持数万并发连接
高可用保障:健康检查机制自动隔离故障节点,会话保持技术确保业务连续性
透明扩展:支持热添加服务器节点,客户端无感知扩容
成本优化:用廉价服务器构建高性能集群,替代高端专用设备
三、典型部署模式
NAT模式
调度器修改数据包目标/源地址,适合小规模集群
需配置DNAT/SNAT规则,存在单点瓶颈风险
DR模式(Direct Routing)
真实服务器直接响应客户端,调度器仅处理请求分发
要求服务器与调度器同网段,性能最优
TUN模式
通过IP隧道跨网络分发请求,适用于地理分布式集群
需要服务器支持隧道协议
负载调度算法
一、LVS内核级调度(四层)
动态算法实现原理
- WLC算法公式:
(active_conn*256 + inactive_conn)/weight
- 内核优化:通过红黑树管理连接数,查找复杂度O(log n)
- WLC算法公式:
DR模式特殊配置
# 真实服务器ARP抑制 echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
二、Nginx高级调度(七层)
一致性哈希优化
- 虚拟节点数建议:每个真实节点200-500个虚拟节点
- 内存占用:每万次请求约增加12MB内存
最少连接算法增强
upstream backend { least_conn; server 192.168.1.2 weight=5 active_conn_threshold=100; server 192.168.1.3 weight=3; }
三、云原生架构
K8s Service调度
- iptables模式:随机选择+会话保持
- IPVS模式:支持8种LVS原生算法
Istio高级策略
trafficPolicy: loadBalancer: localityLbSetting: enabled: true simple: LEAST_CONN
四、数据库中间件
MyCAT分片算法
- 范围分片:适用于时序数据
- 哈希取模:数据均匀但扩容困难
Redis Cluster重定向
- MOVED重定向:客户端缓存槽位映射
- ASK重定向:迁移过程中的特殊处理
IPVSADM管理工具
一、环境部署与安装
1. 依赖安装
- 内核要求:需确认Linux内核版本≥2.4,并启用
IPVS
模块 - 安装依赖包:包含开发工具和内核头文件
yum install -y openssl-devel popt-devel kernel-devel gcc make libnl3-devel
2. 安装方式
YUM安装(推荐):
yum install -y ipvsadm
源码编译(需自定义功能时使用):
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz tar zxf ipvsadm-1.26.tar.gz && cd ipvsadm-1.26 make && make install
二、基础使用命令
1. 虚拟服务管理
添加TCP虚拟服务(VIP: 192.168.1.100:80,调度算法为轮询)
ipvsadm -A -t 192.168.1.100:80 -s rr
修改调度算法(改为加权最小连接)
ipvsadm -E -t 192.168.1.100:80 -s wlc
2. 真实服务器管理
添加后端服务器(DR模式,权重为5)
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.2:80 -g -w 5
查看当前配置(带连接数统计)
ipvsadm -ln --stats
三、高级配置实践
1. DR模式优化
- ARP抑制配置(防止后端服务器响应VIP请求)
# 所有接口生效 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
2. 会话保持设置
- 持久化连接(保持客户端会话120秒)
ipvsadm -A -t 192.168.1.100:80 -s rr -p 120
四、维护与监控
1. 规则持久化
- 保存配置(防止重启丢失)
ipvsadm-save > /etc/sysconfig/ipvsadm systemctl enable ipvsadm
2. 性能监控
- 实时监控(每秒刷新连接状态)
watch -n1 "ipvsadm -ln --rate"
五、典型场景示例
1. Web集群配置
# 创建虚拟服务
ipvsadm -A -t 192.168.1.100:80 -s wlc
# 添加真实服务器
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.2:80 -g -w 3
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.3:80 -g -w 2
2. 动态权重调整
# 调整服务器权重(节点192.168.1.2权重设为10):ml-citation{ref="4,7" data="citationList"}
ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.2:80 -w 10
六、故障排查要点
连接不均衡
- 检查调度算法是否匹配场景需求(如WLC需考虑后端性能差异)
- 验证
weight
值配置是否合理
VIP不可达
- 确认DR模式下后端服务器的VIP绑定与ARP抑制生效
- 检查防火墙是否放行VIP对应端口
NFS共享存储服务
一、核心架构与原理
协议基础
- 基于RPC机制实现远程文件访问,通过TCP/UDP协议传输数据
- 典型组件包含
nfs-utils
(服务主程序)和rpcbind
(端口映射服务)
工作流程
graph TD A[客户端RPC请求] --> B[服务端111端口] B --> C[获取NFS端口] C --> D[建立数据连接]
二、服务端部署
安装依赖包
yum install -y nfs-utils rpcbind # CentOS/RHEL:ml-citation{ref="3,5" data="citationList"} apt-get install nfs-kernel-server rpcbind # Ubuntu/Debian:ml-citation{ref="8" data="citationList"}
创建共享目录并设置权限
mkdir -p /data/share chmod 777 /data/share # 根据实际需求调整权限:ml-citation{ref="3,6" data="citationList"}
配置共享规则(编辑
/etc/exports
)/data/share 192.168.1.0/24(rw,sync,no_root_squash) # 允许读写、同步写入、保留root权限:ml-citation{ref="3,5" data="citationList"}
启动服务
systemctl start rpcbind nfs-server # 必须按顺序启动:ml-citation{ref="4,5" data="citationList"} systemctl enable rpcbind nfs-server
验证共享
exportfs -v # 查看生效的共享规则:ml-citation{ref="5" data="citationList"} showmount -e localhost # 检查共享目录可见性:ml-citation{ref="5,6" data="citationList"}
三、客户端配置
安装客户端工具
yum install -y nfs-utils # CentOS/RHEL:ml-citation{ref="3" data="citationList"}
创建本地挂载点
mkdir /mnt/nfs_share
挂载远程目录
mount -t nfs 192.168.1.100:/data/share /mnt/nfs_share # 替换为服务端IP:ml-citation{ref="3,6" data="citationList"}
验证挂载
df -hT | grep nfs # 查看挂载状态:ml-citation{ref="6" data="citationList"} touch /mnt/nfs_share/test.txt # 测试写入权限:ml-citation{ref="5" data="citationList"}
四、高级配置(可选)
开机自动挂载
编辑/etc/fstab
添加:192.168.1.100:/data/share /mnt/nfs_share nfs defaults 0 0:ml-citation{ref="6" data="citationList"}
防火墙放行
firewall-cmd --add-service=nfs --permanent firewall-cmd --reload:ml-citation{ref="3,8" data="citationList"}
性能优化挂载
mount -t nfs -o noatime,nodiratime,rsize=32768,wsize=32768 192.168.1.100:/data/share /mnt/nfs_share:ml-citation{ref="6,8" data="citationList"}
五、故障排查命令
- 服务端端口检查:
rpcinfo -p
确认111/2049端口状态 - 连接测试:
telnet 192.168.1.100 2049
验证网络连通性 - 日志查看:
tail -f /var/log/messages
监控NFS错误信息