掌握云容器网络:何为ipvs
内容提要
本文介绍了IPVS的基础知识,包括调度算法和转发模式。调度算法有轮询、加权轮询、最小连接数、加权最小连接数和地址哈希。转发模式有DR模式、NAT模式和IP隧道模式。文章还介绍了IPVS的命令演示和环境准备。
延伸解读
IPVS与用户态负载均衡的取舍
IPVS作为Linux内核态4层负载均衡,性能强于Nginx、HAProxy等用户态软件,但仅能处理4层数据,无法解析SSL证书或修改HTTP请求头。因此,在需要7层功能的场景下,用户态软件仍是必要选择。理解这一差异有助于在架构中合理搭配使用。
调度算法选择:长连接与短连接的差异
最小连接数算法在长连接业务中能较好均衡负载,但在短连接场景下,由于连接迅速释放,可能导致请求总是调度到同一RS,造成负载不均。此时轮询或加权轮询可能更合适。选择算法需结合业务连接特性,而非盲目追求复杂算法。
转发模式对比:性能与网络约束
DR模式性能最高,但要求LB与RS同子网,且RS需在lo上绑定VIP并监听相同端口;NAT模式需修改请求和响应地址,要求RS网关指向LB,且客户端不能与RS同子网;IP隧道模式允许跨子网,但RS需支持隧道并配置VIP。三种模式性能依次降低,选择时需权衡网络拓扑与性能需求。
实验环境中的路由与SNAT细节
在VMware NAT模式下,客户端请求到达LB时源IP会被改为VMnet8网卡地址,因此RS需添加路由将响应包发回LB,以便LB执行SNAT将源地址改回VIP。这解释了为何实验步骤中需要配置特定路由,也提醒在实际部署中需注意网络地址转换对回包路径的影响。
Q&A
IPVS是什么?它和Nginx这类负载均衡软件有什么区别?
IPVS是工作在Linux内核态的4层负载均衡,功能与用户态的Nginx、HAProxy类似,作为客户端访问的统一入口,根据调度算法将请求转发给后端真实服务器。相比用户态负载均衡,IPVS性能更强,但仅工作在4层,无法处理7层数据(如SSL证书、修改HTTP请求头)。
IPVS常用的调度算法有哪些?各自适用什么场景?
IPVS常用调度算法包括:轮询(RR,均匀分发)、加权轮询(WRR,按权重分发)、最小连接数(LC,适合长连接)、加权最小连接数(WLC)、地址哈希(将客户端与RS关联)。其中LC在短连接场景下可能导致负载不均。
IPVS支持哪几种转发模式?性能排序如何?
IPVS支持三种转发模式:DR模式(直接路由)、NAT模式(网络地址转换)、IP隧道模式。性能从高到低依次为:DR > NAT > IP隧道。
DR模式的工作原理和主要特点是什么?
DR模式下,负载均衡器不改写请求包的IP和端口,仅将MAC地址改写为后端RS的MAC地址后转发;RS处理请求后响应直接回给客户端,不经过LB。特点:LB与RS须在同一子网;RS需在环回网卡绑定VIP;RS业务进程监听端口须与LB虚拟服务端口一致;RS与客户端网络须可达。
NAT模式转发时对数据包做了哪些修改?有什么配置要求?
NAT模式下,LB对请求包做目的地址转换(DNAT),将目的IP改为RS的IP;对响应包做源地址转换(SNAT),将源IP改为LB的VIP。配置要求:RS的默认网关须指向LB的虚拟服务IP;LB和RS须在同一子网,客户端不能与LB/RS同子网。
IP隧道模式有什么特点?对RS节点有什么要求?
IP隧道模式下,LB将原始请求报文封装在另一个IP报文中转发给RS,RS解封后处理请求,响应直接返回客户端。特点:LB和RS可不在同一子网;RS须支持隧道技术并在TUN网卡配置VIP;RS须能访问互联网。
如何使用ipvsadm命令添加一个虚拟服务并指定调度算法?
使用ipvsadm -A -t <VIP:端口> -s <调度算法> 添加虚拟服务,例如:ipvsadm -At 192.168.81.100:80 -s rr。然后使用ipvsadm -a -t <VIP:端口> -r <RS_IP:端口> -m 添加RS节点(-m表示NAT模式)。
配置IPVS负载均衡前需要做哪些环境准备?
环境准备包括:确保LB节点开启转发功能(net.ipv4.ip_forward=1)和conntrack(net.ipv4.vs.conntrack=1);安装ipvsadm命令;在LB网卡上添加VIP;配置RS节点并确保网络可达。