ipvsadm 是 IP Virtual Server (IPVS) 管理工具,通常用于 Linux 系统上配置和管理负载均衡服务。IPVS 是 Linux 内核中的一个模块,提供高效的负载均衡功能,通常用于构建高可用性和高性能的集群系统。

IPVS 的作用

IPVS 将请求分发到后端服务器上进行处理,帮助用户实现以下目标:

  1. 负载均衡:将客户端的请求均匀地分配到后端的多个服务器上。
  2. 高可用性:当某个后端服务器宕机时,IPVS 会自动将流量转发到健康的服务器上。
  3. 高性能:IPVS 通过内核层进行数据转发,能够提供非常高的性能。

ipvsadm 命令概述

ipvsadm 是 Linux 上用于配置和管理 IPVS 的命令行工具。它允许用户配置负载均衡的调度算法、后端服务器、虚拟服务器以及其他相关的设置。

常用命令

  1. 查看当前的 IPVS 配置ipvsadm -L 该命令显示当前的虚拟服务器配置,包括虚拟服务、调度算法、服务端口、后端服务器等信息。
  2. 添加虚拟服务器ipvsadm -A -t 192.168.0.100:80 -s rr 这个命令会在 192.168.0.100 的 80 端口上创建一个虚拟服务器,并使用轮询(rr,Round Robin)算法进行负载均衡。
    • -A:添加虚拟服务器。
    • -t:指定虚拟服务器的 IP 地址和端口。
    • -s:指定负载均衡算法,常用的有:
      • rr:Round Robin(轮询)
      • wrr:Weighted Round Robin(加权轮询)
      • lc:Least Connections(最少连接)
      • wlc:Weighted Least Connections(加权最少连接)
      • sh:Source Hashing(源地址哈希)
  3. 添加后端服务器ipvsadm -A -t 192.168.0.100:80 -s rr ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.101:80 -g ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.102:80 -g 这两条命令的作用是:
    • 在 192.168.0.100:80 上创建一个虚拟服务器。
    • 添加两个后端服务器(192.168.0.101:80 和 192.168.0.102:80)作为该虚拟服务器的处理节点。
    • -a:将后端服务器添加到虚拟服务器中。
    • -r:指定后端服务器的 IP 地址和端口。
    • -g:表示使用基于目标的 NAT(Network Address Translation)方式将流量转发给后端服务器。
  4. 删除虚拟服务器或后端服务器ipvsadm -D -t 192.168.0.100:80 ipvsadm -d -t 192.168.0.100:80 -r 192.168.0.101:80 这两条命令分别用于删除虚拟服务器和后端服务器。
    • -D:删除虚拟服务器。
    • -d:从虚拟服务器中删除后端服务器。
  5. 显示详细的 IPVS 配置ipvsadm -L -n -n 选项用于显示 IP 地址和端口号而不是主机名。
  6. 保存配置ipvsadm-save > /etc/sysconfig/ipvsadm ipvsadm-save 将当前配置保存到指定文件,通常在 Linux 系统中使用该文件来持久化 IPVS 配置。
  7. 恢复配置ipvsadm-restore < /etc/sysconfig/ipvsadm ipvsadm-restore 用于从指定的配置文件恢复 IPVS 配置。
  8. 清除所有配置ipvsadm -C 该命令会清除当前所有的 IPVS 配置,包括虚拟服务器和后端服务器。

负载均衡算法

在配置虚拟服务器时,ipvsadm 支持以下几种负载均衡算法:

  • Round Robin (rr):轮询,依次将流量分配给所有后端服务器。
  • Weighted Round Robin (wrr):加权轮询,可以根据服务器的负载或能力为每个服务器设置不同的权重。
  • Least Connections (lc):最少连接数,将流量转发给当前连接数最少的服务器。
  • Weighted Least Connections (wlc):加权最少连接数,与最少连接数类似,但允许为每个服务器设置权重。
  • Source Hashing (sh):基于源地址哈希,将来自同一源的流量始终转发到同一后端服务器。
  • Destination Hashing (dh):基于目标地址哈希,将流量转发到不同的后端服务器。

常见配置示例

示例 1:创建一个简单的负载均衡配置

# 创建虚拟服务器
ipvsadm -A -t 192.168.0.100:80 -s rr

# 添加后端服务器
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.101:80 -g
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.102:80 -g

示例 2:使用加权轮询算法

# 创建虚拟服务器
ipvsadm -A -t 192.168.0.100:80 -s wrr

# 添加后端服务器并设置权重
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.101:80 -g
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.102:80 -g
ipvsadm -e -t 192.168.0.100:80 -r 192.168.0.101:80 -w 3
ipvsadm -e -t 192.168.0.100:80 -r 192.168.0.102:80 -w 1

在这个例子中,我们使用加权轮询算法,并给后端服务器 192.168.0.101:80 设置了较高的权重。

总结

ipvsadm 是管理 IPVS 负载均衡的强大工具,它允许用户高效地配置和管理虚拟服务器和后端服务器,支持多种负载均衡算法和灵活的配置方式。通过正确配置 IPVS 和 ipvsadm,可以在 Linux 系统上实现高效的负载均衡解决方案,提升系统的可用性和性能。