Linux LVS (Linux Virtual Server) 通用命令行详解

LVS是构建高性能、高可用性服务器集群的核心技术,以下是其通用命令行的全面解析:

图片[1]_Linux LVS (Linux Virtual Server) 通用命令行详解_知途无界

一、基础管理命令

1. 虚拟服务管理

# 添加TCP虚拟服务
ipvsadm -A -t 192.168.1.100:80 -s rr
# 添加UDP虚拟服务
ipvsadm -A -u 192.168.1.100:53 -s wrr
# 删除虚拟服务
ipvsadm -D -t 192.168.1.100:80
# 添加TCP虚拟服务
ipvsadm -A -t 192.168.1.100:80 -s rr

# 添加UDP虚拟服务
ipvsadm -A -u 192.168.1.100:53 -s wrr

# 删除虚拟服务
ipvsadm -D -t 192.168.1.100:80
# 添加TCP虚拟服务 ipvsadm -A -t 192.168.1.100:80 -s rr # 添加UDP虚拟服务 ipvsadm -A -u 192.168.1.100:53 -s wrr # 删除虚拟服务 ipvsadm -D -t 192.168.1.100:80

参数说明

  • -A:添加虚拟服务
  • -D:删除虚拟服务
  • -t:TCP服务
  • -u:UDP服务
  • -s:调度算法(rr=轮询, wrr=加权轮询, lc=最少连接等)

2. 真实服务器管理

# 添加真实服务器(-g表示DR模式,-m表示NAT模式)
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -m -w 2
# 修改真实服务器权重
ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.101:80 -g -w 3
# 删除真实服务器
ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.101:80
# 添加真实服务器(-g表示DR模式,-m表示NAT模式)
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -m -w 2

# 修改真实服务器权重
ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.101:80 -g -w 3

# 删除真实服务器
ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.101:80
# 添加真实服务器(-g表示DR模式,-m表示NAT模式) ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g -w 1 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -m -w 2 # 修改真实服务器权重 ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.101:80 -g -w 3 # 删除真实服务器 ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.101:80

二、查看与监控命令

1. 查看当前配置

# 查看所有虚拟服务和真实服务器
ipvsadm -Ln
# 带连接数的详细查看
ipvsadm -l --stats # 显示统计数据
ipvsadm -l --rate # 显示速率信息
ipvsadm -l --timeout # 显示超时设置
# 查看所有虚拟服务和真实服务器
ipvsadm -Ln

# 带连接数的详细查看
ipvsadm -l --stats      # 显示统计数据
ipvsadm -l --rate       # 显示速率信息
ipvsadm -l --timeout    # 显示超时设置
# 查看所有虚拟服务和真实服务器 ipvsadm -Ln # 带连接数的详细查看 ipvsadm -l --stats # 显示统计数据 ipvsadm -l --rate # 显示速率信息 ipvsadm -l --timeout # 显示超时设置

典型输出解析

Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.100:80 rr
-> 192.168.1.101:80 Route 1 5 32
-> 192.168.1.102:80 Route 2 3 28
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.100:80 rr
  -> 192.168.1.101:80             Route   1      5          32
  -> 192.168.1.102:80             Route   2      3          28
Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.1.100:80 rr -> 192.168.1.101:80 Route 1 5 32 -> 192.168.1.102:80 Route 2 3 28

2. 连接状态监控

# 实时监控连接状态
watch -n 1 ipvsadm -l --stats
# 查看持久化服务连接
ipvsadm -l --persistent-conn
# 实时监控连接状态
watch -n 1 ipvsadm -l --stats

# 查看持久化服务连接
ipvsadm -l --persistent-conn
# 实时监控连接状态 watch -n 1 ipvsadm -l --stats # 查看持久化服务连接 ipvsadm -l --persistent-conn

三、高级配置命令

1. 超时设置

# 设置TCP连接超时(秒)
ipvsadm --set 1800 60 300
# 设置TCP连接超时(秒)
ipvsadm --set 1800 60 300
# 设置TCP连接超时(秒) ipvsadm --set 1800 60 300

三个参数分别表示:

  • TCP会话超时
  • TCP FIN状态超时
  • UDP超时

2. 持久化服务配置

# 设置持久化服务(600秒)
ipvsadm -A -t 192.168.1.100:80 -s rr -p 600
# 带网络掩码的持久化
ipvsadm -A -t 192.168.1.100:80 -s rr -p 600 -M 255.255.255.0
# 设置持久化服务(600秒)
ipvsadm -A -t 192.168.1.100:80 -s rr -p 600

# 带网络掩码的持久化
ipvsadm -A -t 192.168.1.100:80 -s rr -p 600 -M 255.255.255.0
# 设置持久化服务(600秒) ipvsadm -A -t 192.168.1.100:80 -s rr -p 600 # 带网络掩码的持久化 ipvsadm -A -t 192.168.1.100:80 -s rr -p 600 -M 255.255.255.0

3. 调度算法配置

# 使用加权最少连接调度
ipvsadm -E -t 192.168.1.100:80 -s wlc
# 使用基于局部性的最小连接
ipvsadm -E -t 192.168.1.100:80 -s lblc
# 使用加权最少连接调度
ipvsadm -E -t 192.168.1.100:80 -s wlc

# 使用基于局部性的最小连接
ipvsadm -E -t 192.168.1.100:80 -s lblc
# 使用加权最少连接调度 ipvsadm -E -t 192.168.1.100:80 -s wlc # 使用基于局部性的最小连接 ipvsadm -E -t 192.168.1.100:80 -s lblc

四、调试与维护命令

1. 清空所有配置

ipvsadm -C
ipvsadm -C
ipvsadm -C

2. 保存与恢复配置

