IPvs-sysctl

/proc/sys/net/ipv4/vs/* 变量:

am_droprate - 整数

默认值 10

它设置始终模式的丢包率,该丢包率在丢包率防御的模式 3 中使用。

amemthresh - 整数

默认值 1024

它设置可用内存阈值(以页为单位),该阈值在自动防御模式中使用。当没有足够的可用内存时,将启用相应的策略,并将变量自动设置为 2,否则将禁用该策略,并将变量设置为 1。

backup_only - 布尔值
  • 0 - 禁用(默认)

  • 非 0 - 启用

如果设置,则当服务器处于备份模式时禁用导向器功能,以避免 DR/TUN 方法的数据包循环。

conn_reuse_mode - 整数

1 - 默认

控制 ipvs 如何处理检测到的端口重用的连接。它是一个位图,其值如下:

0:禁用对端口重用的任何特殊处理。新的连接将传递给为先前连接提供服务的同一真实服务器。

位 1:在安全的情况下启用新连接的重新调度。也就是说,只要 expire_nodest_conn,对于 TCP 套接字,当连接处于 TIME_WAIT 状态时(只有在使用 NAT 模式时才有可能)。

位 2:它是位 1 加,对于 TCP 连接,当连接处于 FIN_WAIT 状态时,因为这是负载均衡器在直接路由模式下看到的最后一个状态。此位有助于向非常繁忙的集群添加新的真实服务器。

conntrack - 布尔值
  • 0 - 禁用(默认)

  • 非 0 - 启用

如果设置,则维护由 IPVS 处理的连接的连接跟踪条目。

如果 IPVS 处理的连接也要由有状态防火墙规则处理,则应启用此设置。也就是说,使用连接跟踪的 iptables 规则。否则,禁用此设置是一种性能优化。

无论此设置如何,由 IPVS FTP 应用程序模块处理的连接都将具有连接跟踪条目。

仅当 IPVS 使用 CONFIG_IP_VS_NFCT 启用编译时才可用。

cache_bypass - 布尔值
  • 0 - 禁用(默认)

  • 非 0 - 启用

如果启用,则当没有可用的缓存服务器且目标地址不是本地时(iph->daddr 是 RTN_UNICAST),将数据包直接转发到原始目标。它主要用于透明 Web 缓存集群。

debug_level - 整数
  • 0 - 传输错误消息(默认)

  • 1 - 非致命错误消息

  • 2 - 配置

  • 3 - 目标垃圾

  • 4 - 删除条目

  • 5 - 服务查找

  • 6 - 调度

  • 7 - 连接新建/过期、查找和同步

  • 8 - 状态转换

  • 9 - 绑定目标、模板检查和应用程序

  • 10 - IPVS 数据包传输

  • 11 - IPVS 数据包处理 (ip_vs_in/ip_vs_out)

  • 12 或更多 - 数据包遍历

仅当 IPVS 使用 CONFIG_IP_VS_DEBUG 启用编译时才可用。

较高的调试级别包括较低调试级别的消息,因此设置调试级别 2,包括级别 0、1 和 2 的消息。因此,日志记录级别越高,就越详细。

drop_entry - 整数
  • 0 - 禁用(默认)

drop_entry 防御是在连接哈希表中随机删除条目,只是为了为新连接回收一些内存。在当前代码中,drop_entry 过程可以每秒激活一次,然后它随机扫描整体的 1/32,并删除处于 SYN-RECV/SYNACK 状态的条目,这应该可以有效地防御 SYN 洪水攻击。

drop_entry 的有效值是 0 到 3,其中 0 表示此策略始终禁用,1 和 2 表示自动模式(当没有足够的可用内存时,将启用该策略,并且变量自动设置为 2,否则该策略将被禁用,并且变量设置为 1),3 表示该策略始终启用。

drop_packet - 整数
  • 0 - 禁用(默认)

drop_packet 防御旨在将数据包转发到真实服务器之前丢弃 1/rate 个数据包。如果速率为 1,则丢弃所有传入的数据包。

该值的定义与 drop_entry 的定义相同。在自动模式下,速率由以下公式确定:当可用内存小于可用内存阈值时,rate = amemthresh / (amemthresh - available_memory)。当设置模式 3 时,始终模式丢包率由 /proc/sys/net/ipv4/vs/am_droprate 控制。

est_cpulist - CPU 列表

允许用于估计 kthreads 的 CPU

语法:标准 cpulist 格式,空列表 - 停止 kthread 任务和估计,默认 - 系统用于 kthreads 的内务处理 CPU

示例:“all”:所有可能的 CPU,“0-N”:所有可能的 CPU,N 表示最后一个 CPU 编号,“0,1-N:1/2”:第一个 CPU 和所有奇数编号的 CPU,“”:空列表

est_nice - 整数

默认值 0 有效范围:-20(更优).. 19(较差)

用于估计 kthreads 的 niceness 值(调度优先级)

expire_nodest_conn - 布尔值
  • 0 - 禁用(默认)

  • 非 0 - 启用

默认值为 0,当其目标服务器不可用时,负载均衡器将静默丢弃数据包。当用户空间监视程序删除目标服务器(由于服务器过载或错误检测)并在稍后添加回服务器时,并且与服务器的连接可以继续时,这可能很有用。

如果启用此功能,则当数据包到达且其目标服务器不可用时,负载均衡器将立即使连接过期,然后将通知客户端程序连接已关闭。这等效于某些人要求的在其目标不可用时刷新连接的功能。

expire_quiescent_template - 布尔值
  • 0 - 禁用(默认)

  • 非 0 - 启用

当设置为非零值时,当目标服务器处于静止状态时,负载均衡器将使持久性模板过期。当用户通过将其权重设置为 0 来使目标服务器处于静止状态,并且希望将后续的(否则为持久的)连接发送到不同的目标服务器时,这可能很有用。默认情况下,允许新的持久连接连接到静止的目标服务器。

如果启用此功能,则如果将使用持久性模板来调度新连接,并且目标服务器处于静止状态,则负载均衡器将使该持久性模板过期。

ignore_tunneled - 布尔值
  • 0 - 禁用(默认)

  • 非 0 - 启用

如果设置,ipvs 将在所有无法识别协议的数据包上设置 ipvs_property。这可以防止我们路由隧道协议(如 ipip),这对于防止重新调度已隧道传输到 ipvs 主机的数据包非常有用(即,防止 ipvs 在 ipvs 也充当真实服务器时进行路由循环)。

nat_icmp_send - 布尔值
  • 0 - 禁用(默认)

  • 非 0 - 启用

当负载均衡器从真实服务器接收数据包但不存在连接条目时,它控制为 VS/NAT 发送 icmp 错误消息 (ICMP_DEST_UNREACH)。

pmtu_disc - 布尔值
  • 0 - 禁用

  • 非 0 - 启用(默认)

默认情况下,使用 FRAG_NEEDED 拒绝所有超过 PMTU 的 DF 数据包,而不管转发方法如何。对于 TUN 方法,可以禁用该标志以分片此类数据包。

secure_tcp - 整数
  • 0 - 禁用(默认)

secure_tcp 防御是使用更复杂的 TCP 状态转换表。对于 VS/NAT,它还会延迟进入 TCP ESTABLISHED 状态,直到完成三次握手。

该值的定义与 drop_entry 和 drop_packet 的定义相同。

sync_threshold - 由 2 个整数组成的向量:sync_threshold、sync_period

默认值 3 50

它设置同步阈值,这是连接在同步之前需要接收的最小传入数据包数。每次其传入数据包数模 sync_period 等于阈值时,都会同步连接。阈值的范围从 0 到 sync_period。

当 sync_period 和 sync_refresh_period 为 0 时,仅在状态更改时或仅当 pkts 与 sync_threshold 匹配时才发送同步

sync_refresh_period - 无符号整数

默认值 0

以秒为单位,报告的连接计时器中的差异,该差异触发新的同步消息。如果连接状态自上次同步以来没有更改,则可以使用它来避免在指定的时间段内(或如果连接超时时间较短,则为连接超时时间的一半)发送同步消息。

这对于具有高流量的普通连接很有用,可以降低同步速率。此外,以 sync_refresh_period/8 的周期重试同步 sync_retries 次。

sync_retries - 整数

默认值 0

定义以 sync_refresh_period/8 的周期进行同步重试。有助于防止同步消息丢失。sync_retries 的范围是 0 到 3。

sync_qlen_max - 无符号长整型

尚未发送的排队同步消息的硬限制。默认值为内存页面的 1/32,但实际上表示消息数量。当发送速率低于排队速率时,它将保护我们免于分配大量内存。

sync_sock_size - 整数

默认值 0

SNDBUF (主服务器) 或 RCVBUF (从服务器) 套接字限制的配置。默认值为 0(保留系统默认值)。

sync_ports - 整数

默认值 1

主服务器和备份服务器可以用于同步流量的线程数。每个线程将使用单个 UDP 端口,线程 0 将使用默认端口 8848,而最后一个线程将使用端口 8848+sync_ports-1。

snat_reroute - 布尔值
  • 0 - 禁用

  • 非 0 - 启用(默认)

如果启用,则重新计算来自真实服务器的 SNAT 数据包的路由,以便像从导向器发起的路由一样进行路由。否则,它们的路由方式与导向器转发的一样。

如果策略路由生效,则从导向器发出的数据包的路由可能与导向器转发的数据包的路由不同。

如果策略路由未生效,则重新计算的路由将始终与原始路由相同,因此禁用 snat_reroute 并避免重新计算是一种优化。

sync_persist_mode - 整数

默认值 0

控制在使用持久性时连接的同步

0:同步所有类型的连接

1:尝试根据连接类型减少同步流量。对于持久服务,避免同步普通连接,仅对持久性模板进行同步。在这种情况下,对于 TCP 和 SCTP,可能需要在备份服务器上启用 sloppy_tcp 和 sloppy_sctp 标志。对于非持久服务,不应用此优化,假设为模式 0。

sync_version - 整数

默认值 1

发送同步消息时使用的同步协议版本。

0 选择原始同步协议(版本 0)。 当向仅理解原始同步协议的旧系统发送同步消息时,应使用此选项。

1 选择当前同步协议(版本 1)。 应该尽可能使用此选项。

具有此 sync_version 条目的内核能够接收版本 1 和版本 2 的同步协议的消息。

run_estimation - 布尔值

0 - 禁用 非 0 - 启用 (默认)

如果禁用,估计将暂停,并且 kthread 任务将停止。

您始终可以将此值设置为 1 来重新启用估计。 但请注意,重新启用后的第一次估计并不准确。