背景:
k8s 目前使用LVS作为 service访问的转发规则 , 有时候服务访问有问题,我们可以查看具体node节点上的LVS转发规则,帮助排查问题。
使用:
我们使用ipvsadm 可以查看具体的LVS规则
ipvsadm工具常用的参数选项有:
-A --add-service添加一条新的虚拟服务
-E --edit-service编辑虚拟服务
-D --delete-service删除虚拟服务
-C --clear清除所有的虚拟服务规则
-R --restore恢复虚拟服务规则
-a --add-server在一个虚拟服务中添加一个新的真实服务器
-e --edit-server编辑某个真实服务器
-d --delete-server删除某个真实服务器
-L | -l --list显示内核中的虚拟服务规则
-n --numeric以数字形式显示IP端口
-c --connection显示ipvs中目前存在的连接,也可以用于分析调度情况
-Z --zero将转发消息的统计清零
-p --persistent配置持久化时间
--set tcp tcpfin udp配置三个超时时间(tcp/tcpfin/udp)
-t | -uTCP/UDP协议的虚拟服务
-g | -m | -iLVS模式为:DR | NAT | TUN
-w 配置真实服务器的权重
-s 配置负载均衡算法,如:rr, wrr, lc等
--timeout 显示配置的tcp/tcpfin/udp超时时间
--stats 显示历史转发消息统计(累加值)
--rate 显示转发速率信息(瞬时值)
常用的查看 规则
ipvsadm -ln
LVS相关 知识点
一、LVS的组成
LVS 由2部分程序组成,包括 ipvs 和 ipvsadm。
- ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。
- ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)
二、LVS相关术语
- DS:Director Server。指的是前端负载均衡器节点。
- RS:Real Server。后端真实的工作服务器。
- VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址。
- DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
- RIP:Real Server IP,后端服务器的IP地址。
- CIP:Client IP,访问客户端的IP地址。
下边是三种工作模式的原理和特点总结。
三、LVS调度算法
LVS调度算法
在内核中的连接调度算法上,IPVS已实现了以下八种调度算法:
轮叫调度(Round-Robin Scheduling)
加权轮叫调度(Weighted Round-Robin Scheduling)
最小连接调度(Least-Connection Scheduling)
加权最小连接调度(Weighted Least-Connection Scheduling)
基于局部性的最少链接(Locality-Based Least Connections Scheduling)
带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)
目标地址散列调度(Destination Hashing Scheduling)
源地址散列调度(Source Hashing Scheduling)
固定调度算法:rr,wrr,dh,sh
动态调度算法:wlc,lc,lblc,lblcr
一般应用场景 常用调度算法
一般的网络服务,如 http,mail,mysql 基本轮训、加权最小连接、加权轮训
防火墙集群 源地址散列调度SH和目标地址散列调度DH
web cache和DB cache 局部最小、带复制的局部最小