# 保存当前配置
ipvsadm-save > /etc/sysconfig/ipvsadm
# 恢复配置
ipvsadm-restore < /etc/sysconfig/ipvsadm
# 系统服务方式保存(某些发行版)
service ipvsadm save
# 保存当前配置
ipvsadm-save > /etc/sysconfig/ipvsadm

# 恢复配置
ipvsadm-restore < /etc/sysconfig/ipvsadm

# 系统服务方式保存(某些发行版)
service ipvsadm save
# 保存当前配置 ipvsadm-save > /etc/sysconfig/ipvsadm # 恢复配置 ipvsadm-restore < /etc/sysconfig/ipvsadm # 系统服务方式保存(某些发行版) service ipvsadm save

3. 内核参数调整

# 查看当前连接哈希表大小
cat /proc/sys/net/ipv4/vs/conn_tab_bits
# 临时调整哈希表大小(18表示2^18个条目)
echo 18 > /proc/sys/net/ipv4/vs/conn_tab_bits
# 查看当前连接哈希表大小
cat /proc/sys/net/ipv4/vs/conn_tab_bits

# 临时调整哈希表大小(18表示2^18个条目)
echo 18 > /proc/sys/net/ipv4/vs/conn_tab_bits
# 查看当前连接哈希表大小 cat /proc/sys/net/ipv4/vs/conn_tab_bits # 临时调整哈希表大小(18表示2^18个条目) echo 18 > /proc/sys/net/ipv4/vs/conn_tab_bits

五、工作模式详解

1. DR模式配置示例

# 在Director上
ipvsadm -A -t 192.168.1.100:80 -s wlc
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -g -w 2
# 在Real Server上(需配置loopback接口)
ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 up
# 在Director上
ipvsadm -A -t 192.168.1.100:80 -s wlc
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -g -w 2

# 在Real Server上(需配置loopback接口)
ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 up
# 在Director上 ipvsadm -A -t 192.168.1.100:80 -s wlc ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g -w 1 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -g -w 2 # 在Real Server上(需配置loopback接口) ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 up

2. NAT模式配置示例

# 开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 配置LVS
ipvsadm -A -t 192.168.1.100:80 -s rr
ipvsadm -a -t 192.168.1.100:80 -r 10.0.0.101:80 -m -w 1
ipvsadm -a -t 192.168.1.100:80 -r 10.0.0.102:80 -m -w 1
# 开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward

# 配置LVS
ipvsadm -A -t 192.168.1.100:80 -s rr
ipvsadm -a -t 192.168.1.100:80 -r 10.0.0.101:80 -m -w 1
ipvsadm -a -t 192.168.1.100:80 -r 10.0.0.102:80 -m -w 1
# 开启IP转发 echo 1 > /proc/sys/net/ipv4/ip_forward # 配置LVS ipvsadm -A -t 192.168.1.100:80 -s rr ipvsadm -a -t 192.168.1.100:80 -r 10.0.0.101:80 -m -w 1 ipvsadm -a -t 192.168.1.100:80 -r 10.0.0.102:80 -m -w 1

六、常见调度算法比较

算法命令缩写特点适用场景
轮询rr均等分配请求各服务器性能相近
加权轮询wrr按权重分配服务器性能不均
最少连接lc选择当前连接数最少的服务器长连接服务
加权最少连接wlc考虑权重的lc算法性能不均的长连接服务
基于局部性的最少连接lblc考虑局部性原理缓存服务器集群
带复制的基于局部性的最少连接lblcrlblc的改进版大型缓存集群

七、典型问题排查

1. 查看丢包统计

cat /proc/net/ip_vs_stats
cat /proc/net/ip_vs_stats
cat /proc/net/ip_vs_stats

2. 调试模式

# 开启调试日志
echo 1 > /proc/sys/net/ipv4/vs/debug_level
# 查看调试信息
dmesg | grep IPVS
# 开启调试日志
echo 1 > /proc/sys/net/ipv4/vs/debug_level

# 查看调试信息
dmesg | grep IPVS
# 开启调试日志 echo 1 > /proc/sys/net/ipv4/vs/debug_level # 查看调试信息 dmesg | grep IPVS

3. 连接跟踪检查

# 查看当前活动连接
cat /proc/net/ip_vs_conn
# 查看当前活动连接
cat /proc/net/ip_vs_conn
# 查看当前活动连接 cat /proc/net/ip_vs_conn

八、性能优化建议

  1. 调整哈希表大小
# 对于高并发场景(建议2^18到2^22)
echo 20 > /proc/sys/net/ipv4/vs/conn_tab_bits
   # 对于高并发场景(建议2^18到2^22)
   echo 20 > /proc/sys/net/ipv4/vs/conn_tab_bits
# 对于高并发场景(建议2^18到2^22) echo 20 > /proc/sys/net/ipv4/vs/conn_tab_bits
  1. 选择合适的工作模式
  • DR模式:性能最高,但要求同网络
  • NAT模式:配置简单,支持跨网络
  • TUN模式:适用于地理分布式集群
  1. 启用SYN Cookie防护
echo 1 > /proc/sys/net/ipv4/vs/syn_cookie
   echo 1 > /proc/sys/net/ipv4/vs/syn_cookie
echo 1 > /proc/sys/net/ipv4/vs/syn_cookie

通过掌握这些命令,您可以高效地配置和管理LVS集群,构建高性能的负载均衡解决方案。建议结合keepalived实现高可用性,并定期使用ipvsadm -Sn备份配置。

© 版权声明
THE END
喜欢就点个赞,支持一下吧!
点赞29 分享
It doesn't matter how slow you are, as long as you're determined to get there, you'll get there.
不管你有多慢,都不要紧,只要你有决心,你最终都会到达想去的地方
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容